Библиотека сайта rus-linux.net
Фреймворк Zotonic
Глава 9 из книги "Производительность приложений с открытым исходным кодом".
Оригинал: Zotonic
Авторы: Arjan Scherpenisse и Marc Worrell
Перевод: Н.Ромоданов
Модель данных: база данных документов на языке SQL
Если рассматривать данные, то следует упомянуть, что все свойства «ресурса» (основной блок данных в Zotonic) сериализуются в двоичный blob; «настоящие» столбцы базы данных используются только для ключей, запросов и ограничений внешних ключей.
Для свойств или комбинации свойств, которые должны быть индексированы, например, столбцы, заполненные текстом, свойства - даты и т. д., добавляются отдельные поля «pivot» и таблицы.
Когда ресурс обновляется, триггер базы данных добавляет идентификатор ресурса в очередь pivot. Эта очередь pivot используется отдельным фоновым процессом Erlang, который в каждой отдельной транзакции в определенный момент времени индексирует группы ресурсов.
Взяться за дело нам позволил выбор языка SQL: в СУБД PostgreSQL есть хорошо известный язык запросов, эта СУБД обладает большой стабильностью, известной производительностью, имеет отличные инструментальные средства и поддерживается как на коммерческой, так и на некоммерческой основе.
Кроме всего прочего, база данных не является фактором, ограничивающим производительность в Zotonic. Если запрос становится узким местом, то задача разработчика - с помощью анализатора запросов базы данных оптимизировать этот конкретный запрос.
Наконец, золотое правило производительности для работы с любой базой данных: не помещать данные в базу данных, на на диск или в сеть, а хранить их в кэш-памяти.
Продолжение статьи: Бенчмарки, статистика и оптимизации.