Кассандра или MySQL / PostgreSQL? - PullRequest
16 голосов
/ 27 марта 2010

У меня огромная база данных (вроде wordnet), и я хочу знать, проще ли использовать Cassandra вместо MySQL | PostrgreSQL

Всю свою жизнь я использовал MySQL и PostrgreSQL, и я мог легко думать в терминах реляционной алгебры, но несколько недель назад я узнал о Кассандре и о том, что она используется в Facebook и Twitter.

Это удобнее?

Какие СУБД обычно используются в настоящее время для хранения данных социальной сети, отношений между объектами, wordnet?

Ответы [ 5 ]

12 голосов
/ 02 августа 2015

Нет ничего лучше, чем решение Silver Bullet, все построено для решения конкретной проблемы и имеет свои плюсы и минусы. Вам решать, какое постановление проблемы у вас есть и какое решение лучше всего подходит для вашей проблемы. Используете ли вы Cassandra (NoSQL) или MySQL (RDBMS), все это зависит от требований вашей системы. Ниже приведены данные, которые помогут вам принять более правильное решение при выборе базы данных.

Зачем использовать NoSQL

В случае базы данных RDBMS сделать выбор довольно легко, потому что почти все базы данных, такие как MySQL, Oracle, MS SQL, PostgreSQL в этой категории, предлагают решения почти одинакового типа, ориентированные на свойство ACID. Когда дело доходит до NoSQL, решение становится трудным, потому что каждая база данных NoSQL предлагает свое решение, и вы должны понять, какая из них лучше всего подходит для вашего приложения / системы. Например, MongoDB подходит для случаев, когда ваша система требует хранилища документов без схемы. HBase может подойти для поисковых систем, анализирующих данные журналов, в любом месте, где требуется сканирование огромных двумерных таблиц без объединения. Redis создан для обеспечения поиска в памяти различных структур данных, таких как дерево, очередь, список ссылок и т. Д., И может хорошо подходить для создания таблицы лидеров в режиме реального времени, системы pub-sub. Аналогичным образом, есть другие базы данных в этой категории (в том числе Cassandra), которые подходят для различных задач. Теперь давайте перейдем к исходному вопросу и ответим на него один за другим.

Когда использовать Кассандру

Являясь частью семейства NoSQL, Cassandra предлагает решение для проблемы, когда ваше требование состоит в том, чтобы иметь очень тяжелую систему записи, и вы хотите иметь достаточно отзывчивую систему отчетов поверх этих хранимых данных. Рассмотрим вариант использования веб-аналитики, в котором данные журнала хранятся для каждого запроса, и вы хотите построить вокруг него аналитическую платформу для подсчета посещений по часам, по браузерам, по IP и т. Д. В режиме реального времени. Вы можете обратиться к сообщению в блоге (http://blogs.shephertz.com/2015/04/22/why-cassandra-excellent-choice-for-realtime-analytics-workload/), чтобы узнать больше о случаях использования Cassandra.

Когда использовать RDMS вместо Cassandra / NoSQL

Cassandra основана на базе данных NoSQL и не предоставляет ACID и свойство реляционных данных. Если у вас есть строгие требования к свойствам ACID (например, Финансовые данные), Cassandra не подойдет в этом случае. Очевидно, что вы можете сделать из этого работу, однако в конечном итоге вы напишете много кода приложения для обработки свойства ACID и вовремя потеряете для выхода на рынок. Также управление такой системой с помощью Cassandra будет для вас сложным и утомительным.

7 голосов
/ 27 марта 2010

Существует множество разновидностей баз данных "NoSQL". Если ваше приложение действительно похоже на Wordnet , возможно, вам следует взглянуть на графическую базу данных, например Neo4j .

7 голосов
/ 28 марта 2010

Я бы предложил проанализировать ваш запрос.

  1. Если вы собираетесь использовать больше кластеров, машины будут использовать NoSQL
  2. Если ваша модель данных сложна - требуются эффективные структуры, берите NoSQL (без ограничений по типу столбцов)
  3. Если вы умещаетесь в нескольких машинах без весов, и вам не нужна супер производительность для мультизапроса (как, например, в социальной сети - где много пользователей отправляют http-запрос), и вы не думаете, что хотите продавать. возьмите RDBMS (у Postgres есть несколько хороших функций и структур, которые вы можете использовать, например, тип столбца массива).

Кассандра должна работать лучше с большими объемами данных, многоцелевого назначения. neo4j - было бы лучше для специальных структур, графов.

4 голосов
/ 29 марта 2010

Cassandra и другие хранилища NoSQL используются для сайтов на основе социальных сетей из-за необходимости массовых операций записи. Не то чтобы MySQL и Postgres не могли этого добиться, но NoSQL, как правило, требует гораздо меньше времени и денег.

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

0 голосов
/ 27 марта 2010

Все разные продукты, и все они имеют свои плюсы и минусы. Какую проблему вам нужно решить?

Огромный, как при туберкулезе?

...