Подтвердить что ты не робот

Как решить, какую технологию NoSQL использовать?

Каковы преимущества и недостатки MongoDB (на основе документов), HBase (на основе столбцов) и Neo4j (граф объектов)?

Мне особенно интересно узнать некоторые типичные варианты использования для каждого из них.

Каковы хорошие примеры проблем, которые графы могут решить лучше, чем альтернатива?

Может быть, достойная презентация в виде слайд-шоу или Scribd?

4b9b3361

Ответ 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

Ответ 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/