Мои данные
В первую очередь это данные мониторинга, передаваемые в форме отметки времени: значение для каждого отслеживаемого значения на каждом отслеживаемом устройстве. Он регулярно собирается по разным устройствам и по множеству отслеживаемых значений.
Кроме того, у него есть необычная особенность, заключающаяся в том, что многие из этих значений данных извлекаются из источника, а вычисления время от времени меняются. Это означает, что мои данные эффективно версируются, и мне нужно иметь возможность просто вызывать только данные из самой последней версии расчета. Примечание. Это не версионирование, при котором старые значения перезаписываются. У меня просто есть временные отметки, после которых данные меняют свое значение.
Мое использование
В дальнейшем у меня будут различные варианты использования неопределенных данных / машинного обучения для данных. Пока не совсем ясно, каково это использование, но ясно, что я буду писать весь последующий код на Python. Кроме того, у нас очень маленький магазин, поэтому я действительно могу справиться только с такой большой сложностью в настройке, обслуживании и взаимодействии с нижележащими приложениями. У нас просто не так много людей.
Выбор
Мне не разрешено использовать СУБД SQL для хранения этих данных, поэтому мне нужно найти правильное решение NoSQL. Вот что я нашел на данный момент:
- Cassandra
- Looks totally fine to me, but it seems like some of the major users have moved on. It makes me wonder if it's just not going to be that much of a vibrant ecosystem. This SE post seems to have good things to say: Cassandra time series data
- Accumulo
- Again, this seems fine, but I'm concerned that this is not a major, actively developed platform. It seems like this would leave me a bit starved for tools and documentation.
- MongoDB
- I have a, perhaps irrational, intense dislike for the Mongo crowd, and I'm looking for any reason to discard this as a solution. It seems to me like the data model of Mongo is all wrong for things with such a static, regular structure. My data even comes in (and has to stay in) order. That said, everybody and their mother seems to love this thing, so I'm really trying to evaluate its applicability. See this and many other SE posts: What NoSQL DB to use for sparse Time Series like data?
- HBase
- This is where I'm currently leaning. It seems like the successor to Cassandra with a totally usable approach for my problem. That said, it is a big piece of technology, and I'm concerned about really knowing what it is I'm signing up for, if I choose it.
- OpenTSDB
- This is basically a time-series specific database, built on top of HBase. Perfect, right? I don't know. I'm trying to figure out what another layer of abstraction buys me.
Мои критерии
- Открытый источник
- Хорошо работает с Python
- Подходит для небольшой команды
- Очень хорошо задокументировано
- Имеет специальные функции для использования упорядоченных данных временных рядов
- Помогает мне решить некоторые из моих проблем с версионными данными
Итак, какая база данных NoSQL действительно может помочь мне удовлетворить мои потребности? Это может быть что угодно, из моего списка или нет. Я просто пытаюсь понять, на какой платформе на самом деле есть код, а не только шаблоны использования, которые поддерживают мои сверхконкретные, хорошо понятые потребности. Я не спрашиваю, какой из них лучше, а какой круче. Я пытаюсь понять, какая технология может наиболее естественно хранить и обрабатывать этот тип данных.
Есть предположения?