Можно прочитать много книг по базам данных, написать кучу приложений на аутсорс или для себя. Но при этом невозможно не наступить на грабли, при работе с действительно большими базами/таблицами особенно, когда downtime на большом проекте хочется свести к минимуму, а еще лучше совсем избежать. Вот здесь самые простые операции, как например изменение структуры таблицы может стать более сложной задачей. Наиболее интересные случаи, проблемы, грабли и их решения из личного опыта с которыми нам на проекте Pushwoosh пришлось столкнуться описаны под катом. В статье нет красивых картинок, зато есть много сухого текста.
elfiki @elfiki
Пользователь
Оптимизация веб-серверов для повышения пропускной способности и уменьшения задержки
31 min
44KTranslation
Привет! Меня зовут Макс Матюхин, я работаю в SRV-команде Badoo. Мы в Badoo не только активно пишем посты в свой блог, но и внимательно читаем блоги наших коллег из других компаний. Недавно ребята из Dropbox опубликовали шикарный пост о различных способах оптимизации серверных приложений: начиная с железа и заканчивая уровнем приложения. Его автор – Алексей Иванов – дал огромное количество советов и ссылок на дополнительные источники информации. К сожалению, у Dropbox нет блога на Хабре, поэтому я решил перевести этот пост для наших читателей.
+78
Индексы в PostgreSQL — 6
11 min
32KМы уже рассмотрели механизм индексирования PostgreSQL, интерфейс методов доступа и три метода: хеш-индекс, B-дерево и GiST. В этой части речь пойдет о SP-GiST.
SP-GiST
Вначале немного о названии. Слово «GiST» намекает на определенную схожесть с одноименным методом. Схожесть действительно есть: и тот, и другой — generalized search trees, обобщенные деревья поиска, предоставляющие каркас для построения разных методов доступа.
«SP» расшифровывается как space partitioning, разбиение пространства. В роли пространства часто выступает именно то, что мы и привыкли называть пространством — например, двумерная плоскость. Но, как мы увидим, имеется в виду любое пространство поиска, по сути произвольная область значений.
SP-GiST подходит для структур, в которых пространство рекурсивно разбивается на непересекающиеся области. В этот класс входят деревья квадрантов (quadtree), k-мерные деревья (k-D tree), префиксные деревья (trie).
+33
Индексы в PostgreSQL — 1
17 min
393KПредисловие
В этой серии статей речь пойдет об индексах в PostgreSQL.
Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.
За скобками обсуждения останутся вопросы разработки новых типов индексов. Это требует знания языка Си и относится скорее к компетенции системного программиста, а не прикладного разработчика. По этой же причине мы практически не будем рассматривать программные интерфейсы, а остановимся только на том, что имеет значение для использования уже готовых к употреблению индексов.
В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
+102
Вариант PHP кода для вывода строки в множественном числе
9 min
857Как обычно для интернационального проекта понадобилась функция для вывода слова в различных вариантах множественной формы.
Проект уже имеет собственный вариант загрузки языков, так что использование стандартного gettext привело бы к изменению большой части кода.
Так что была написана функция, которая для поддерживаемого набора из 27 языков реализовывала необходимый функционал.
Её код представлен ниже.
Проект уже имеет собственный вариант загрузки языков, так что использование стандартного gettext привело бы к изменению большой части кода.
Так что была написана функция, которая для поддерживаемого набора из 27 языков реализовывала необходимый функционал.
Её код представлен ниже.
-1
Сделай сам: любимые персонажи из бумаги
2 min
3.8KПривет всем Хабралюдям!
Сегодня я хочу поделиться с сообществом одним очень затягивающим и увлекательным способом убить свободное время и просто отвлечься.
Сегодня я хочу поделиться с сообществом одним очень затягивающим и увлекательным способом убить свободное время и просто отвлечься.
+181
Поиск — это просто
3 min
3.6KGoogle, конечно, ищет хорошо, но корпоративные ресурсы вывешивать на открытый доступ нельзя, покупать google-mini с его ограничениями тоже не вариант. А поиск по базе внушительных размеров(4 гигабайта текстов, по которым и необходим поиск) надо. А если добаить к поиску по тексту еще и поиск по каким-то параметрам, то тут и google-mini не поможет и совсем страшно становится.
Но не стоит паниковать! На помощь нам приходит Sphinx — поисковый движок с открытым исходным кодом, который можно прикрутить практически к чему угодно не прилагая особых усилий
Но не стоит паниковать! На помощь нам приходит Sphinx — поисковый движок с открытым исходным кодом, который можно прикрутить практически к чему угодно не прилагая особых усилий
+87
Определение расстояния между географическими точками в MySQL
3 min
67KПри разработке современного сайта часто возникает необходимость реализовать функционал вывода близлежащих географических точек. Самым оптимальным способом решения этой задачи является перекладывание работы по реализации определения точек на плечи MySQL. Если конкретней, то нам будут нужны возможности пространственных расширений MySQL (до версии 5.0.16 эти расширения были доступны только для MyISAM, более поздние версии MySQL поддерживают работу пространственных расширений с InnoDB, NDB, BDB и ARCHIVE).
Расстояние между точками будет вычисляться по формуле гаверсинусов. Формула позволяет получать расстояние между точками с очень низкой погрешностью (величина погрешности прямо пропорциональна расстоянию между точками, и не превышает 10-20 километров при вычислении очень больших расстояний, например между штаб-квартирой Google в Калифорнии (37.422045, -122.084347) и оперным театром в Сиднее, Австралия (-33.856553, 151.214696)).
Расстояние между точками будет вычисляться по формуле гаверсинусов. Формула позволяет получать расстояние между точками с очень низкой погрешностью (величина погрешности прямо пропорциональна расстоянию между точками, и не превышает 10-20 километров при вычислении очень больших расстояний, например между штаб-квартирой Google в Калифорнии (37.422045, -122.084347) и оперным театром в Сиднее, Австралия (-33.856553, 151.214696)).
+22
Подборка инструментов для фронт-энд разработки
2 min
134KTranslation
Как разработчику, мне очень нравятся инструменты, которые помогают сэкономить время или упростить процесс разработки фронт-энда. В этой статье я собрал мои любимые веб-инструменты для упрощения разработки веб-интерфейсов.
Картинки кликабельны.
Формы являются очень важной частью любого веб-сайта, но их верстка может занять продолжительное время. Этот очень удобный инструмент, поможет вам создать красивую веб-форму очень быстро.
Картинки кликабельны.
Form builder
Формы являются очень важной частью любого веб-сайта, но их верстка может занять продолжительное время. Этот очень удобный инструмент, поможет вам создать красивую веб-форму очень быстро.
+166
Грамотное определение языка пользователя
3 min
83KTutorial
Сейчас работаю над сайтом, который претендует на глобальность, естественно и с мультыязычностью у него должно быть все в порядке.
О том как отображать информацию на разных языках тут речи идти не будет. Разговор пойдет о том как определить язык пользователя, и выбрать из доступных на сайте языковых версий наиболее подходящую.
О том как отображать информацию на разных языках тут речи идти не будет. Разговор пойдет о том как определить язык пользователя, и выбрать из доступных на сайте языковых версий наиболее подходящую.
+4
Apple кодирует видео с помощью JPEG, JSON и <canvas>
2 min
68KФрагмент файла unlock_001.jpg
Компания Apple имеет огромный опыт в разработке веб-технологий, но сейчас попала в абсурдную ситуацию. Если зайти на страницу с описанием дизайнерских инноваций iPhone, то можно увидеть странное: видеоролик с анимацией разблокировки «айфона» закодирован с помощью нескольких JPEG-файлов необычного вида.
+95
Как правильно сортировать контент на основе оценок пользователей
5 min
91KTranslation
В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.
Постановка проблемы
Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».
Неправильное решение №1
Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)
+388
Юнит-тестирование в PHP
13 min
186KЯзык PHP очень легок для изучения. Это, а так же обилие литературы «Освой _что_угодно_ за 24 часа» породило большое количество, мягко говоря, некачественного кода. Как следствие, рано или поздно любой программист, который выходит за рамки создания гостевой книги или сайта-визитки сталкивается с вопросом: «а если я здесь немножко добавлю, все остальное не ляжет?» Дать ответ на этот вопрос и на многие другие может юнит-тестирование.
В самом начале хочется оговориться — здесь речь не будет идти о TDD и методологиях разработки ПО. В данной статье я попробую показать начинающему PHP-разработчику основы использования модульного тестирования на базе фреймворка PHPUnit
В самом начале хочется оговориться — здесь речь не будет идти о TDD и методологиях разработки ПО. В данной статье я попробую показать начинающему PHP-разработчику основы использования модульного тестирования на базе фреймворка PHPUnit
+83
Почему стоит пользоваться PDO для работы с базой данных
9 min
323KTranslation
Перевод статьи Why you Should be using PHP’s PDO for Database Access.
Множество PHP-разработчиков привыкли использовать для работы с базами данных расширения mysql и mysqli. Но с версии 5.1 в PHP существует более удобный способ — PHP Data Objects. Этот класс, сокращенно именуемый PDO, предоставляет методы для работы с объектами и prepared statements, которые заметно повысят вашу продуктивность!
Введение в PDO
«PDO – PHP Data Objects – это прослойка, которая предлагает универсальный способ работы с несколькими базами данных.»
Заботу об особенностях синтаксиса различных СУБД она оставляет разработчику, но делает процесс переключения между платформами гораздо менее болезненным. Нередко для этого требуется лишь изменить строку подключения к базе данных.
Эта статья написана для людей, которые пользуются mysql и mysqli, чтобы помочь им в переходе на более мощный и гибкий PDO.
+103
Работа с Vkontakte.ru API в iOS приложении
12 min
49KВ этой небольшой статье я хотел бы поделиться способами интеграции Вконтакте API в проект IOS.
По этой теме сейчас в интернете мало информации и возможно мои советы кому-то помогут. Я покажу как можно не только получить данные пользователя, но и разместить на стене фотографию, текст и ссылку, а так же случай с вводом капчи.
По этой теме сейчас в интернете мало информации и возможно мои советы кому-то помогут. Я покажу как можно не только получить данные пользователя, но и разместить на стене фотографию, текст и ссылку, а так же случай с вводом капчи.
+14
Веселые шрифты в своем приложении
2 min
5KИгровые приложения для детей и взрослых скучны без веселых букв и цифр.
Строгий iPhone кодекс не давал разработчику до версии iOS 3.2 стандартных способов использовать свои шрифты в приложениях.
Все спасались нарисованными в редакторе картинками цифр и букв или чужими библиотеками.
Как теперь обстоит дело с custom fonts для разработчиков iPhone поделок?
Осторожно! Под хабракатом 1 картинка, 1анекдот сомнение и 2 фрагмента кода.
Строгий iPhone кодекс не давал разработчику до версии iOS 3.2 стандартных способов использовать свои шрифты в приложениях.
Все спасались нарисованными в редакторе картинками цифр и букв или чужими библиотеками.
Как теперь обстоит дело с custom fonts для разработчиков iPhone поделок?
Осторожно! Под хабракатом 1 картинка, 1
+31
Objective-C с нуля
23 min
434KУ любого желающего писать программы для продукции фирмы Apple в жизни наступает такой момент, когда ему приходиться изучить новый язык программирования — Objective-C. Когда-то этот счастливый момент постиг и меня. А чтобы лучше запомнить основные особенности этого языка, решил законспектировать свои мысли во время осмысления его документации, которыми и делюсь с вами.
+147
VirtualBox 3.2: теперь можно запускать MacOS X в виртуальной машине. Под windows и linux
2 min
73KTutorial
Неожиданно тихо прошел релиз новой версии virtualbox, в котором впервые появилась возможность запускать в виртуальной машине MacOS X. Официально. С оригинального диска. Не хакинтош.
+168
Приложения iPhone с открытым кодом
4 min
31K В данной статье речь пойдет о приложениях с открытым кодом, которые размещены в App Store. Мы будем рассматривать только приложения которые одобрены компанией Apple и опубликованы. Начинающие разработчики могут изучать их код для повышения своих навыков.
+105
Основы репликации в MySQL
10 min
328KС репликацией серверов MySQL я познакомился относительно недавно, и по мере проведения разных опытов с настройкой, записывал, что у меня получалось. Когда материала набралось достаточно много, появилась идея написать эту статью. Я постарался собрать советы и решения по некоторым самым основным вопросам, с которыми я столкнулся. По ходу дела я буду давать ссылки на документацию и другие источники. Не могу претендовать на полноту описания, но надеюсь, что статья будет полезной.
+68
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity