vault backup: 2024-07-15 13:45:03

This commit is contained in:
Struchkov Mark 2024-07-15 13:45:03 +03:00
parent 9b3a542065
commit 7283a36631
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
4 changed files with 23 additions and 24 deletions

View File

@ -23,9 +23,17 @@
"markdownOnly": false, "markdownOnly": false,
"unresolvedLinks": false, "unresolvedLinks": false,
"recentFilesStore": [ "recentFilesStore": [
{
"filepath": "_inbox/Range Base Sharding.md",
"timestamp": 1721040234452
},
{ {
"filepath": "_inbox/Шардирование в БД.md", "filepath": "_inbox/Шардирование в БД.md",
"timestamp": 1721039784200 "timestamp": 1721040232892
},
{
"filepath": "_inbox/Key Based Sharding.md",
"timestamp": 1721040132060
}, },
{ {
"filepath": "_inbox/Партиционирование в БД.md", "filepath": "_inbox/Партиционирование в БД.md",
@ -34,14 +42,6 @@
{ {
"filepath": "_inbox/Партиционирование в PostgreSQL.md", "filepath": "_inbox/Партиционирование в PostgreSQL.md",
"timestamp": 1721039299373 "timestamp": 1721039299373
},
{
"filepath": "Решардинг.md",
"timestamp": 1721037859219
},
{
"filepath": "Home.md",
"timestamp": 1721037621404
} }
], ],
"bookmarkedFileStore": [], "bookmarkedFileStore": [],

View File

@ -1,9 +1,17 @@
{ {
"recentFiles": [ "recentFiles": [
{
"basename": "Range Base Sharding",
"path": "_inbox/Range Base Sharding.md"
},
{ {
"basename": "Шардирование в БД", "basename": "Шардирование в БД",
"path": "_inbox/Шардирование в БД.md" "path": "_inbox/Шардирование в БД.md"
}, },
{
"basename": "Key Based Sharding",
"path": "_inbox/Key Based Sharding.md"
},
{ {
"basename": "Партиционирование в БД", "basename": "Партиционирование в БД",
"path": "_inbox/Партиционирование в БД.md" "path": "_inbox/Партиционирование в БД.md"
@ -44,14 +52,6 @@
"basename": "Consistent hashing", "basename": "Consistent hashing",
"path": "_inbox/Consistent hashing.md" "path": "_inbox/Consistent hashing.md"
}, },
{
"basename": "Range Base Sharding",
"path": "_inbox/Range Base Sharding.md"
},
{
"basename": "Key Based Sharding",
"path": "_inbox/Key Based Sharding.md"
},
{ {
"basename": "Directory Based Sharding", "basename": "Directory Based Sharding",
"path": "_inbox/Directory Based Sharding.md" "path": "_inbox/Directory Based Sharding.md"

View File

@ -21,4 +21,4 @@ linked:
- Равномерное и алгоритмическое распределение. - Равномерное и алгоритмическое распределение.
**Минусы:** **Минусы:**
- Добавление/удаление шарда всегда боль. Так как хэш функция начинает возвращать другие результаты даже для уже имеющихся данных. - [Решардинг](Решардинг.md) всегда боль. Так как хэш функция начинает возвращать другие результаты даже для уже имеющихся данных.

View File

@ -40,7 +40,7 @@ linked:
- [Решардинг](Решардинг.md) - [Решардинг](Решардинг.md)
- [Согласованное префиксное чтение](Согласованное%20префиксное%20чтение.md) - [Согласованное префиксное чтение](Согласованное%20префиксное%20чтение.md)
- При запросе SELECT FROM данные могут отдаться сначала все с одного шарда, потом с другого и так далее. - При запросе SELECT FROM данные могут отдаться сначала все с одного шарда, потом с другого и так далее.
- Запросы не по ключу шардирования пройдут по всем узлам. - Запросы не по ключу шардирования обойдут все узлы.
- Запросы по диапазону ключей хэширования могут обойти все шарды. - Запросы по диапазону ключей хэширования могут обойти все шарды.
- Данные неравномерно распределились. - Данные неравномерно распределились.
- Попробовать подобрать лучше ключ шардирования/кэш функцию - Попробовать подобрать лучше ключ шардирования/кэш функцию
@ -49,9 +49,11 @@ linked:
- Держать нужные данные на одном шарде - Держать нужные данные на одном шарде
- Делать вычисления в одном сервисе - Делать вычисления в одном сервисе
Обычно для распределения по шардам используется какая-то функция шардирования, в которую передается ключ. Как выбрать ключ для шардирования и хэш функцию:
- Определиться, какой функционал для вашего бизнеса самый полезный. Какие запросы нужно выполнить, чтобы этот функционал работал. Как разбить данные так, чтобы данные запросы стали быстрее.
- Подумать о [Решардинг](Решардинг.md). Насколько легко будет добавлять и убирать шарды.
Популярные формулы хэширования: Обычно для распределения по шардам используется какая-то функция шардирования, в которую передается ключ. Популярные формулы хэширования:
- Если ключ цифровой, то можно просто поделить его на количество серверов, получив остаток от деления. Если это строка, то можно взять хэш функцию, которая даст число и уже его делить на количество серверов. - Если ключ цифровой, то можно просто поделить его на количество серверов, получив остаток от деления. Если это строка, то можно взять хэш функцию, которая даст число и уже его делить на количество серверов.
- При изменении количества серверов будет большая головная боль с [решардингом](Решардинг.md), так как придется перетаскивать данные практически со всех шардов. - При изменении количества серверов будет большая головная боль с [решардингом](Решардинг.md), так как придется перетаскивать данные практически со всех шардов.
- Алгоритм crc32. - Алгоритм crc32.
@ -63,9 +65,6 @@ linked:
- [Directory Based Sharding](Directory%20Based%20Sharding.md) - [Directory Based Sharding](Directory%20Based%20Sharding.md)
- [Consistent hashing](Consistent%20hashing.md). Уменьшает боль от [решардинга](Решардинг.md). - [Consistent hashing](Consistent%20hashing.md). Уменьшает боль от [решардинга](Решардинг.md).
Как выбрать ключ для шардирования и хэш функцию:
- Определиться, какой функционал для вашего бизнеса самый полезный. Какие запросы нужно выполнить, чтобы этот функционал работал. Как разбить данные так, чтобы данные запросы стали быстрее.
- Подумать о [Решардинг](Решардинг.md). Насколько легко будет добавлять и убирать шарды.
Как направлять на шарды: Как направлять на шарды:
- Умный клиент. Приложение само решает в какой шард идти - Умный клиент. Приложение само решает в какой шард идти