есть набор данных с около 6 миллионами записей. Каждая запись имеет одинаковое количество полей. Есть 8 полей итого:Лучшее решение SQL NoSQL для определенных требований?
ID Title Color Date1 Date2 Date3 Date4...
Там должен быть способ, чтобы отфильтровать эти записи по названию и всех полей даты (или, «колонн» в терминах реляционных СУБД).
Размер данных не такой огромный, около нескольких гигабайт. У нас нет длинных текстовых полей и т. Д. (Мы избавились от них во время создания архитектуры, поэтому теперь у нас есть только действительно важные поля в наборе данных).
Бэкэнд читает &, пишет данные довольно интенсивно. Нам бы очень хотелось ускорить как чтение, так и запись (и фильтрацию по полям) как можно больше. В настоящее время мы используем Postgres, и нам нравится его надежность, но, похоже, это не очень быстро. Да, мы сделали некоторую настройку и оптимизацию, добавили индексы, установили ее на 32 ГБ оперативной памяти и установили все необходимые настройки. Другими словами, он работает, но я по-прежнему считаю, что это может быть лучше. Нам нужна скорость: фильтрация записей по датам и названиям должна быть быстрой, очень быстрой. Вставка данных может быть медленнее. Бэкэнд фильтрует все записи, которые не обрабатывались, обрабатывали его и устанавливали флаг даты (времени datetime, когда он был обработан). Каждые 5-10 секунд выполняются около 50 бэкэнд-рабочих, поэтому БД должна быть в состоянии выполнять очень быстро. Кроме того, мы выполняем некоторые итерации DB (вид карты \ сокращение заданий), поэтому решение БД должно быть в состоянии выполнить такие задачи (СУБД здесь не очень хорошо).
У нас нет объединений, данные уже оптимизированы для решения больших объемов данных. Только один «большой стол».
И мы хотели бы запустить его на одном узле или во многих небольших экземплярах. Данные не очень важны. Но мы хотели бы избежать дорогостоящих решений, поэтому мы ищем решение SQL или NoSQL, которое будет работать быстрее, чем Postgres на том же дешевом оборудовании.
Помню, я пробовал MongoDB около года или два назад. Из того, что я помню, фильтрация была не такой быстрой. Кассандра была лучше, но я помню, что она могла выполнять только малые подмножества фильтрующих запросов. Riak хорош, но только для большого кластера с множеством машин. Это мой самый базовый опыт, если вы, ребята, знаете, что одно из этих решений отлично работает, напишите об этом. Или предложите другое решение.
Спасибо!
«Размер данных не такой огромный, около нескольких гигабайт». - Это крошечный для Postgres. Он может (и делает) обрабатывать базы данных в тысячу раз больше без каких-либо проблем с производительностью. Придерживайтесь того, что вы в настоящее время используете; просто научитесь использовать его лучше. –