From: Danil Shein <dshein@altlinux.org>
To: devel@lists.altlinux.org
Subject: Re: [devel] altrepodb - архитектура БД
Date: Thu, 1 Apr 2021 16:15:38 +0300
Message-ID: <7de22131-8dfb-7537-bcb8-aa166fa09e5e@altlinux.org> (raw)
In-Reply-To: <2d65a61b-6272-4918-77f8-0853048a3240@basealt.ru>
После изменения первичного ключа и полей группировки получим
существенное уменьшение объёма (почти в 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
next prev parent reply other threads:[~2021-04-01 13:15 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-29 12:57 Danil Shein
2021-03-31 7:40 ` Anton Farygin
2021-03-31 10:58 ` Danil Shein
2021-03-31 11:06 ` Anton Farygin
2021-04-01 12:17 ` Anton Farygin
2021-04-01 13:15 ` Danil Shein [this message]
2021-04-01 15:31 ` Anton Farygin
2021-04-08 5:13 ` Anton Farygin
2022-08-15 0:58 ` Vitaly Lipatov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7de22131-8dfb-7537-bcb8-aa166fa09e5e@altlinux.org \
--to=dshein@altlinux.org \
--cc=devel@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git