Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Фреймворк Zotonic

Глава 9 из книги "Производительность приложений с открытым исходным кодом".

Оригинал: Zotonic
Авторы: Arjan Scherpenisse и Marc Worrell
Перевод: Н.Ромоданов

Модель данных: база данных документов на языке SQL

Если рассматривать данные, то следует упомянуть, что все свойства «ресурса» (основной блок данных в Zotonic) сериализуются в двоичный blob; «настоящие» столбцы базы данных используются только для ключей, запросов и ограничений внешних ключей.

Для свойств или комбинации свойств, которые должны быть индексированы, например, столбцы, заполненные текстом, свойства - даты и т. д., добавляются отдельные поля «pivot» и таблицы.

Когда ресурс обновляется, триггер базы данных добавляет идентификатор ресурса в очередь pivot. Эта очередь pivot используется отдельным фоновым процессом Erlang, который в каждой отдельной транзакции в определенный момент времени индексирует группы ресурсов.

Взяться за дело нам позволил выбор языка SQL: в СУБД PostgreSQL есть хорошо известный язык запросов, эта СУБД обладает большой стабильностью, известной производительностью, имеет отличные инструментальные средства и поддерживается как на коммерческой, так и на некоммерческой основе.

Кроме всего прочего, база данных не является фактором, ограничивающим производительность в Zotonic. Если запрос становится узким местом, то задача разработчика - с помощью анализатора запросов базы данных оптимизировать этот конкретный запрос.

Наконец, золотое правило производительности для работы с любой базой данных: не помещать данные в базу данных, на на диск или в сеть, а хранить их в кэш-памяти.


Продолжение статьи: Бенчмарки, статистика и оптимизации.