Вопрос о нереляционных базах данных (NoSQL)

Хотя я еще не использовал ни одной из новых баз данных NoSQL, я попытался информировать меня путем чтения статей Wikipedia, блогов и заглядывания в часть документации DBS NoSQL.

Я имею просто (ре), читает выпуск в августе 2009 php|architect, конкретно статья о Базах данных Неотношения и нескольких вопросах открылась в моей голове, я понимаю, что статья довольно легка на предмете, но этого было достаточно для получения меня перепутанный...

CouchDB

Мой основной вопрос относительно CouchDB состоит в том почему такая шумиха?. Из того, что я понял, что CouchDB обеспечивает веб-сервис, который позволяет Вам создать базы данных и документы в базе данных, документы могут иметь несколько JSON-закодированных атрибутов и также иметь специальное предложение _id и _rev атрибут для отслеживания изменений документа.

Я действительно не получаю всю суету об этом, несколько лет назад для любимого проекта, я кодировал подобную (?) систему для того, чтобы хранить документы, и структура была чем-то вроде этого:

documents/
  document-name/
    (revision) timestamp/
      (contents) md5-hash.txt
        PHP Serialized Data

Я уверен, что пропускаю что-то очень фундаментальное, иначе (с точки зрения разработчика PHP) это обладало бы теми же преимуществами как CouchDB и было бы быстрее - никакая потребность закодировать и декодировать JSON.


Amazon SimpleDB

Теперь этот действительно получает мое главное вращение... Автор (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?

5
задан Alix Axel 12 April 2010 в 14:11
поделиться

1 ответ

суета вокруг nosql не работает индексированию, доступности и масштабируемости. индексирование - это то, что позволяет хранилищам, ориентированным на документы, НЕ открывать все документы, если вы хотите получить те, где have = 1. Доступность и масштабируемость позволяют этим системам легко масштабироваться и быть устойчивыми перед лицом ненадежного оборудования.

Erlang разработан для многопроцессорных систем и поэтому идеально подходит для распределенных систем.

3
ответ дан 15 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: