[devel] altrepodb - архитектура БД

Anton Farygin rider на basealt.ru
Чт Апр 1 18:31:54 MSK 2021


ok.

On 01.04.2021 16:15, Danil Shein wrote:
> После изменения первичного ключа и полей группировки получим 
> существенное уменьшение объёма (почти в 4 раза) таблицы при 
> незначительном увеличении времени исполнения запросов:
>
> CREATE TABLE Depends
> (
>     pkg_hash   UInt64,
>     dp_name    String,
>     dp_version String,
>     dp_flag    UInt32,
>     dp_type    Enum8('require' = 1, 'conflict' = 2, 'obsolete' = 3, 
> 'provide' = 4)
> ) ENGINE = MergeTree ORDER BY (dp_name, dp_version, dp_type) PRIMARY 
> KEY dp_name;
>
> Дальнейшие оптимизации имеет смысл производить уже в момент доработки 
> серверной части.
>
> 01.04.2021 15:17, Anton Farygin пишет:
>> Спасибо.
>>
>> а какая Cardinality у поля dpname в таблице Depends ?
>> Может быть стоит сделать её LowCardinality ?
>>
>> Вопрос не простой, поиск по этому полю активно будет использоваться в 
>> сложных запросах, анализирующих зависимости исходных и бинарных 
>> пакетов. Позволит ли это изменение нам уменьшить объём данных и 
>> увеличить скорость работы с ними.
>>
>>
>> CREATE TABLE Depends
>> (
>>     pkg_hash   UInt64,
>>     dp_name    String,
>>     dp_version String,
>>     dp_flag    UInt32,
>>     dp_type    Enum8('require' = 1, 'conflict' = 2, 'obsolete' = 3, 
>> 'provide' = 4)
>> ) ENGINE = MergeTree ORDER BY (pkg_hash, dp_type, dp_name, 
>> dp_version, dp_flag) PRIMARY KEY pkg_hash;
>>
>>
>> On 01.04.2021 12:41, Danil Shein wrote:
>>>
>>> Обновлённая структура БД во вложении
>>>
>>> 31.03.2021 14:06, Anton Farygin пишет:
>>>> On 31.03.2021 13:58, Danil Shein wrote:
>>>>> Поле pkgset_class добавлю вво вложенную структуру pkgset_kv c 
>>>>> ключом 'class'.
>>>>>
>>>>> Выбрать его можно будет как и другие значения в запросе вида:
>>>>>
>>>>>> select *,pkgset_kv.v[indexOf(pkgset_kv.k,'type')] as pkgset_class 
>>>>>> from PackageSetName
>>>>>
>>>>> В таблице PackageSetName колонка pkgset_name переименована в 
>>>>> pkgset_nodename
>>>>
>>>>
>>>> Сбрось сюда, пожалуйста, новую структуру целиком.
>>>>
>>>>
>>>>>
>>>>>
>>>>> 31.03.2021 10:40, Anton Farygin пишет:
>>>>>> Данил, есть предложение добавить в PackageSetName ещё enum поле 
>>>>>> pkgset_class, в который записывать такие варианты: 
>>>>>> 'repository','iso','rootfs','squashfs','installer'
>>>>>>
>>>>>> Может быть вместо enum использовать lowcardinality string.
>>>>>>
>>>>>> Для того, что бы идентифицировать наборы пакетов ещё и типам.
>>>>>> т.к. этот class будет использоваться довольно часто, то лучше его 
>>>>>> в nested структуру не класть.
>>>>>>
>>>>>> Ну и было бы неплохо обновить версию с последними исправлениями.
>>>>>>
>>>>>> On 29.03.2021 15:57, Danil Shein wrote:
>>>>>>> Добрый день, коллеги!
>>>>>>>
>>>>>>> В настоящее время идёт активная переработка altrepodb - решения 
>>>>>>> реализующее загрузку в единую БД на ClickHouse информации о 
>>>>>>> структуре и содержании всех репозиториев и тасков для 
>>>>>>> последующего анализа, хранения истории и т.п.
>>>>>>>
>>>>>>> Сейчас репозитории и таски грузятся в БД, анализ и получение 
>>>>>>> данных работает через сервер altrepo_server (JSON API).
>>>>>>>
>>>>>>> На текущий момент переделана базовая схема БД для загрузки 
>>>>>>> репозиториев.
>>>>>>> Структура репозитория сохраняется в БД в виде дерева, пакеты 
>>>>>>> привязываются к соответствующим веткам.
>>>>>>>
>>>>>>> Новая структура таблиц для хранения информации о тасках в 
>>>>>>> процессе разработки.
>>>>>>>
>>>>>>> SQL файл во вложении.
>>>>>>>
>>>>>>> Обсуждение, замечания и предложения приветствуются.
>>>>>>>
>>>>>>> Спасибо!
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Devel mailing list
>>>>>>> Devel на lists.altlinux.org
>>>>>>> https://lists.altlinux.org/mailman/listinfo/devel
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Devel mailing list
>>>>>> Devel на lists.altlinux.org
>>>>>> https://lists.altlinux.org/mailman/listinfo/devel
>>>>>
>>>>
>>>> _______________________________________________
>>>> Devel mailing list
>>>> Devel на lists.altlinux.org
>>>> https://lists.altlinux.org/mailman/listinfo/devel
>>> -- 
>>> Данил Шеин / Danil Shein
>>>
>>> E-mail:dshein на basealt.ru
>>>
>>> _______________________________________________
>>> Devel mailing list
>>> Devel на lists.altlinux.org
>>> https://lists.altlinux.org/mailman/listinfo/devel
>>
>>
>> _______________________________________________
>> Devel mailing list
>> Devel на lists.altlinux.org
>> https://lists.altlinux.org/mailman/listinfo/devel
>



Подробная информация о списке рассылки Devel