Хотя я еще не использовал ни одной из новых баз данных NoSQL, я попытался информировать меня путем чтения статей Wikipedia, блогов и заглядывания в часть документации DBS NoSQL.
Я имею просто (ре), читает выпуск в августе 2009 php|architect, конкретно статья о Базах данных Неотношения и нескольких вопросах открылась в моей голове, я понимаю, что статья довольно легка на предмете, но этого было достаточно для получения меня перепутанный...
Мой основной вопрос относительно CouchDB состоит в том почему такая шумиха?. Из того, что я понял, что CouchDB обеспечивает веб-сервис, который позволяет Вам создать базы данных и документы в базе данных, документы могут иметь несколько JSON-закодированных атрибутов и также иметь специальное предложение _id
и _rev
атрибут для отслеживания изменений документа.
Я действительно не получаю всю суету об этом, несколько лет назад для любимого проекта, я кодировал подобную (?) систему для того, чтобы хранить документы, и структура была чем-то вроде этого:
documents/
document-name/
(revision) timestamp/
(contents) md5-hash.txt
PHP Serialized Data
Я уверен, что пропускаю что-то очень фундаментальное, иначе (с точки зрения разработчика PHP) это обладало бы теми же преимуществами как CouchDB и было бы быстрее - никакая потребность закодировать и декодировать JSON.
Теперь этот действительно получает мое главное вращение... Автор (Russell Smith) дает следующий пример:
$sdb->putAttributes('phparch', 'may', array('title' => array('value' => 'May 2009'), 'have' => array('value' => false)));
$sdb->putAttributes('phparch', 'june', array('title' => array('value' => 'June 2009'), 'have' => array('value' => true)));
$sdb->putAttributes('phparch', 'july', array('title' => array('value' => 'July 2009'), 'have' => array('value' => true)));
Он затем говорит, что Amazon теперь поддерживает подобный SQL интерфейс и затем выполняет следующий запрос:
$sdb->select('phparch', 'SELECT * FROM phparch WHERE have = "1"');
Он не дает аналогичного примера того, как сделать тот запрос в CouchDB (он оставляет некоторые подсказки на Представлениях, и Отобразите/Уменьшите однако), но я предполагаю, что это также возможно, таким образом, мой вопрос: как делает Amazon (и CouchDB) делают это?
Мое первое предположение было бы то, что они открывают все документы (в возможном в распределенной среде) и затем применяют уменьшать операцию для фильтрации документов, атрибуты которых не соответствуют критериям поиска, но разве это не было бы чрезмерно дорого (ЦП и Диск ввод-вывод) даже в параллельных вычислениях?
Я знаю, что игнорирую некоторый важный материал как распределение, непротиворечивость и так далее, но я просто пытаюсь схватить очень простые внутренние работы устройств хранения данных NoSQL.
PS: Кроме того, кто-либо может объяснить меня, почему и CouchDB и Amazon SimpleDB создаются с Erlang?
суета вокруг nosql не работает индексированию, доступности и масштабируемости. индексирование - это то, что позволяет хранилищам, ориентированным на документы, НЕ открывать все документы, если вы хотите получить те, где have = 1. Доступность и масштабируемость позволяют этим системам легко масштабироваться и быть устойчивыми перед лицом ненадежного оборудования.
Erlang разработан для многопроцессорных систем и поэтому идеально подходит для распределенных систем.