Персональные инструменты
 

ADD-2011: Отчёт Виталия Филиппова/NoSQL-практикум

Материал из CustisWiki

Перейти к: навигация, поиск

Докладчик — с одной стороны, Капитан Очевидность, видимо не так давно открывший для себя базы данных. Создавайте индексы, смотрите планы запросов. O_o

Но зато рассказал про реализацию системы учёта показаний электросчётчиков на CouchDB — ещё одной NoSQL-базе. CouchDB — это не просто NoSQL-база данных, написанная на Erlang’е, она также содержит внутри себя сервер приложений, который может выполнять javascript, и благодаря этому оно простое и быстрое. Интерфейс к CouchDB — HTTP-запросы (методы GET, PUT, POST, DELETE). Правда, это вам не Mongo и масштабирование — не её сильная сторона — всё масштабирование сводится к мастер-мастер репликации. Но они и не масштабировались, по оценкам им надолго текущей архитектуры хватит.

Кратенько: там есть документы (просто хэш/словарь, какой термин кто больше любит), и дизайн-документы, которые представляют из себя какой-то код, который может, например, что-то агрегировать с помощью map-reduce (получится как бы «view»). Хранит всю историю изменений, вся БД в одном файле, который только растёт вперёд и его нужно время от времени перепаковывать — привет, ACID и MVCC (да, таки оно и есть), PostgreSQL и VACUUM. Есть индексы, правда, их заполнение происходит по требованию и поэтому если накапливается много обновлений — первый запрос будет подтормаживать. Это решается, по-видимому, просто регулярным дёрганьем view по расписанию. Ещё есть простой интерфейс типа «запросить все изменения с момента заданного sequence number», что позволяет легко делать всякие онлайн-обновляемые твиттеры-странички.

Прикольная штука, короче.