Търся база данни с времеви редове [затворено]

Има няколко SO въпроси относно време серия бази данни , но нито една, която да отговаря на конкретните ми притеснения, и въпреки че този е най-близо, той е на 3 години.

Изисквания:

  1. Множество набори от данни. Няма значение как са организирани (отделни таблици, бази данни, процеси, файлове и т.н.).
  2. Операция с единичен хост (поне първоначално), така че сме ограничени до приблизително 1TB диск и 10GB RAM.
  3. Закъснението при четене/производителността са ключовите показатели за ефективност.

Поведение на данните:

  1. Наборите от данни са само за добавяне и записите са неизменни.
  2. Всеки запис (независимо от набора от данни) трябва да има времево клеймо.
  3. Записите ще бъдат 32-битови или 64-битови цели числа в „прости“ набори от данни, докато по-„сложните“ набори от данни ще бъдат вектори от цели числа между 32-битови и 256-битови всеки, които не надвишават около 1 kb на запис.
  4. Ще има една основна „голяма“ таблица, съдържаща 200 милиона или повече записи от „сложен“ (вижте предишната точка) характер.
  5. Ще има много (10 ‹ N ‹ 100) малки (по-големи) набори от данни (както „прости“, така и „сложни“) с може би от порядъка на милиони записи всеки.

Списък с желания:

  1. Започвайки с един хост, ние наистина искаме да избегнем сложни зависимости "Big Data"-y за бекенда (като HBase), докато по-прости алтернативи ще бъдат разгледани. Това отнема напр. OpenTSBD от масата.
  2. Приятелски обвързвания на език от високо ниво. Ruby, Python, PHP и т.н., но можем да слезем до C, C++, Java и т.н., ако не можем да го избегнем.
  3. API за стрийминг/pubsub/в реално време е за предпочитане.
  4. Персонализирани заявки - ще имаме нужда от нещо повече от прости статистически средни/медиани/режим/std-dev операции и би било чудесно, ако можем да кодифицираме нашия анализ в „родни“ заявки/команди/структури, вместо да четем всички данни само за изчисляване на всичко в кода на приложението.

OpenTSBD е базиран на HBase, TempoDB няма да работи на база цена/производителност, Redis, Mongo, CouchDB и т.н. всички изглеждат така, сякаш ще се задавят от този обем данни и ние оставаме да се чудим дали не мечтаем. Поправете ме, ако подценявам някоя от споменатите системи (или техни съвременници). Съществува ли нещо подобно? Ако не, ще можем ли да свършим работата, като се подчиним на само едно от изброените изисквания или желания?


person Chris Tonkinson    schedule 19.12.2013    source източник
comment
Вижте erol.si/2015/01/ за общ преглед на всички налични бази данни с времеви редове   -  person koppor    schedule 12.06.2015


Отговори (3)


Написах неизменна база данни за данни от времеви серии в Python, използвайки hdf файлове като основа.

Всичко това вероятно не е супер бързо, но може да разберете идеята от този кодов фрагмент

   def write_series(self, group, name, series):
        assert (group in self.groups)

        if not name in self.series(group):
            self.__create_table(group, name)

        table_hdf = self.__group__(group, name)

        times = [row["time"] for row in table_hdf]

        if not times:
            add = series.index
        else:
            add = series.index[series.index > max(times)]

        if len(add) > 0:
            add = sorted(add)
            table_hdf.append([x for x in it.izip(add, series[add])])
            table_hdf.flush()

Всичко това вече се поддържа директно от кутията в Pandas. Моят код се намира тук:

https://github.com/tschm/pycta

Има и една интересна книжка, но все още не съм я чел

1?ie=UTF8&qid=1387485396&sr=8-1&keywords=Python+hdf" rel=" nofollow">http://www.amazon.co.uk/Python-HDF5-Andrew-Collette/dp/1449367836/ref=sr

   def write_series(self, group, name, series):
        assert (group in self.groups)

        if not name in self.series(group):
            self.__create_table(group, name)

        table_hdf = self.__group__(group, name)

        times = [row["time"] for row in table_hdf]

        if not times:
            add = series.index
        else:
            add = series.index[series.index > max(times)]

        if len(add) > 0:
            add = sorted(add)
            table_hdf.append([x for x in it.izip(add, series[add])])
            table_hdf.flush()
1?ie=UTF8&qid=1387485396&sr=8-1&keywords=Python+hdf

Приятно съхранение на данни Томас

person tschm    schedule 19.12.2013
comment
github.com/tschm/pycta е 404 - person koppor; 17.06.2015
comment
Съжалявам, изтрих това. Току-що създадох слабо копие на HDF store на pandas. - person tschm; 17.06.2015

Пробвал ли си SciDB? Предназначен е за обработка на мащабни научни данни. Освен това SciQL на MonetDB също твърди, че поддържа такава функция, но аз не съм използвал MonetDB.

Във вашия случай всичко, от което се нуждаете в SciDB, се нарича „обединяване на прозорци“, което позволява на плъзгащ се прозорец да се движи по времево измерение и да се изчисляват някои обобщени статистики за всяка моментна снимка на прозорец. Причините, поради които SciDB може да бъде привлекателна за вас, са следните:

  1. Много е лесно да инсталирате версия с един хост. Вече е инсталиран на EC2, ако не искате да имате проблеми с настройката.

  2. SciDB поддържа основно два интерфейса: AFL и AQL. Първият е функционален език, а вторият е език, подобен на SQL. И двете са на много високо ниво и декларативни. Освен това SciDB има и вариант SciDB-R, който поддържа R език.

  3. SciDB поддържа дефинирани от потребителя функции, така че можете да персонализирате вашите ad-hoc функции за агрегиране.

  4. SciDB е софтуер с отворен код, така че е напълно безплатен.

person SciPioneer    schedule 20.12.2013
comment
Между другото, разработих подобна паралелна програма за обработка на набори от данни HDF5. Написан е на C++ и работи по-бързо от SciDB, но за съжаление досега не се поддържа толерантност към грешки. - person SciPioneer; 20.12.2013

Списък с желания:

  1. проста настройка: проверете
  2. обвързвания на език от високо ниво: проверете (http://code.kx.com/wiki/Category:Interfaces)
  3. Поточно предаване/pubsub/в реално време: проверете
  4. Персонализирани заявки: проверете (език за заявки, подобен на SQL)

=> kdb+ от http://kx.com е това, което търсите.

person hellomichibye    schedule 26.09.2014