@igamity

Помоготе выбрать БД

Добрый день!

Требуется совет по выбору системы хранения данных. Усходные данные: потенциально неограниченный массив числовых данных, например:

ID		VALUE
1		10.01
2		11.13
3		9.78
4		10.00
5		9.99
6		12.45
...		...

Требуется выбрать хранилище, которое позволяло бы выбирать данные по условиям их взаимных отношений, например, выбрать значения Xi, которые являются локальными максимами:
где Xi+1 < Xi > Xi-1.

Подобное условие самое простое, возможны и более сложные, но общее у них одно: требуется сравнивать текущее значение, с любым другим, в порядке увеличения индекса (или уменьшения). Т. е., например, есть некоторое значение Xi, требуется найти ближайшее по значению индекса значение Yj, такое что Yj > Xi, и j > i.
  • Вопрос задан
  • 2467 просмотров
Пригласить эксперта
Ответы на вопрос 8
Shedal
@Shedal
SELECT *
FROM myTable t1
JOIN myTable t2
    ON t1.Id < t2.Id
    AND t1.Value > t2.Value
WHERE t2.Id = 100
ORDER BY t1.Id DESC
LIMIT 1;

Это так, к слову :)
Если нужно сделать такую выборку для всех Id, то можно сделать подзапрос, или GROUP BY.
Ответ написан
@pomme
Похоже на биржевые котировки :)

Сложно советовать вслепую, не зная вида Ваших запросов, но Ваша структура называется «временные ряды» (time series). Список софта по работе с ними есть, например, здесь: ces.stat.ucla.edu/software/time-series-analysis. Вам же, думаю, не только искать по ним придется, но и преобразовывать — масштабировать, накладывать фильтры, убирать шумы и т.п.
Ответ написан
simplecode
@simplecode
считаю, что не принципиально… грамотное умение составлять SQL запросы рулит…
Ответ написан
taliban
@taliban
php программист
Для таких простых таблиц можете так же взглянуть на nosql решения. Возможно они себя лучше проявят при таких данных и условиях.
Ответ написан
VBart
@VBart
Для такой формализованной задачи, если нужны максимальные скорости можно и свой велосипед смастерить на том же Си, например, благо задача весьма простая.
Ответ написан
opium
@opium
Просто люблю качественно работать
Для таких задач куда правильнее будет хранить данные в памяти и скидывать их скажем на диск время от времени чтобы не потерять. Особых применений что sql, что nosql решений не вижу.
Ответ написан
Комментировать
donnerjack13589
@donnerjack13589
io.js core developer
Riak и вычислять все с помощью distributed MapReduce
Ответ написан
Комментировать
@Bonart
Oracle может подойти — там есть специальная поддержка для скользящих окон в синтаксисе и собственно движке запросов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы