Ускоренный курс / руководство по NoSql [закрыто]


100

Я видел, как NoSQL довольно часто всплывает на SO, и у меня есть четкое представление о том, почему вы должны его использовать (отсюда, Википедия и т. Д.). Это могло быть связано с отсутствием конкретного и единообразного определения того, что это такое (скорее парадигмы, чем конкретной реализации), но я изо всех сил пытаюсь понять, как я буду разрабатывать систему, которая будет ее использовать, или как Я бы внедрил это в свою систему. Я действительно застрял в реляционном мышлении БД, думая о вещах в терминах таблиц и объединений ...

В любом случае, знает ли кто-нибудь об ускоренном курсе / руководстве по системе, которая будет его использовать (своего рода «привет, мир» для системы на основе NoSQL), или учебнике, который использует существующее приложение «Hello World» на основе SQL и преобразует его в NoSQL (не обязательно в коде, а просто в виде высокоуровневого объяснения).


Мне очень понравилось это видео . Вебинар от 10Gen. В нем объясняется, как публиковать базовый контент и добавлять социальные взаимодействия (теги, комментарии, агрегирование данных) с помощью MongoDB.
Onema

Ответы:


45

Вот достойное слайд-шоу, представляющее MongoDB. Я думаю, что некоторые из больших различий заключаются в том, что большинство систем полагаются на Active Record или какую-то аналогичную абстракцию базы данных.

Также я нашел здесь замечательную бесплатную книгу orlys о Couch DB , что довольно круто.


53

В своей самой базовой форме NoSQL на самом деле не более чем способ хранения объектов с использованием какой-то системы пар ключ / значение. Я полагаю, вы уже используете это все время. Например. в javascript вы можете создать объект с именем foo, а затем сделать это foo['myobj'] = myobj;для хранения материала в объекте.

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

Итак, давайте сделаем это так ... в CouchDB вы используете map / reduce ... поэтому давайте создадим функцию карты, которая будет делать то же самое, что и небольшой код SQL:

SELECT * FROM users WHERE age > 10

В CouchDB вы предоставляете серверу функцию JavaScript, которая запускается для каждого элемента в базе данных ...

function (doc)
{
    if (doc.objType == "users") {
       if (doc.age > 10) {
           emit(doc._id, null)
       }
    }
}

Это все, что на самом деле нужно ... это становится намного сложнее на стороне сервера, поскольку сервер должен обрабатывать сбои и несколько ревизий одного и того же объекта, но это всего лишь пример.


10
Ваш пример кажется неэффективным в большой БД. Может ли сервер индексировать тип документа или быть умным в отношении ключей, которые он использует, и индексировать ключи? Подобными ключами могут быть user1, user2 и т. Д.
Джесс,


2

Веб-сайт mongoDB предоставляет отличное 10-шаговое руководство в форме онлайн-моделирования оболочки mongoDB. это займет 10 минут, и это действительно отличный способ начать работу с noSQL!

http://www.mongodb.org/ (нажмите «попробовать»)


1
просто чтобы добавить к этому, у них есть страница sql to mongo, которая помогает понять концепцию через код docs.mongodb.org/manual/reference/sql-comparison
Choco Smith

1

y_serial написан как единый модуль Python, который читается как рабочий учебник и включает множество советов и ссылок: http://yserial.sourceforge.net/

Здесь рассматривается вопрос о том, как сохранить произвольный объект Python (например, структуру данных словаря) способом «NoSQL» (не только SQL).





0

3
Этот сайт исчез, все 404-е ...
ScottN

1
Да, это все 404-е.
Дон 01001100
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.