Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
Всем привет. Собственно сабж. планируется таблица с количество записей более 10 миллиардов, приблизительной структуры: Поле1 - user_id - int(11) - key Поле2 - shop_id - int(3) - key Поле3 - start_day - datetime Поле4 - end_day - datetime Поле5 - start_price - decimal Поле6 - end_price - decimal Поле7 - id - bigint - unique Данные будут вставляться периодично, раз в минуту. При запросе данные будет идти поиск по полям Поле1, Поле2, Поле1+Поле2. Ориентировная нагрузка при select 1300-1500 в минуту. Несколько вопрос: 1. Насколько правильно использовать для описанной задачи MySQL (а точнее MariaDB) либо же лучше другую базу? 2. Клиент, на основе полученных данных будет строить график, поэтому выдача, скорее всего, будет идти частями через web-socket, что бы не тормозить отображение, насколько правильно будет использование LIMIT? 3. насколько правильно будет делать order by id desc для сортировки выдачи? 4. Насколько я понимаю, механизм кеширования необходимо реализовывать на стороне бэка т.к. частый инсерт сводит кеширования средствами mysql к нулю буду признателен за помощь и советы! Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 17:37 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
chiffacff, у тебя диски не выдержат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 18:04 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
вадя, и какие варианты решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 18:24 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
chiffacffПоле1 - user_id - int(11) - key Поле2 - shop_id - int(3) - key Поле3 - start_day - datetime Поле4 - end_day - datetime Поле5 - start_price - decimal Поле6 - end_price - decimal Поле7 - id - bigint - unique2*int+2*datetime+2*decimal+1*bigint = 2*4+2*8+2*6+8=44 байта плюс-минус на запись. При 10ккк записей, да плюс индексы и т.п. - это под терабайт. Я бы не советовал даже думать про MySQL на таких объёмах в рамках одного сервера... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 18:52 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
chiffacffДанные будут вставляться периодично, раз в минуту. Планируемый объем вставляемых ежеминутно данных (строк) +/- Круглосуточно или есть перерывы? chiffacffОриентировная нагрузка при select 1300-1500 в минуту. 1300-1500 чего? chiffacff2. Клиент, на основе полученных данных будет строить график, Он же график будет строить не в 10 миллиардов точек? Всё равно данные будет каким-то образом агрегироваться (день/месяц)?. Может имеет смысл делать выборку с некой промежуточной агрегированной таблицы? Насколько актуальным должен быть график? Достаточно ли данных по вчера? Как много он будет строить графиков в день? Каковы пожелания/ограничения на скорость "построения"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 06:19 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
В каком виде и где сейчас эта таблица с имеющимися данными? Каков её физический объем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 06:22 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
ху*ня получится. Тут надо актуальные данные в отдельной таблице держать, чтобы маленькой была, агрегацию по возможности, по годам может разбить, и прочие варианты уменьшения объёма. одним кешированием тут не обойтись )) chiffacffПри запросе данные будет идти поиск по полям Поле1, Поле2, Поле1+Поле2 это 1 сводный индекс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 08:46 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
tip78это 1 сводный индексНе, два... один по (Поле1, Поле2) и второй по (Поле2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 09:17 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
982183Планируемый объем вставляемых ежеминутно данных (строк) +/- Круглосуточно или есть перерывы? круглосуточно 9821831300-1500 чего? запросов по поиску в таблице и выдачи данных 982183Он же график будет строить не в 10 миллиардов точек? Всё равно данные будет каким-то образом агрегироваться (день/месяц)?. Может имеет смысл делать выборку с некой промежуточной агрегированной таблицы? Насколько актуальным должен быть график? Достаточно ли данных по вчера? Как много он будет строить графиков в день? Каковы пожелания/ограничения на скорость "построения"? да, будут периоды. минута, час, 2 часа .... день месяц и т.д. 982183В каком виде и где сейчас эта таблица с имеющимися данными? Каков её физический объем? пока еще разработка, еще таблицы нету ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 12:47 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
chiffacffбудут периоды. минута, час, 2 часа .... день месяц и т.д.Ну в принципе партиционирование по дате (ну или там по месяцу) более-менее может снять остроту проблемы при небольших по времени выборках. Но несильно... Чисто в теории всё одно для вменяемой скорости на таких объёмах надо делать предрасчёты статистики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 13:05 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
расчетов не будет. толко хранение и вывод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 13:37 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
Вывод за месяц - это какой объём-то, Вы считали? а то счас выясните что горите желанием вывалить с сервера на клиента полтора гига хламу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 13:45 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
Akinatip78это 1 сводный индексНе, два... один по (Поле1, Поле2) и второй по (Поле2). это если нужны будут все юзеры в шопе chiffacff982183В каком виде и где сейчас эта таблица с имеющимися данными? Каков её физический объем? пока еще разработка, еще таблицы нету напомнило один "стартап", который хотел порвать все социалки. Взяли серверов кучу, гигабиты на каждом, ssd диски, везде я все настроил и оптимизировал подсистемы. В результате спустя год простоя, даже без минимальной нагрузки, инвестор прекратил финансирование, а разработчики были разогнаны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 13:58 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
tip78это если нужны будут все юзеры в шопе кстати, вопрос про потроха - ежели соотношение не в общей таблице, а в НФ, то поиск же быстрее должен работать? там всё-таки размер поменьше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 14:07 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
chiffacffПри запросе данные будет идти поиск по полям Поле1, Поле2, Поле1+Поле2 У вас будут запросы типа shopId + userId? Если по отдельности каждое поле, то мне кажется, от индексов на них не будет никакого толку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 15:22 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
tip78кстати, вопрос про потроха - ежели соотношение не в общей таблице, а в НФ, то поиск же быстрее должен работать? НФ это что?... Arm79 У вас будут запросы типа shopId + userId? Если по отдельности каждое поле, то мне кажется, от индексов на них не будет никакого толку. в 80% случаях и по тому и по тому ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 15:50 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
Нормальная Форма 1 таблица, где только: user_id | shop_id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 16:08 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
Планируемый объем вставляемых ежеминутно данных (строк) +/- Раз данных пока нет, то надо понимать, что тот объем. который описан в заголовке будет достигнут спустя несколько лет эксплуатации. А там или шах, или ишак, или Насреддин сдохнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 16:18 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
982183Планируемый объем вставляемых ежеминутно данных (строк) +/- порядка 1 828 800 записей в сутки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 16:41 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
chiffacff, это ж что такое пишется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 17:12 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
статистика, данные, история ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 19:19 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
если там логи или ещё какая отчётность, то просто делайте агрегацию (кроном или демоном) раз в 1/5/60 минут и не парьтесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 19:28 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
2 млн записей в день это конечно с одной стороны серьезно, а с другой стороны явно не юзеры будут это вводить. Надо разделить таблицу хранения первичных данных и таблицу из которой берутся данные для отчетности. Которая будет и агрегированна и адаптирована. Всё зависит от специфики твоей отчетности 1300-1500 запросов в минуту это вряд ли. Есть только у тебя не под тыщу получателей, что маловероятно. Тут явно нужен анализ и оптимизация отчетности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 03:21 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
982183таблицу хранения первичных данныхЯ бы предложил первичные данные вообще не писать в БД. А только сохранять в лог-файл, чтобы при необходимости пересчитать какой-то из агрегатов. Ну или писать, но очень немного - порядка минимальной порции агрегации. А вообще существуют специальные СУБД для хранения временных рядов (time series database). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 03:26 |
|
||
|
хранение, поиск и выдача по таблице с более 10 мрлн записей
|
|||
|---|---|---|---|
|
#18+
chiffacff982183Планируемый объем вставляемых ежеминутно данных (строк) +/- порядка 1 828 800 записей в сутки 1 828 800 *365 = 667 512 000 в год Вполне реальная цифра. И реальная возможность в первый/первые год/ы эксплуатации отладить систему и после этого готовиться к работе и проблемам бигдаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 03:29 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39653284&tid=1829820]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 391ms |

| 0 / 0 |
