2016-02-19 3 views
0

Я занимаюсь разработкой и внедрением слоя данных приложения. Сделал некоторые фундаментальные исследования и обнаружил, что NoSql, возможно, выглядит хорошо для меня из-за менее сложных структур и простоты.Решение между mongoDb vs Mysql vs hadoop

Мое требование будет заключаться в размещении одной таблицы с почти 800 000 записей, что мало что мне кажется, и даже самая бедная БД может справиться с этим легко.

Однако мои чтения будут относительно высокими. Близко к 200 000 в любой момент времени. Мой чтение запроса:

Читает: (200000 в любой момент)

Select Sum(columnA, columnB), Sum(columnC, columnD) from Table where 
(column E ='X' OR column F='Y' or column G='X' OR column H='Y') Group 
by columnK Having Count(*) =4 order by columnK 

Пишет: 30 строк Вставки в минуту (нет обновлений)

Учитывая это, я не нашел ни одной нормальной базы данных сделал бы . Но в моем случае каждая миллисекунда считается, что это финансовое приложение, и любое сокращение времени ответа было бы полезным. Каков наилучший подход?

+0

Если вам не нужно увеличивать масштаб, для вас не достаточно запуска RDBMS? – Havnar

+0

Спасибо, Хавнар. Скоро мне нужно будет раскрыть. Скорость и время отклика - это точно, что я могу сказать точно. Если один из вариантов сохранит мне даже 5 миллисекунд, чем другой, я бы пошел с этим. – Metaplace

+0

Номера выглядят немного странно для меня, описание тоже (финансовые данные имеют меньший спрос на скорость и высокий спрос на долговечность и, следовательно, чаще всего управляются сообщениями, чем нет), но будьте им. 800 тыс. Записей несвязанных данных? MMapped 2-мерная структура данных. Это то, что делает MongoDB. Имейте в виду, что только записи документов являются атомарными, что не является проблемой при правильном моделировании данных. –

ответ

0

Если вы хотите пройти маршрут NoSQL, если вы считаете, что это будет необходимо в вашем случае, я бы предложил посмотреть на Hbase, MongoDB и Cassandra в качестве потенциальных конкурентов.

Также известно, что они не поддерживают SQL из коробки. (для HBase вы могли бы использовать Phoenix как слой SQL поверх HBase, например)

NoSQL не работает так же, как и нормальный (My) SQL, поэтому вы можете прочитать внутреннюю работу прежде чем сделать выбор.

Проведите тщательное сравнение в POC и посмотрите, что лучше всего подходит для вашего использования.