|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
mayton Вот с этого надо было начинать. Мы дескыть строим ОЛАП на дотнете. Вот как раз с этого доклад и начинался, надо же, если не понятно о чем речь, либо посмотреть доклад с начала, либо спросить нормально. Я вот какой вопрос хотел бы для себя прояснить, есть общепризнанные, независимые бенчмарки для BI или OLAP систем? Где фигурировали бы такие системы как qlickView, Microsoft Power BI и другие лидеры рынка. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:31 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov artemanaВот, и обсудите с mayton "А если данные поменяются? и планы нужно перестроит" Да нам-то что обсуждать, всё уже обсуждено за годы. Это Вам стоит обратить внимание на намёк Ё относительно момента инвалидации планов и статистик. Это не Ё, но maytom обратил. В Olap системах, нет такой потребности. И джойнов, таких как в SQL, там нет. Они построены по схеме звезда. Таблицы фактов в центре, лепестки - таблицы координат. Таблицы фактов - очень большие, чье физика хранения предполагает основной метод первичного чтения - natural. С быстрым отсечением записей не прошедших фильтр. Здесь и помогает многопоточность и разделение на кластеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:42 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
artemanaТаблицы фактов - очень большие, чье физика хранения предполагает основной метод первичного чтения - natural. "Эва оно как, Михалыч..." (с) А я-то наивно полагал, что кубы осуществляют как раз обратную операцию: свёртку больших первичных таблиц с предпросчётом агрегатов... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:50 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
.... момента инвалидации планов и статистик В Olap системах, нет такой потребности. Но если бы такая потребность была, сам подход отнюдь не запрещает, сделать то, что возможно стоит делать в этой ситуации. Например при поступлении SQL команды, понять, что ее статистика устарела, создать по нее новых исполняемый код и выполнить его, вместо старого. Старый либо в утиль, либо в кеш. В этом вопросе, обсуждаемый подход не дает ничего нового, но и не ограничивает ни в чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:52 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
artemanaНапример при поступлении SQL команды, понять, что ее статистика устарела, создать по нее новых исполняемый код и выполнить его, вместо старого. Вот только у вас компиляция статическая, SQL команды "поступают" при написании кода. Нет, я, конечно, видел забавные системы, переписывающие и перекомпилирующие свой собственный ход на ходу, но они уже за пределами добра и зла. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:57 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov "Эва оно как, Михалыч..." (с) А я-то наивно полагал, что кубы осуществляют как раз обратную операцию: свёртку больших первичных таблиц с предпросчётом агрегатов... Прикинь, в том и дело, что за счет in memeory, такие системы как qlickView говорят открытым текстом, "нафиг этот предпросчёт агрегатов" . Мы так быстро считаем, что то, что вы загрузите в самом детальном, не агрегированном виде, мы посчитаем на лету. И очень быстро. такое же я слышал и от яндекс аналитик. Ну и мы типа по этому пути идем. Ведь предпросчет агрегатов сужает возможности детализации анализа. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:58 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А я-то наивно полагал, что кубы осуществляют как раз обратную операцию: свёртку больших первичных таблиц с предпросчётом агрегатов... Люди, которые не умеют пользоваться SQL, пишут для этого гигантские процедурные реализации с соответствующей скоростью работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:58 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
artemana Dimitry Sibiryakov "Эва оно как, Михалыч..." (с) А я-то наивно полагал, что кубы осуществляют как раз обратную операцию: свёртку больших первичных таблиц с предпросчётом агрегатов... Прикинь, в том и дело, что за счет in memeory, такие системы как qlickView говорят открытым текстом, "нафиг этот предпросчёт агрегатов" . Мы так быстро считаем, что то, что вы загрузите в самом детальном, не агрегированном виде, мы посчитаем на лету. И очень быстро. такое же я слышал и от яндекс аналитик. Ну и мы типа по этому пути идем. Ведь предпросчет агрегатов сужает возможности детализации анализа. А какого объёма у вас сейчас хранилище? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:02 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Вот только у вас компиляция статическая, SQL команды "поступают" при написании кода. Не ну это ерунда, такого нет! Вот как работает система в основном режиме. 1. Работает программа (слушает порт) 2. Поступает SQL-команда 3. Программа проверяет есть ли в ее кеше код (dll) под такую команду. 4. Если есть, этот код исполняется. 5. Если нет, пишится код (файл на C#), компилируется в dll, помещается в кеш и исполняется. Изначально, сразу после старта программы, кеш пустой, никакой статики. Если вернуться к вопросу инвалидации статистики, то Никто не мешает после шага 3 проверить и актуальность статистики, и создать новый код, ели она устрела. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:09 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
mayton А какого объёма у вас сейчас хранилище? По самому крупному проекту. В самой большой таблице фактов - 60 млн записей. Средний объем 15 млн. Всего таблиц фактов 20, справочников примерно столько же. Объем всей базы в памяти 35Гб. Запас есть, пользователь доволен. но миллиард наверно не потянем. По крайне мере пока не разделим между нодами ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:14 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
artemana mayton А какого объёма у вас сейчас хранилище? По самому крупному проекту. В самой большой таблице фактов - 60 млн записей. Средний объем 15 млн. Всего таблиц фактов 20, справочников примерно столько же. Объем всей базы в памяти 35Гб. Запас есть, пользователь доволен. но миллиард наверно не потянем. По крайне мере пока не разделим между нодами И что все 35 Гб прогружаете в память .Net машины? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:23 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
artemana В самой большой таблице фактов - 60 млн записей. С этого момента можно начинать рыдать. Когда я в начале двухтысячных занимался хранилищами, потратил некоторое время на установление оптимального для Оракла размера партиции для таблиц фактов. Выяснил, что оптимум (для железа того времени) лежал в диапазоне 20-50 млн. записей (в зависимости от того, насколько широкая запись). А 60 млн. записей... блин... этого не хватит для информации о счетах за ЖКХ Москвы за один месяц. И вы выясняете, как лучше крутить такие копейки.... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:48 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
Что-то у меня в голосе все равно паззл не складывается. OLAP системы строят свои кубики 1 раз. Хоть по In-Memory хоть по диску. И после того как кубик построен ему уже и БД не нужна. Системы которые In-Memory и аналитика - хранят таблички развернуте набок. Как массивы примитивов. int/float/string. И именно за счет этого достигают молниеносного анализа. Как пишут в рекламах. Но у них - другие ограничения. Индексы не строятся обычно. Там полосочный партишенинг. Как паркет на полу. А.... да. С языка снял. Точно. Parquet. Система такая есть. Тоесть для них (колончатых) есть рекомендованные запросы. И есть неудобные. Которые будут медленно работать. Типа select *. Какая к чорту звездочка? Когда колонок 100500. Изволь выбрать выборку колонок. Короче свои бока. А у автора что? Row-oriented? Column-oriented? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:07 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
mayton И что все 35 Гб прогружаете в память .Net машины? Да, и все отлично работает. Я уверен что туда можно загрузить и больше в 10 раз. Никаких проблем, просто из роста объема нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 21:26 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
softwarer artemana В самой большой таблице фактов - 60 млн записей. С этого момента можно начинать рыдать. Когда я в начале двухтысячных занимался хранилищами, потратил некоторое время на установление оптимального для Оракла размера партиции для таблиц фактов. Выяснил, что оптимум (для железа того времени) лежал в диапазоне 20-50 млн. записей (в зависимости от того, насколько широкая запись). А 60 млн. записей... блин... этого не хватит для информации о счетах за ЖКХ Москвы за один месяц. И вы выясняете, как лучше крутить такие копейки.... Можно, начинайте рыдать. Но лучше, если можете, укажите на какие то тесты, позволяющие сравнивать такие системы по производительности между собой. Померяем, если это возможно. А то тут всем известно, что тут каждый второй разработчик делал базы на миллиард записей и все считалось за 1 секунду. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 21:31 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
artemana Но лучше, если можете, укажите на какие то тесты, позволяющие сравнивать такие системы по производительности между собой. Да какие нафиг тесты. Вы хотя бы для начала закачайте более-менее вменяемый объём данных, потом добейтесь с ним какого-нибудь результата. У меня в OLTP в табличке клиентов чуть больше 150M записей после очистки - а вы рассказываете про 60M в хранилище как о великом достижении. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 21:52 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
H5N1 .net (как впрочем и java) интерпретатор с гарбадж коллектором, программы там в принципе не способны работать напрямую с памятью. вообще никак. это не устаревшая информация Не интересуюсь дотнетом, но в ява уже есть и F(oreign)M(emory)A(PI) и F(oreign)F(unction and)M(emory) API. Да, пока в виде инкубатора и, нет - его точно доделают и никуда не выкинут. P.S. Освежайте, хоть иногда, знания "времён очаковских и покоренья Крыма". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 21:56 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
artemana По самому крупному проекту. В самой большой таблице фактов - 60 млн записей. Средний объем 15 млн. Всего таблиц фактов 20, справочников примерно столько же. Объем всей базы в памяти 35Гб. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 22:00 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
mayton А у автора что? Row-oriented? Column-oriented? В данном топике это не имеет значения. Здесь обсуждается принцип реализации обработки данных. Они могут быть в структурах Row-oriented или в Column-oriented или еще в чем то комбинированном или даже непохожем ни на то и ни другое. Неважно. Есть два подхода к написанию движка выбирающего эти данные. Классический и то, что использовали мы. Названия условны, ключевое отличие второго в том, что SQL команда транслируется в программу на неком языке, эта программ потом компиллируется и выполняется. Как выяснилось этот подход не нов. Здесь назвали две системы, умеющих работать по такому принципу. Одна из них - всемогущий оракл, который из SQL процедуры делает машинный код. Мол трепищите, порвет всех! И это очень отличительный момент. Возможно такой прямой переход к машинным кодам более эффективен, хотя это под вопросом, но он точно сложней в обслуживание. Потому что если у Вас возникает необходимость отладки, то разобраться почему в данных условиях конкретная SQL процедура работает так и выдает именно такой результат, Вам будет непросто. Вы будете вынуждены отлаживать программу работающую в машинном коде. Ничего другого то нет. Хотя здесь нет специалистов, писавших оракл изнутри, и подтвердить это некому. Но Вы можете хотя бы попытаться это мыслено представит? С этой позиции вариант который привнес servit мягче, потому что там, в качестве промежуточного, используется язык более высокого уровня, и трассировка программы, реализующей SQL, на нем значительно легче. На мой взгляд, преимуществом нашего подхода, является именно использование C# и как основного языка проекта и как того языка, на котором, если что, можно разобраться в подробностях выполнения команды. Один язык вместо двух, плюс я считаю, что в производительности программ на нем написанных, он уступил только с и с++. И то, надо посмотреть в каких моментах. А остальных уделает. Об удобстве и говорить нечего. Ирония заключается в том, что и обсуждение свойств языка, это тоже офтопик. При желание можно взять другой язык. Подход с использованием промежуточного языка все равно будет отличаться от классического. Вопрос нужно ли это делать и для каких СУБД? Вот что хотелось бы понять. Вместо этого идет поток критики и насмешек направленный в принципе против конкретной реализации, хотя никто из этих "великих гуру" и в глаза не видел системы. Печальное зрелище.... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 22:30 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
softwarer - а вы рассказываете про 60M в хранилище как о великом достижении. Если я и употребил слово "великий", то только по отношению к Вам. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 22:32 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
artemana mayton А у автора что? Row-oriented? Column-oriented? В данном топике это не имеет значения. Здесь обсуждается принцип реализации обработки данных. Они могут быть в структурах Row-oriented или в Column-oriented или еще в чем то комбинированном или даже непохожем ни на то и ни другое. Неважно. Подожди-подожди. Это важно. Это - тоже класс системы. И это тоже определяет на какие query будет ориентирована система. Ты как знающий эту систему можешь сказать ЧТО лежит в этих 35 гигабайтах? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2021, 00:06 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
Подожди-подожди. Это важно. Это - тоже класс системы. И это тоже определяет на какие query будет ориентирована система. Не, конечно для оценки системы в целом это важно! Но в этом топике, я предлагаю ничего кроме способа обработки данных не обсуждать. И без того трудно удержаться в конструктиве. Ты как знающий эту систему можешь сказать ЧТО лежит в этих 35 гигабайтах? Конечно могу. Но если Вы действительно хотите разобраться в том, какие там структуры для хранения используются, нужно создавать отдельный топик. Там достаточно необычная система. Она в принципе больше похожа под Row-oriented, но там есть моменты, позволяющие хранить данные более компактно и более быстро проводить фильтрацию при выборке. Но повторюсь, все это имеет мало отношение к тому, что мне хотелось бы обсудить в данной теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2021, 00:39 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
artemana Здесь назвали две системы, умеющих работать по такому принципу. Одна из них - всемогущий оракл, который из SQL процедуры делает машинный код. Мол трепищите, порвет всех! И это очень отличительный момент. Возможно такой прямой переход к машинным кодам более эффективен, хотя это под вопросом, но он точно сложней в обслуживание. Потому что если у Вас возникает необходимость отладки, то разобраться почему в данных условиях конкретная SQL процедура работает так и выдает именно такой результат, Вам будет непросто. Вы будете вынуждены отлаживать программу работающую в машинном коде. Ничего другого то нет. Хотя здесь нет специалистов, писавших оракл изнутри, и подтвердить это некому. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2021, 02:08 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
Никанор Кузьмич, человек не читатель, он писатель. Если он узнает, как работают существующие системы, ему будет гораздо труднее гордиться своими выдающимися творениями. Знания - это такая вещь, которая мешает полёту фантазии. Например, хоть чуть-чуть разобравшись, он бы уже не смог найти преимуществ своего решения перед тем же Ораклом, а без них - смотрите, как уверенно придумывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2021, 02:11 |
|
Dinamyc hard coding
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Я работал с ораклом снаружи. Процитированный выше текст я даже понять не могу. Что такое "SQL процедура"? В оракле есть "PL/SQL процедуры" и "SQL запросы". Вы что имеете в виду? Давайте вы сначала перепишете текст с использованием общеупотребительных терминов. Что значит "в данных условиях конкретная SQL процедура работает так и выдает именно такой результат"? У меня лично и "PL/SQL процедуры", и "SQL запросы" всегда выдают одинаковый результат - тот, который нужен. Отладка PL/SQL ничем не отличается от отладки на любом другом языке. Никакие машинные коды в оракле отлаживать не нужно. О терминах. Термин SQL покрывает такие термины как DDL и PL SQL. Все эти языки относятся к семейству SQL и являются его расширением. Поэтому термин SQL - процедура, который я использовал, в отношение Stored prоcedure, в оригинале "сторед", я считаю приемлемым. Но если Вам удобно, давайте зафиксируем, что речь идет о "PL/SQL процедуре". Такие процедуры есть в оракле, есть в MS SQL, есть в Firebird и других. Синтаксис разный, но это не принципиально. Теперь, как мне кажется, почему вы меня не поняли. Я имел ввиду не ту отладку. Естественно, когда конечный пользователь работает с ораклом, все так и происходит как Вы написали. 100% процентов. Я имел виду трассировку, которую выполняет программист ядра оракла. Например поддерживая новую языковую конструкцию в PL/SQL или в обычном SQL. Или разбираясь с багом в старой. Мы ведь здесь пытаемся обсуждаем подходы к созданию движка СУБД , а не его использования. Вы не имеете проблем с оракл PL/SQL потому что там все "вылизали", но чего им это стоило, Вы не оцениваете. Попробуйте это сделать. Я конечно тоже внутри оракл не был, и дать конкретную оценку именно по нему не могу. Но в процессе разработки нашего сервиса бизнес аналитики, нами было разработано две In Memorу database. Язык управления одинаков, сравним с SQL. Вторая версия этой In memory была построена "не обычно". Это "не обычно" дало нам выигрыш по скорости работы самой базы (в среднем до 20%), но это не главное! Во время создание второго варианта мы тратили на решение аналогичных задач (поддержку своего SQL) гораздо меньше ресурсов. И сейчас, если нам надо что то понять как внтури работает старая конструкция нашего SQL или добавит в него новое, мы делаем это с гораздо меньшими затратами. Это и обсуждается. Но есть трудности, так как нет здесь здесь людей, имеющих опыт разработки ядра СУБД. Ну или они молчат. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2021, 08:00 |
|
|
start [/forum/topic.php?fid=35&msg=40099906&tid=1552159]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 422ms |
0 / 0 |