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

Danil Shein dshein на altlinux.org
Чт Апр 1 16:15:38 MSK 2021


После изменения первичного ключа и полей группировки получим 
существенное уменьшение объёма (почти в 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

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

E-mail: dshein на basealt.ru



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