Как хранить котировки валют

192
31 декабря 2018, 08:10

Написал скрипт который парсит котировки валют со многих бирж, потом данные все нужно анализировать и выдавать некие результаты. Данный скрипт потом напишу но нужно как-то хранить огромные массивы данных, данные только числовые с плавающей точкой. Чтоб понять какой объём данных, наведу пример:

  1. Пар примерно 15 000. Каждую пару нужно хранить как минимум неделю, минутные данные, так как буду анализировать недельные данные.
  2. В идеале для статистики и исторических данных нужно хранить все время все данные.
  3. Если хранить недельные данные то получиться: 10 080 * 15 000 = 151 200 000.
  4. Если год то 525 948 * 15 000 = 7 889 220 000 строк.

Возник вопрос, где хранить данные недельные и как хранить данные за все время исторические. Выдержит ли недельные данные mysql, а исторические данные хранить в файлах json, и потом по надобности считывать, так как исторические данные буду юзать редко. А вот недельные данные будут довольно часто анализироваться скриптом, примерно раз в минуту.

Структура таблицы примерно такая:

  1. id
  2. id_market
  3. last_price
  4. market_volume
  5. base_volume
  6. datetime_edit
  7. datetime_add
Answer 1

Попробуйте обратить внимание на ClickHouse от Яндекса. Это столбцовая СУБД, заточенная под как раз аналитику. Очень шустрая и прекрасно документированная. Синтаксис там, насколько мне известно, SQL + собственные комнады.

Answer 2

MySQL совершенно не боится 8 млн. строк весь вопрос состоит в индексах и составных индексах. К примеру дату добавления можно разбить на колонки year как SMALLINT, month как TINYINT, day как TINYINT и сложить их в составные индексы (2,1)+(1) байт. Так-же неделю можно уложить в INT который с каждой неделей прибавляет +1 вот вам и сокращение данных для поиска... Устаревшие данные у которых неделя > например месяца можно просто нулить через (null) и NULL в индексации вовсе не учитывать - таким образом мы получаем относительно короткий индекс недель и.т.д.

Такая методика была проверена на биллинговой системе где происходит около 2к записей/обновлений в секунду.

Очень старые данные (Архив) можно откачивать отдельной задачей по крону раз в месяц и хранить их например в Mongo. Но следует заметить что Mongo хоть и является очень быстрой БД - но совершенно бесчеловечно относиться к дисковому пространству и жиреет прямо на глазах.

READ ALSO
не отрабатывает php (ubuntu) через браузер

не отрабатывает php (ubuntu) через браузер

Помогите настроить ubuntu php

219
Замена в строке при первом совпадении

Замена в строке при первом совпадении

Есть строка, например “sitecom/categori/categori-artickle-1”

192
301 редирект с регулярным выражением

301 редирект с регулярным выражением

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

181
Использование вебсокетов

Использование вебсокетов

Может кто-нибудь показать на конкретном примере, как использовать вебсокеты для выгрузки данных из БД и добавления этих данных в HTML структуру...

161