vault backup: 2024-07-13 20:35:45

This commit is contained in:
Struchkov Mark 2024-07-13 20:35:45 +03:00
parent 1fbe045ced
commit 3415d013ae
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
6 changed files with 43 additions and 30 deletions

View File

@ -25,23 +25,23 @@
"recentFilesStore": [ "recentFilesStore": [
{ {
"filepath": "_inbox/Шардирование в PostgreSQL.md", "filepath": "_inbox/Шардирование в PostgreSQL.md",
"timestamp": 1720891812342 "timestamp": 1720891966605
}, },
{ {
"filepath": "_inbox/Шардирование в БД.md", "filepath": "_inbox/Шардирование в БД.md",
"timestamp": 1720891792171 "timestamp": 1720891915227
},
{
"filepath": "Решардинг.md",
"timestamp": 1720891912711
},
{
"filepath": "_inbox/Consistent hashing.md",
"timestamp": 1720891856196
}, },
{ {
"filepath": "_inbox/Согласованное префиксное чтение.md", "filepath": "_inbox/Согласованное префиксное чтение.md",
"timestamp": 1720891715978 "timestamp": 1720891715978
},
{
"filepath": "_inbox/Партиционирование в БД.md",
"timestamp": 1720891574502
},
{
"filepath": "_inbox/Партиционирование в PostgreSQL.md",
"timestamp": 1720890853115
} }
], ],
"bookmarkedFileStore": [], "bookmarkedFileStore": [],

View File

@ -8,6 +8,14 @@
"basename": "Шардирование в БД", "basename": "Шардирование в БД",
"path": "_inbox/Шардирование в БД.md" "path": "_inbox/Шардирование в БД.md"
}, },
{
"basename": "Решардинг",
"path": "Решардинг.md"
},
{
"basename": "Consistent hashing",
"path": "_inbox/Consistent hashing.md"
},
{ {
"basename": "Согласованное префиксное чтение", "basename": "Согласованное префиксное чтение",
"path": "_inbox/Согласованное префиксное чтение.md" "path": "_inbox/Согласованное префиксное чтение.md"
@ -191,14 +199,6 @@
{ {
"basename": "laminat-bez-porogov", "basename": "laminat-bez-porogov",
"path": "meta/files/laminat-bez-porogov.jpg" "path": "meta/files/laminat-bez-porogov.jpg"
},
{
"basename": "don-karniz-1-1-min.2cda3db99d204da5e2c26e722e63ea04120",
"path": "meta/files/don-karniz-1-1-min.2cda3db99d204da5e2c26e722e63ea04120.jpg"
},
{
"basename": "Pasted image 20231008173416",
"path": "meta/files/Pasted image 20231008173416.png"
} }
], ],
"omittedPaths": [], "omittedPaths": [],

View File

@ -10,4 +10,7 @@ parents:
- "[[Шардирование в БД]]" - "[[Шардирование в БД]]"
linked: linked:
--- ---
В [PostgreSQL](00%20PostgreSQL.md) есть шардирование из коробки, но оно реализовано на базе [партиционирования](Партиционирование%20в%20БД.md). Фактически партиции уезжают на отдельные сервера. Решардинг это боль, так как должен выполняться вручную. В [PostgreSQL](00%20PostgreSQL.md) есть шардирование из коробки, но оно реализовано на базе [партиционирования](Партиционирование%20в%20БД.md). Фактически партиции уезжают на отдельные сервера. [Решардинг](Решардинг.md) это боль, так как должен выполняться вручную.
Данные от 2017 года
![](Pasted%20image%2020240713203302.png)

View File

@ -37,7 +37,10 @@ linked:
- **Трудности с транзакциями и согласованностью**: Шардирование может затруднить обеспечение атомарности и согласованности транзакций, охватывающих несколько шардов, что может потребовать дополнительных усилий для поддержания целостности данных. - **Трудности с транзакциями и согласованностью**: Шардирование может затруднить обеспечение атомарности и согласованности транзакций, охватывающих несколько шардов, что может потребовать дополнительных усилий для поддержания целостности данных.
**Проблемы:** **Проблемы:**
- [Решардинг](Решардинг.md)
- [Согласованное префиксное чтение](Согласованное%20префиксное%20чтение.md) - [Согласованное префиксное чтение](Согласованное%20префиксное%20чтение.md)
- Запросы не по ключу пройдут по всем узлам.
- Запросы по диапазону ключей хэширования могут обойти все шарды.
- Данные неравномерно распределились. - Данные неравномерно распределились.
- Попробовать подобрать лучше ключ шардирования/кэш функцию - Попробовать подобрать лучше ключ шардирования/кэш функцию
- Решардинг - Решардинг
@ -49,6 +52,7 @@ linked:
- [Key Based Sharding](Key%20Based%20Sharding.md). Наиболее распространенный способ. - [Key Based Sharding](Key%20Based%20Sharding.md). Наиболее распространенный способ.
- [Range Base Sharding](Range%20Base%20Sharding.md). - [Range Base Sharding](Range%20Base%20Sharding.md).
- [Directory Based Sharding](Directory%20Based%20Sharding.md) - [Directory Based Sharding](Directory%20Based%20Sharding.md)
- [Consistent hashing](Consistent%20hashing.md). Уменьшает боль от [решардинга](Решардинг.md)
Роутинг на шарды: Роутинг на шарды:
- Умный клиент. Приложение само решает в какой шард идти - Умный клиент. Приложение само решает в какой шард идти
@ -64,17 +68,6 @@ linked:
Реализации в СУБД: Реализации в СУБД:
- [Шардирование в PostgreSQL](Шардирование%20в%20PostgreSQL.md) - [Шардирование в PostgreSQL](Шардирование%20в%20PostgreSQL.md)
## Решардинг
При добавлении/удалении ноды нужно провести решардинг. Перенести старые данные на новые узлы.
Лучше если количество нод будет равно степени 2. Формула shard_Id % count.
- 16 записей на 8 шардов -> 2 записи на шард
- 16 записей на 16 шардов -> 1 запись на шард
- [Consistent hashing](Consistent%20hashing.md)
## Заметки ## Заметки
- Как и в случае [партиционирования](Партиционирование%20в%20БД.md) запросы по ключу шардирования ускорятся. - Как и в случае [партиционирования](Партиционирование%20в%20БД.md) запросы по ключу шардирования ускорятся.
- Запросы не по ключу пройдут по всем узлам.
- Запросы по диапазону ключей хэширования могут обойти все шарды.
- Можно создавать различные индексы на узлах. При этом может оказаться так, что индексы на исходной таблице могут не подойди для шардирования. - Можно создавать различные индексы на узлах. При этом может оказаться так, что индексы на исходной таблице могут не подойди для шардирования.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

17
Решардинг.md Normal file
View File

@ -0,0 +1,17 @@
---
aliases:
tags:
- зрелость/🌱
date:
- - 2024-07-13
zero-link:
- "[[00 Базы Данных]]"
parents:
- "[[Шардирование в БД]]"
linked:
---
При добавлении/удалении ноды нужно провести решардинг. Перенести старые данные на новые узлы.
Лучше если количество нод будет равно степени 2. Формула shard_Id % count.
- 16 записей на 8 шардов -> 2 записи на шард
- 16 записей на 16 шардов -> 1 запись на шард