Showing posts with label nosql. Show all posts
Showing posts with label nosql. Show all posts

April 14, 2010

Перенимаем NoSQL

Перевод Learning from NoSQL с Bruce Momjian: Postgres Blog

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

- Вы можете улучшить скорость за счёт откладывания или отказа от надежности (synchronous_commit, fsync)
- Вы можете убрать затраты на целостность не устанавливая ограничения (constraints)
- Можете использовать подготовленные (prepared) запросы для устранения затрат на парсера и оптимизатора
- Массивы часто могут быть использованы для ухода от затрат на join
- Можно хранить не структурированные данные в hstore
- Устаревшие данные можно обслуживать с помощью асинхронной мульти-мастер репликации (Bucardo)

Однако есть некоторые вещи, которые будет сложно осуществить:

- Доступ к данным без SQL
- Снижение затрат за счёт отказа от атомарности и изоляции

Я думаю о новых опциональных возможностях, которые мы могли бы предоставлять потенциальным NoSQL пользователям, но тут надо всё хорошо продумывать.

Дополнение: Один из пунктов в нашем TODO-листе, который может помочь потенциальным NoSQL пользователям, это реализация встроенного типа данных JSON. JSON используется в качестве формата хранилища во многих NoSQL базах.

Несколько слов о NoSQL

Перевод Settling for NoSQL с Bruce Momjian: Postgres Blog

В последнее время вокруг NoSQL баз данных довольно много шума, и, багодаря посещению конференции Emerging Technologies for the Enterprise Conference, я узнал о них больше. Я прослушал рассказ о Cassandra, и ещё один о MongoDB.

NoSQL базы имеют несколько отличий от реляционных:

- "голое" обращение к данным, другими словами отсутствие языка запросов (клиент делает большинство того, что обычно делается с помощью SQL)
- отсутствие join-ов (данные должны соединяться на стороне клиента)
- жертвуется ACID и транзакционные свойства ради скорости, отказоустойчивости, простоты добавления/выведения нод

Кого-то может смутить отсутствие этих значительных возможностей реляционных баз, но, если нужный вам отклик и требования к инфраструктуре не вписываются в рамки реляционных баз, и вы можете принять такие ограничения (думаю социальные медиа или поисковые движки), тогда NoSQL вполне имеет смысл.