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

Danil Shein dshein на altlinux.org
Ср Апр 7 13:55:15 MSK 2021


Обновлённая архитектура БД для 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 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 mailing list
> Devel на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel

-- 
Данил Шеин / Danil Shein

E-mail: dshein на basealt.ru

----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20210407/8ad94006/attachment-0001.html>
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : 0001_repodb_base.sql
Тип     : application/sql
Размер  : 13048 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20210407/8ad94006/attachment-0001.bin>


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