|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Всем привет! СУБД MS SQL 2016. Есть несколько витрин по 2-4 млрд. записей + несколько агрегатных таблиц по ~1 млрд. записей. Из-за запросов с группировкой и экономии места, на таблицах колоночные индексы. Исторические данные на которых строятся витрины изменяются, поэтому есть необходимость постоянно пересчитывать историю за большой период. Подозреваю, что есть более эффективные инструменты для таких задач. Прошу подсказать варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:00 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Сам по себе пересчет представляет тривиальную операцию сложения текущего значения и дельты. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:18 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
а сейчас в чём проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:30 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
p_vadikЕсть несколько витрин по 2-4 млрд. записей + несколько агрегатных таблиц по ~1 млрд. записей. Исторические данные на которых строятся витрины изменяются, поэтому есть необходимость постоянно пересчитывать историю за большой период. Вообще-то витрины на 2 миллиарда записей это что-то странное. Может, стоит гранулярность уменьшить до требуемой отчётами?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:50 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
p_vadik Всем привет! СУБД MS SQL 2016. Есть несколько витрин по 2-4 млрд. записей + несколько агрегатных таблиц по ~1 млрд. записей. Из-за запросов с группировкой и экономии места, на таблицах колоночные индексы. Исторические данные на которых строятся витрины изменяются, поэтому есть необходимость постоянно пересчитывать историю за большой период. Подозреваю, что есть более эффективные инструменты для таких задач. Прошу подсказать варианты. А погуглить?! Вроде бы сейчас предложена куча способов решения проблемы. Например, начиная от Hadoop, заканчивая лямбда-архитектурой. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 05:54 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Бумбараш а сейчас в чём проблема? Проблема в неприемлемой продолжительности операции пересчета. Нужно значительно ускорить, в разы. Можно конечно по мелочи оптимизировать, но значительного прогресса думаю не будет. Поэтому и решил спросить у знатоков о других технологиях, которые используются для решения подобных задач. Dimitry Sibiryakov p_vadikЕсть несколько витрин по 2-4 млрд. записей + несколько агрегатных таблиц по ~1 млрд. записей. Исторические данные на которых строятся витрины изменяются, поэтому есть необходимость постоянно пересчитывать историю за большой период. Вообще-то витрины на 2 миллиарда записей это что-то странное. Может, стоит гранулярность уменьшить до требуемой отчётами?.. Чтобы покрыть основную массу отчетов, как раз и были сделаны агрегатные таблицы. Но и эти витрины нужны, так как возникают масса разнообразных кейсов при анализе данных. mad_nazgul p_vadik Всем привет! СУБД MS SQL 2016. Есть несколько витрин по 2-4 млрд. записей + несколько агрегатных таблиц по ~1 млрд. записей. Из-за запросов с группировкой и экономии места, на таблицах колоночные индексы. Исторические данные на которых строятся витрины изменяются, поэтому есть необходимость постоянно пересчитывать историю за большой период. Подозреваю, что есть более эффективные инструменты для таких задач. Прошу подсказать варианты. А погуглить?! Вроде бы сейчас предложена куча способов решения проблемы. Например, начиная от Hadoop, заканчивая лямбда-архитектурой. :-) Читаю конечно, но опыт форумчан также интересен) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 09:40 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
p_vadik Читаю конечно, но опыт форумчан также интересен) ИМХО лучше самому попробовать сделать proof of concept и посмотреть подходит или нет под вашу задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 13:52 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
p_vadik Всем привет! СУБД MS SQL 2016. Есть несколько витрин по 2-4 млрд. записей + несколько агрегатных таблиц по ~1 млрд. записей. Из-за запросов с группировкой и экономии места, на таблицах колоночные индексы. Исторические данные на которых строятся витрины изменяются, поэтому есть необходимость постоянно пересчитывать историю за большой период. Подозреваю, что есть более эффективные инструменты для таких задач. Прошу подсказать варианты. У меня было абсолютно то же самое, прям один в один, в том числе и субд, только объем до 12 млрд строк - все отлично работало. Пересчитывал в цикле по 1 секции во внерабочее время. Не каждый день, раз в месяц примерно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 18:09 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
На секцию в 200 млн со сжатием до 100 млн уходило где-то минут 20, хотя конечно тут все зависит от ширины вашей таблицы и от оборудования. Ну и от алгоритма пересчета конечно - у меня все это считалось отдельно, в конце вешался колоночный индекс, а потом секция переключалась в основную таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 18:14 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
p_vadik, Ентерпрайзы под такие задачи используют хадуп, майкрософт тоже туда клонит. В мсскл 2019 идет хадуп в комлекте, видимо самое разумное смотреть на хадуп из мсскл ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 10:09 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
хадуп считать быстрее ms sql не будет на одинаковых ресурсах можно mpp посмотреть, тот же greenplum. Но тут опять вопрос про ресурсы. Если сейчас вычислительные ресурсы нищие, то и другая система на таких ресурсах далеко не улетит. Я бы смотрел на архитектуру текущего ETL. Может быть просто у текущей конфигурации слабые ресурсы. Может быть ETL криво сделан. Еще непонятна, какая нужна оптимизация. Грузится один день, а нужно, чтобы грузилось два часа. Или грузится один день, а нужно, чтобы грузилось 10 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 11:36 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Бумбараш хадуп считать быстрее ms sql не будет на одинаковых ресурсах. Будет, за счет много большей параллелизации, более примитивной структуры файлика (parquet). Опять же колумн сторидж. Даже в виде one node cluster будет быстрее, на оракле проверял ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 13:37 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
хадуп он вообще не про скорость, в книжке по хадупу написано в первом предложении для параллелизиации нужно докуя машин, что уже видимо предполагает увеличение ресурсов колумн сторадж на загрузку не особо влияет, если на 1-3%, то хорошо. тестировал его. К тому же в мсскуль свой колумн сторадж и не факт, что хуже ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 15:06 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Бумбараш хадуп он вообще не про скорость, в книжке по хадупу написано в первом предложении хадуп про массовую параллельность, из которой растет и скорость в том числе. даже на машинке с 8 vcpu всякие спарки и мап-редюсы поднимут многие десятки если сотни параллельных тредов и будут как минимум пытаться писать параллельно. на ETL задачках даже one node cluster даст фору мсскл в разы. из-за параллельности и много меньшей писанины. Бумбараш колумн сторадж на загрузку не особо влияет, если на 1-3%, то хорошо. тестировал его. К тому же в мсскуль свой колумн сторадж и не факт, что хуже на стареньком i7 и one node cluster я загрузил 480 Гб текстовых файликов от теста tpc-ds в паркет за 2 часа, сколько уйдет загрузить 480 гб csv в mssql таблички ? что-то мне подсказывает на десктопе и за 12 часов шансов мало уложится, а размер датафайлов далеко за ТБ перевалят. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 16:50 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1 а размер датафайлов далеко за ТБ перевалят. с чего бы это? наоборот, в columnstore займет меньше (в разы, а то и на порядок) чем исходный csv. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 20:13 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Каким образом отчётность прикручена к витринам? Это случайно не business objects? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 08:59 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
msLex H5N1 а размер датафайлов далеко за ТБ перевалят. с чего бы это? наоборот, в columnstore займет меньше (в разы, а то и на порядок) чем исходный csv. тесты показывали в разы не займет. плюс колумнстор в мсскл не отменяет secondary индексы https://15721.courses.cs.cmu.edu/spring2017/papers/09-olapindexes/p1177-larson.pdf авторFour queries against a TPC-DS [10] database at scale factor 100 are included. A TPC-DS database at scale factor 100 is intended to require about 100GB for the base tables. For SQL Server the space requirements were 92.3 GB for data, 15.3GB for secondary (row store) indexes and 36.6GB for column store indexes covering all columns on every table. scale factor 100 это чуть меньше 100 Gb, т.е. base tables заняли примерно столько же сколько csv файлики. у меня scale factor 500 был, csv заняли 480Gb ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 09:41 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1 тесты показывали в разы не займет. А наши тесты показывают, что займет H5N1 плюс колумнстор в мсскл не отменяет secondary индексы если они не нужны, то зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 12:15 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
msLex H5N1 тесты показывали в разы не займет. А наши тесты показывают, что займет Это зависит от того что в CSV. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 12:20 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
bluestreak msLex пропущено... А наши тесты показывают, что займет Это зависит от того что в CSV. Безусловно. Порядки компрессии на наших реальных данных я уже приводил. Кстати, они совпадают с тем, что указанно в статье, ссылку на которую дал H5N1. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 12:30 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
msLex H5N1 тесты показывали в разы не займет. А наши тесты показывают, что займет я тут столько майкрософт гайз повидал с их тестами блокировочник vs версионник. тоже как один втирали что у них все по другому. msLex H5N1 плюс колумнстор в мсскл не отменяет secondary индексы если они не нужны, то зачем? мсскл не массивно параллельная субд, без secondary индексов он просто будет тошнить годами выкачивая фуллсканом и nested loop всю базу силами пары тредов. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 16:42 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1 я тут столько майкрософт гайз повидал с их тестами блокировочник vs версионник. тоже как один втирали что у них все по другому. Причем здесь "майкрософт гайз", я говорю про наши тесты, на наших данных H5N1 мсскл не массивно параллельная субд, без secondary индексов он просто будет тошнить годами выкачивая фуллсканом и nested loop всю базу силами пары тредов. Все, что вы написали - полнейший бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 17:14 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1 Бумбараш хадуп он вообще не про скорость, в книжке по хадупу написано в первом предложении хадуп про массовую параллельность, из которой растет и скорость в том числе. даже на машинке с 8 vcpu всякие спарки и мап-редюсы поднимут многие десятки если сотни параллельных тредов и будут как минимум пытаться писать параллельно. на ETL задачках даже one node cluster даст фору мсскл в разы. из-за параллельности и много меньшей писанины. Бумбараш колумн сторадж на загрузку не особо влияет, если на 1-3%, то хорошо. тестировал его. К тому же в мсскуль свой колумн сторадж и не факт, что хуже на стареньком i7 и one node cluster я загрузил 480 Гб текстовых файликов от теста tpc-ds в паркет за 2 часа, сколько уйдет загрузить 480 гб csv в mssql таблички ? что-то мне подсказывает на десктопе и за 12 часов шансов мало уложится, а размер датафайлов далеко за ТБ перевалят. 2 часа где-то с колоночным сжатием, вот тестировали как-то 19771498 в приемнике данные будут весить ориентировочно 50-100 Гб ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 21:59 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Критик 2 часа где-то с колоночным сжатием, вот тестировали как-то 19771498 в приемнике данные будут весить ориентировочно 50-100 Гб так ты же тогда схитрил и тестировал на рам диске. scale factor 100 уже 92.3 GB в колумнсторе занимают, scale factor 500 явно поболее займет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 22:24 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1, Ну естественно "схитрил", ибо иначе все в обычный потребительский HDD упиралось. То есть платформ не особо важна, если железо создает узкие места. Про scale factor я не понял, что ты зотел сказать. Для того пример по ссылке сжатие - более 4 раз, мне встречались данные, которые сжимались как х10. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 23:41 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
-повтор- ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 23:44 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Критик Ну естественно "схитрил", ибо иначе все в обычный потребительский HDD упиралось. То есть платформ не особо важна, если железо создает узкие места. важна. именно платформа определяет какого размера данные будут записаны и нужны ли платформе еще мульон индексов, что бы хоть как-то потом этими данными ворочить. Критик Про scale factor я не понял, что ты зотел сказать. Для того пример по ссылке сжатие - более 4 раз, мне встречались данные, которые сжимались как х10. я же дал ссылку на статью и даже процитировал авторFour queries against a TPC-DS [10] database at scale factor 100 are included. A TPC-DS database at scale factor 100 is intended to require about 100GB for the base tables. For SQL Server the space requirements were 92.3 GB for data, 15.3GB for secondary (row store) indexes and 36.6GB for column store indexes covering all columns on every table. scale factor 100 - нифигна мсскл упаковать не смог. 92.3 GB + 15.3GB + 36.6GB. т.е. в мсскл пришлось записать много больше чем весили сырые csv. scale factor 500 это в пять раз больший датасет, он потребует от мсскл без малого терабайт записать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 00:18 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1, 8.6 Гб по ссылке выше в загруженном виде весили 6.5 Гб (это вообще без сжатия), с колоночным сжатием - до 2 Гб, есть еще архивное колоночное сжатие - там я его не тестировал, но оно сжимает еще сильнее. И странно, почему ты индексы тянешь в обсуждение? Они легко могут раздуть требуемое место в десять-двадцать раз. Собственно, даже в твоем примере видно, что сжатие - х3, ибо "36.6GB for column store indexes covering all columns" это и есть вся сжатая таблица. Только эти "хитрецы" строили некластерный колоночный индекс, то есть фактически это было дублирование данных. Ps я понял, твоя статья касается SQL Server 2012 это довольно странно, обсуждать продукт почти десятилетней давности, сравнивая его с современными, например, тот случай, где ты что-то грузил ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 01:11 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Критик И странно, почему ты индексы тянешь в обсуждение? Они легко могут раздуть требуемое место в десять-двадцать раз. потому что в реальном проекте мсскл потребует раздуть место и облепить индексами таблицы на 2-3 млрд Критик Собственно, даже в твоем примере видно, что сжатие - х3, ибо "36.6GB for column store indexes covering all columns" это и есть вся сжатая таблица. Только эти "хитрецы" строили некластерный колоночный индекс, то есть фактически это было дублирование данных. ок, тогда я их не понял. решил, что 92.3 GB это колумнстор. Критик Ps я понял, твоя статья касается SQL Server 2012 это довольно странно, обсуждать продукт почти десятилетней давности, сравнивая его с современными, например, тот случай, где ты что-то грузил а у майкрософта есть свежее продукт ? что изменилось в формате хранения с версии 2012 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 11:15 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1, Изменений куча, хотя бы то, что колоночный кластерный индекс с тех пор стал поддерживать редактирование, все же в 2012 это была первая версия с кучей ограничений. Ну и если требовать наличие индексов в ms sql, то и в другой системе нужно сравнивать с имеющимися индексами. Иначе получается какая-то профанация. Или у тебя без индексов миллиардные таблицы ворочаются? Особенно, если нужно выбрать сотню записей из миллиарда? (на одинаковом железе) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2019, 04:58 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Критик Ну и если требовать наличие индексов в ms sql, то и в другой системе нужно сравнивать с имеющимися индексами. Иначе получается какая-то профанация. Или у тебя без индексов миллиардные таблицы ворочаются? Особенно, если нужно выбрать сотню записей из миллиарда? (на одинаковом железе) да, на хадупах миллиардные таблицы ворочаются без каких-либо индексов, в том числе и у меня. на хадупах случаются задачи где нужно какие-нить агрегаты/kpi на нагруженном сайтике показать, вот тогда можно в какой-нить solar индекс записать. но в аналитке хадупы без индексов справляются. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2019, 10:43 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1, За счет чего? Полное сканирование? Или все же распараллеливание по нодам? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2019, 14:19 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Критик За счет чего? за счет отсутствия FK, за счет отсутствия tempdb где мсскл строит хеши для джоина и сортирует, за счет отсутствия transaction лога, за счет денормализации, за счет много, много большей параллельности. распараллеливание по нодам это уже следующий этап. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2019, 21:53 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1, Таки ЧАЛ был прав - матмодель это лишнее звено? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 11:20 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
SergSuper Таки ЧАЛ был прав - матмодель это лишнее звено? нет. Инмон предлагает сырые данные и источников интегрировать на хадупе в единый application pond, т.е. в единую аля реляционную модель. потом от туда уже генерить витрины. мы тоже примерно к этому пришли. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 13:11 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
H5N1 Критик За счет чего? за счет отсутствия FK, за счет отсутствия tempdb где мсскл строит хеши для джоина и сортирует, за счет отсутствия transaction лога, за счет денормализации, за счет много, много большей параллельности. распараллеливание по нодам это уже следующий этап. Все это реализуется и в реляционной субд, ну разве что кроме отсутствия tempdb для mssql. А отсутствие лога - довольно спорное решение, будет весьма трудно говорить заказчику что-то вроде "получилась конечно фигня, но ведь быстро же" ) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 17:17 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
- ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 17:17 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
p_vadik Всем привет! СУБД MS SQL 2016. Есть несколько витрин по 2-4 млрд. записей + несколько агрегатных таблиц по ~1 млрд. записей. Из-за запросов с группировкой и экономии места, на таблицах колоночные индексы. Исторические данные на которых строятся витрины изменяются, поэтому есть необходимость постоянно пересчитывать историю за большой период. Подозреваю, что есть более эффективные инструменты для таких задач. Прошу подсказать варианты. DDL надо (для представления о размерах) и ещё не помешал бы пример - что должно получиться в итоге (после расчётов) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 19:46 |
|
СУБД для пересчета больших витрин
|
|||
---|---|---|---|
#18+
Критик Все это реализуется и в реляционной субд, ну разве что кроме отсутствия tempdb для mssql. А отсутствие лога - довольно спорное решение, будет весьма трудно говорить заказчику что-то вроде "получилась конечно фигня, но ведь быстро же" ) черт, точно. ты открыл мне глаза. все же можно и на мсскл ! вот всегда подозревал, что майкрософт - сплошная индюшатина. все можно на мсскл, а они хадуп в ядро мсскл затолкали. ну ведь точно по незнанию, белых спецов же не осталось. [sarcasm off] в хадупе как раз проще гарантировать атомарность и соответственно консистентность. много проще. а вот у майкрософт. особенно майкрсофт, на блокировочном RC можно вычитать неконсистентную кашу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 20:36 |
|
|
start [/forum/topic.php?all=1&fid=35&tid=1552179]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 270ms |
total: | 426ms |
0 / 0 |