2012-05-14 1 views
1

Я ищу советы по организации информации временного ряда в базе данных. Моя текущая реализация - PostgreSQL с отдельной таблицей для всех символов. Медленное получение персонализированной информации, но очень простое добавление. На основании информации от Я хотел реплицировать структуру базы данных, создав отдельную таблицу на символ. Подумав об этом более тщательно, я понял, что это будет немного трудно для меня, чтобы запросить несколько символов на основании некоторых критериев, как:Данные о заказанных данных/данные фондового рынка с использованием структурных вариантов

SELECT * FROM "all_symbols" WHERE closePrice >= 50 

, так как я должен был бы объединить эти таблицы как-то для поиска (это может быть гораздо проще, чем я думаю). Я бы также увеличил количество таблиц на какую-то нереалистичную сумму из-за того, что я записываю статистический анализ (например, stddev) на символ за каждый таймфрейм в отдельной таблице.

Моя цель - иметь быструю и эффективную базу данных, где я могу читать и комбинировать данные любым возможным способом для анализа и исследований.

Почти забыл упомянуть, что я изучаю реализацию Open Source.

Заранее спасибо.

+0

Что вы пытались сделать, чтобы ваша оригинальная схема работала быстрее? У вас есть индексы по столбцам? При правильном дизайне базы данных вам не нужны отдельные таблицы для каждого символа. –

+0

То, как моя основная конструкция таблицы: '| дата | время | символ | rese', где дата/время/символ - первичный ключ. Насколько я знаю, pk в Postgres индексируется автоматически. – Timka

+0

Лучше ли это реализовать, предъявляя иск к документам, ориентированным на db, например MongoDB? – Timka

ответ

0

Посмотрите в этот проект на GitHub, это бесплатно с открытым исходным кодом базы данных рыночных данных на основе верхней части Microsoft SQL Server 2012:

http://github.com/kriasoft/market-data

0

Put индекс по closePrice, и использовать между вместо из >=:

SELECT * FROM all_symbols 
WHERE closePrice between 50 and <some large value> 

односторонних диапазоны, как правило, не используют индекс, но между должны использовать индекс.