Выбор базы данных для биржевых данных [закрыто]
Мне интересно, является ли NoSQL вариантом для этого сценария:
Входными данными являются почасовые биржевые данные (sku, сумма, цена и некоторые более конкретные) из нескольких источников. Старые версии будут просто отброшены. Так что мы не получим больше 1 миллиона. наборы данных в ближайшем будущем, и не будет никаких запросов бизнес-аналитики, как в хранилищах данных. Но будут агрегации , по крайней мере для минимальной цены группы статей, которая должна обновляться, если статья с минимальной ценой группы распродается. В дополнение к этим массовым записям на регулярной основе будут иметь место единичные сокращения объема статьи, которые могут произойти в любое время.База данных будет частью сервиса, который должен давать быстрые ответы на запросы через REST. Поэтому должно быть какое-то кэширование. Нет необходимости в стойкой последовательности, но долговечность.
Далее список желаний:
- должен хорошо масштабироваться для растущего запроса нагрузка
- недорогие технологии с точки зрения денег и сложности (нет кластера Oracle)
- нет проприетарных языков (нет PL/SQL)
MongoDB с егоагрегационной структурой кажется многообещающим. Вы можете думать о alteratives? (Я не придерживаюсь NoSQL!)
2 ответа:
Я бы начал с Redis, и вот почему:
"должно быть какое-то кэширование" => и это то, в чем Redis лучше всего разбирается. Если по какой-либо причине вы решите, что вам нужно "больше", вы можете добавить" больше", но все равно сохраните все, что вы уже разработали в Redis, в качестве кэша для этого"больше"
Один редис-это быстро. Два редиса быстрее. Три редиса-это единица быстрее, чем два, и т. д..
Кривая обучения довольно плоская, и весело = > так как набор теория действительно забавна
Инкременты / Декременты / мин / макс-это родной язык редиса
Интеграция Redis с XYZ (вы упомянули о необходимости REST API) есть во всем google и github
Редис честен
MongoDB будет работать сначала , так же как и любой другой крупный NoSQL, но почему!?
Я бы пошел с редисом, и если вы решите позже, вы нужно "больше", я бы сначала посмотрел на " Redis + SQL db (Postgre / MySQL / etc..) ", это даст вам оба из двух миров = > "кэширование / скорость" и "мощность агрегации" в случае, если вам агрегации нужно будет идти выше и выше Min/Max/Incr/Decr.
Тот, кто говорит вам PostgreSQL "недостаточно быстр для написания ", не знает этого.
Тот, кто говорит вам, что MySQL " недостаточно масштабируема", не знает этого (например, Facebook работает на MySQL).Поскольку я уже нахожусь на ролл :) = > тот, кто говорит вам, что у MongoDB есть "наборы реплик и шардинг", не желает вам добра, так как наборы реплик и шардинг только выглядят сексуально из документов и шумихи. После того, как вам нужно будет пересортировать / переупорядочить наборы реплик, вы узнаете цену неправильного выбора ключа осколка и движений магического куска...
Снова = > Redis FTW!
Ну, мне кажется, что
MongoDB
- это лучший выбор.Он имеет не только функции агрегации, но и возможности map/reduce запросов для целей расчета статистики. Он может быть масштабирован через
replica sets
иsharding
, имеет атомарные обновления для инкрементов (декременты-это просто отрицательные инкременты).Альтернативы:
CouchDB
- недостаточно быстро читаетRedis
- это ключ / значение db. вам нужно будет запрограммировать статьи логики на приложение уровеньMySQL
- недостаточно масштабируемоPostgreSQL
- может быть хорошей альтернативой, если масштабируется с помощьюpgbouncer
, но недостаточно быстр при написании