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

Anton Farygin rider на basealt.ru
Чт Апр 8 08:13:20 MSK 2021


Данил, в структуре ещё не хватает содержимого plan/*

В частности - какие пакеты в task будут добавлены/удалены для каждой 
архитектуры + src.rpm

Эта информация пригодится, если нам в дальнейшем захочется по запросу 
генерить репозиторий и его apt'овые хеши для каждого задания.


On 07.04.2021 13:55, Danil Shein wrote:
>
> Обновлённая архитектура БД для altrepodb во вложении.
>
> Добавлены таблицы для хранения данных по таскам.
>
> 01.04.2021 18:31, Anton Farygin пишет:
>> 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