Плавание в SQL Двойное в CLR (C#/VB). Существует таблица типов данных SQL с эквивалентами CLR на MSDN.
Похоже, что MongoDB очень хорошо подошел бы. Обновления и вставки происходят очень быстро, поэтому, возможно, вы захотите создать документ для каждого события, например:
{
object: XYZ,
ts : new Date()
}
Тогда вы сможете индексировать поле ts, и запросы также будут быстрыми. (Кстати, вы можете создать несколько индексов в одной базе данных.)
Как выполнить три ваших запроса:
получить все данные для объекта XYZ. между временем t1 и временем t2
db.data.find({object : XYZ, ts : {$gt : t1, $lt : t2}})
делать то же самое, но возвращать одну дату. очко в день (первое, последнее, закрытое до time t...)
// first
db.data.find({object : XYZ, ts : {$gt : new Date(/* start of day */)}}).sort({ts : 1}).limit(1)
// last
db.data.find({object : XYZ, ts : {$lt : new Date(/* end of day */)}}).sort({ts : -1}).limit(1)
Для ближайшего времени вам, вероятно, понадобится пользовательская JavaScript-функция, но это выполнимо.
получить все данные для всех объектов для конкретная временная метка
db.data.find({ts : timestamp})
Не стесняйтесь спрашивать в списке пользователей , если у вас есть вопросы, кто-нибудь другой мог бы придумать более легкий способ приближения к событиям.
.Вот почему существуют базы данных, специфичные для данных временных рядов - реляционные базы данных просто недостаточно быстры для больших временных рядов.
Я использовал Fame довольно неплохо. лот в инвестиционных банках. Это очень быстро, но я думаю, очень дорого. Однако, если вашему приложению требуется скорость, возможно, стоит его посмотреть.