Как решить, какую технологию NoSQL использовать?
Каковы преимущества и недостатки MongoDB (на основе документов), HBase (на основе столбцов) и Neo4j (граф объектов)?
Мне особенно интересно узнать некоторые типичные варианты использования для каждого из них.
Каковы хорошие примеры проблем, которые графы могут решить лучше, чем альтернатива?
Может быть, достойная презентация в виде слайд-шоу или Scribd?
Ответы
Ответ 1
MongoDB
Масштабируемость: высокая доступность и согласованность, но отстой в отношениях и много распределенных записей. Основным преимуществом является хранение и индексирование схемных документов. Размер документа ограничен 4 МБ, и индексирование имеет смысл только для ограниченной глубины. См. http://www.paperplanes.de/2010/2/25/notes_on_mongodb.html
Лучше всего подходит для: древовидных структур с ограниченной глубиной
Случаи использования: различные иерархии типов, биологическая систематика, каталоги библиотек
Neo4j
Масштабируемость: высокая доступность, но не распределенная. Мощная схема обхода для высокоскоростных обходов в пространстве node. Ограничено графиками вокруг нескольких миллиардов узлов/отношений. См. http://highscalability.com/neo4j-graph-database-kicks-buttox
Лучше всего подходит для: глубоких графов с неограниченной глубиной и циклическими взвешенными соединениями
Случаи использования: социальные сети, топологический анализ, семантические веб-данные, выведение
HBase
Масштабируемость: надежное, постоянное хранение в петабайтах и за его пределами. Поддерживает очень большое количество объектов с ограниченным набором разреженных атрибутов. Работает в тандеме с Hadoop для больших задач обработки данных. http://www.ibm.com/developerworks/opensource/library/os-hbase/index.html
Лучше всего подходит для: направленных, ациклических графов
Случаи использования: анализ журнала, семантические веб-данные, машинное обучение
Ответ 2
Я знаю, что это может показаться странным местом, чтобы указать на то, что Heroku недавно пошатнулась с предложениями noSQL и провела обзор всех текущих проектов. Это ни в коем случае не может быть нажатием Slideshare, но это поможет вам начать процесс сравнения:
http://blog.heroku.com/archives/2010/7/20/nosql/?utm_medium=email&utm_source=EmailBlast&utm_content=619506254&utm_campaign=HerokuSeptemberNewsletter-VersionB&utm_term=NoSQLHerokuandYou
Ответ 3
Осмотрите это, сравнив сравнение NoSQL dbs:
http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
Ответ 4
Вы также можете оценить СУБД Multi-Model, как второе поколение продукта NoSQL. С Multi-Model у вас нет всех компромиссов при выборе только одной модели, но более нескольких моделей.
Первая многомодельная NoSQL OrientDB.
Ответ 5
MongoDB:
MongoDB - это база данных документов, в отличие от реляционной базы данных. В документе хранятся полуструктурированные данные, такие как объект JSON (без схемы)
Основные возможности:
- Схема может изменяться по мере развития приложения
- Полная индексация
- Балансировка нагрузки и формирование данных
- Репликация данных
- Согласованность и разбиение на разделы в теории CAP (согласованность-доступность-разбиение)
Когда использовать:
- Аналитика в реальном времени
- Высокоскоростное протоколирование
- Управление полуструктурированными данными
Когда не использовать:
- Высокозатратные приложения с сильными свойствами ACID (Atomicity, Consistency, Isolation и Durability). СУРБД предпочтительнее в этом случае.
- Работа с наборами данных, связанных с отношениями - внешние ключи и т.д.
Hbase:
HBase - это база данных с открытым исходным кодом, нереляционная, распределенная база данных столбцов
Основные возможности:
- Он обеспечивает отказоустойчивый способ хранения больших количеств разреженных данных (небольшие объемы информации, попадающей в большую коллекцию пустых или несущественных данных, например, поиск 50 самых больших элементов в группе из 2 миллиардов записей или найти ненулевые элементы, составляющие менее 0,1% огромной коллекции)
- Поддерживает переменную схему, где каждая строка отличается.
- Может использоваться как вход и выход для задания MapReduce.
- Сжатие, операции с памятью и фильтры Bloom для каждого столбца (структура данных, предназначенная для быстрого и эффективного использования памяти, независимо от того, присутствует ли элемент в наборе)
5.Achieve CP на CAP
Когда использовать HBase:
- Если вы загружаете данные по ключу, просматриваете данные по ключу (или диапазону), обслуживая данные по ключу, запрашивая данные с помощью ключа
- Сохранение данных по строкам, которые не соответствуют схеме (переменной схеме)
Если не использовать HBase:
- Для реляционной аналитики
- Сканирование полной таблицы
- Данные для агрегирования, анализируемые строками вместо столбцов
Neo4j:
Neo4j - это графовая база данных с использованием модели данных свойств объекта (данные хранятся в виде графика и узлов и отношений со свойствами)
Основные возможности:
- Поддерживает все правила ACID (Atomicity, Consistency, Isolation and Durability)
- Поддержка индексов с помощью Apache Lucence
- Без схемы, дизайн модели данных снизу вверх
- Высокая масштабируемость была достигнута благодаря компактному хранению и кэшированию памяти, доступным для графиков
Когда использовать:
- Управление основными данными
- Сетевые и ИТ-операции.
- Рекомендации в режиме реального времени
- Обнаружение мошенничества
- Социальная сеть (например, facebook)
Когда не использовать:
- Массовые запросы/Сканирование
- Если вашему приложению требуется разделение и опечатка данных
Посмотрите на сравнение различных технологий NoSQL в этой статье
Источники:
Wiki, Скопировать слайд, Cloudera, Точка учебников, Neo4j
Ответ 6
Вот некоторые вещи, которые следует учитывать: объектная модель, вторичные индексы, масштабируемость записи, высокая доступность и т.д.
У меня есть сообщение в блоге, в котором объясняются стратегические различия высокого уровня между mongodb и cassandra здесь - https://scalegrid.io/blog/cassandra-vs-mongodb/
Ответ 7
Довольно приличная статья здесь о MongoDB и NoRM (расширения .net для MongoDB)
http://lukencode.com/2010/07/09/getting-started-with-mongodb-and-norm/