bizwood.ru работает на самописной key-value storage поверх реляционной модели.
Новый проект по ЖКХ будет тоже работать на key-value storage. Оно хоть и самописное, но имитирует небольшое подмножество синтаксиса команд Redis. Я так делаю потому что времени мало совсем, а применять Redis в полный рост я явно не готов – хоть там и очень впечатляющие результаты по производительности и убойной простоты синтаксис.
Я просто собираюсь подменить в какой-то момент самописный велосипедик на Редис.
Чтобы было понятно, что такое Редис – вот примерчег длиной в три страницы, как на связке php+Redis сделать клон твиттера с производительностью… да вот сами почитайте:
On a very slow and loaded server, apache benchmark with 100 parallel clients issuing 100000 requests measured the average pageview to take 5 milliseconds. This means you can serve millions of users every day with just a single Linux box, and this one was monkey asses slow! Go figure with more recent hardware.”
Это для меня не выглядит преувеличением. Я когда тестировал на скорость выборки даже свой самописный бизвуд, был просто потрясен, насколько key-value подход для каталога быстрее всех без исключения известных мне cms на реляционных базах.
Скажем, Битрикс всея Руси при запросе списка товаров генерит 15+ запросов к базе. осКоммерс 10+. Бизвуд никогда не генерит больше трёх, а как правило вообще 1 (один) запрос. Который чаще всего выбор по primary-key без всяких там джоинов.
Это при том, что там такой говнокод у меня, что просто закачаешься.
Так вот.
Я окончательно забил на реляционную модель сегодня. Потому что прочитал вот это (Амазон у меня в аццком авторитете):
Многим сервисам в Amazon требуется доступ к данным только по первичному ключу. Для многих сервисов (таких как списки популярных товаров, корзина покупателя, пользовательские настройки, управление сессиями, рейтинги, каталог товаров) обычные паттерны использования реляционных БД неэффективны, ухудшают масштабируемость и снижают доступность. В соответствии с требованиями этих приложений, Dynamo предоставляет доступ к данным только по первичному ключу.”
Ну я двумя руками за. Если от key-value storage так прётся Амазон, то меня вообще от радости должно разорвать )
UPD. Тут мне примерчик в голову пришёл. Вот, скажем, на бизвуде иногда надо проверять права доступа (1 случай из 30 примерно на сейчас). Таблица прав у меня вчерне организована как два столбика в SQL-таблице, один из которых – ключ, а второй – права.
Весь цимес в том, как сформирован ключ. Он представляет из себя конкат двух хэшей – то есть, если надо проверить права субъекта c хэшем a1wwvxr8 на объект с хэшем s8ewkopb, я просто выбираю из базы права по ключу a1wwvxr8s8ewkopb. За раз легко выбрать несколько ключей сразу для каскадной проверки доступа – это получается очень, очень быстро.