From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=ALL_TRUSTED,BAYES_00, FUZZY_XPILL autolearn=no autolearn_force=no version=3.4.1 To: devel@lists.altlinux.org References: <32d3ca33-a1ed-ba90-2583-1bae3dcdb5f0@altlinux.org> <979f1e23-aa85-1476-59e2-67db933d812a@basealt.ru> <578e0a83-62bc-ca72-2171-3fb3d9c034ca@altlinux.org> <10866469-c138-402e-4362-64aed07ee5af@altlinux.org> <2d65a61b-6272-4918-77f8-0853048a3240@basealt.ru> From: Danil Shein Message-ID: <7de22131-8dfb-7537-bcb8-aa166fa09e5e@altlinux.org> Date: Thu, 1 Apr 2021 16:15:38 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 MIME-Version: 1.0 In-Reply-To: <2d65a61b-6272-4918-77f8-0853048a3240@basealt.ru> Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru Subject: Re: [devel] =?utf-8?b?YWx0cmVwb2RiIC0g0LDRgNGF0LjRgtC10LrRgtGD0YA=?= =?utf-8?b?0LAg0JHQlA==?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Apr 2021 13:15:44 -0000 Archived-At: List-Archive: List-Post: После изменения первичного ключа и полей группировки получим существенное уменьшение объёма (почти в 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