1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/sgoby-myhub

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_ZH.md 7.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:10 982742c

password — хост-сервер MySQL, логин и пароль;

host — вес (весовой коэффициент) для чтения из библиотеки; dataBase — имя хоста базы данных; dataBase -> name — название базы данных на узле, соответствует dataBase -> host; dataBase -> maxOpenConns — максимальное количество подключений к базе данных, по умолчанию 16; dataBase -> maxIdleConns — максимально допустимое количество незанятых подключений к базе данных, по умолчанию 4; dataBase -> maxIdleTime — максимальное время простоя подключения к базе данных (в секундах), по умолчанию 60.

Логическая конфигурация схемы:

Добавить две логические базы данных: db1, test_1; В db1 добавить три логических таблицы: dealer_info, cash_record, api_log;

<schema>
    <dataBase name="db1" proxyDataBase="lb_ss" blacklistSql="blacklist/db1.sql">
        <!--  rule: hash | range | date_month | date_day  -->
        <table name="dealer_info" ruleKey="id" rule="rang_1" createSql="dealer_info.sql"/>
        <table name="cash_record" ruleKey="add_time" rule="rang_2" createSql="cash_record.sql"/>
        <table name="api_log" ruleKey="id" rule="hash_1" createSql="api_log.sql"/>
    </dataBase>
    <!-- 直接代理 -->
    <dataBase name="test_1" proxyDataBase="test"/>
</schema>

Параметры: — dataBase — логическая база данных; — dataBase -> name — уникальное имя базы данных Myhub; — dataBase -> proxyDataBase — имя прокси-базы данных узла; — dataBase -> blacklistSql — SQL-оператор чёрного списка, значением может быть путь к файлу SQL. Несколько операторов SQL разделяются символом «;», «?» обозначает подстановочный знак, например delete from user where id = ?; — table — логическая таблица; — table -> name — имя таблицы (уникальное); — table -> ruleKey — поле, от которого зависит разделение таблицы; — table -> rule — правило разделения таблицы, см. правила; — table -> createSql — оператор SQL для автоматического создания разделения таблицы, значением также может быть путь к файлу SQL.

Конфигурация правил разделения:

Myhub в настоящее время поддерживает три правила разделения:

  1. Фиксированное разделение (hash): Это правило использует операцию по модулю rowLimit для разделения данных на равные части. Если поле разделения (ruleKey) является числовым типом, то используется операция по модулю; если это символьный тип, сначала вычисляется хэш-код, а затем выполняется операция по модулю. Это правило позволяет размещать смежные данные в одной и той же части, что упрощает управление транзакциями при вставке.
  2. Разделение по диапазону (range): Это правило подходит для заранее запланированного разделения поля разделения на определённые диапазоны, где start <= range < end.
  3. Разделение по дате (год, месяц, день): Это правило позволяет разделить данные по годам, месяцам или дням. Можно разделить данные на периоды, например, можно разделить каждые 7 дней (rowLimit = "7d") на разные части, аналогично можно сделать и с другими периодами.
<rules>
    <rule name="rang_1" ruleType="range" format="%04d">
        <!-- tableRowLimit : 2d,m,y,h-->
        <shard nodeDataBase="test" rowLimit="10000" between="1-8" />
        <shard nodeDataBase="shard_01" rowLimit="10000" between="8-10" />
    </rule>
    <rule name="rang_2" ruleType="date" format="ym">
        <!-- tableRowLimit : 2d,m,y,h-->
        <shard nodeDataBase="test" rowLimit="1m" between="201801-201901" />
    </rule>
    <!-- 'maxLen' represents the count of hash shard total, default 1024 -->
    <rule name="hash_1" ruleType="hash" format="%04d"  maxLen = "12">
        <!-- 'rowLimit' represents every shard table continuous rows count split by 'ruleKey', default 1;
             'between' represents the hash mod value range. ex:'between="0-3",ruleKey's value is 10,
             and 'maxlen'= 10, 10%3 = 1,it menas in the between  0-3 -->
        <shard nodeDataBase="test" rowLimit="2" between="0-6" />
        <shard nodeDataBase="shard_01" rowLimit="2" between="6-12" />
    </rule>
</rules>

Параметры: — rule — правило; — name (обязательно) — имя правила, которое будет использоваться в конфигурации логической библиотеки таблиц; — ruleType (обязательно) — правило разделения [range|hash|date]; — format (необязательно) — суффикс имени автоматически созданной таблицы. (1. Если правило разделения — range или hash, формат — %d, например: format = "%04d", созданное имя таблицы — table_0001; (2. Если правило разделения — date, формат — [y|m|d], который может быть комбинацией, например: формат = "ym", созданное имя таблицы — table_201805; — maxLen (необязательно) — используется только в правиле hash, представляет собой модуль числа в операции по модулю; — shard — правило разделения; — shard -> nodeDataBase — имя базы данных узла, соответствующее конфигурации узла dataBase -> name; — shard -> rowLimit — ограничение количества строк для каждой разделяемой таблицы, конкретное значение для каждого правила разделения следующее: (1. range — количество строк для каждой разделённой таблицы, значение — числовое; (2. date — количество строк, разделённых по времени, значение — числовое или комбинация [y|m|d]; (3. hash — остаток от деления количества строк на модуль, значение — числовое. Например, rowLimit = "2", 10 % 0 и 10 % 1 находятся в одной таблице; — shard -> between — диапазон ограничения данных в узле.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/sgoby-myhub.git
git@api.gitlife.ru:oschina-mirror/sgoby-myhub.git
oschina-mirror
sgoby-myhub
sgoby-myhub
master