diff --git a/.obsidian/plugins/home-tab/data.json b/.obsidian/plugins/home-tab/data.json index 486f5202..516248cb 100644 --- a/.obsidian/plugins/home-tab/data.json +++ b/.obsidian/plugins/home-tab/data.json @@ -25,23 +25,23 @@ "recentFilesStore": [ { "filepath": "_inbox/Шардирование в PostgreSQL.md", - "timestamp": 1720891812342 + "timestamp": 1720891966605 }, { "filepath": "_inbox/Шардирование в БД.md", - "timestamp": 1720891792171 + "timestamp": 1720891915227 + }, + { + "filepath": "Решардинг.md", + "timestamp": 1720891912711 + }, + { + "filepath": "_inbox/Consistent hashing.md", + "timestamp": 1720891856196 }, { "filepath": "_inbox/Согласованное префиксное чтение.md", "timestamp": 1720891715978 - }, - { - "filepath": "_inbox/Партиционирование в БД.md", - "timestamp": 1720891574502 - }, - { - "filepath": "_inbox/Партиционирование в PostgreSQL.md", - "timestamp": 1720890853115 } ], "bookmarkedFileStore": [], diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index 59396ab7..acd5dcd6 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -8,6 +8,14 @@ "basename": "Шардирование в БД", "path": "_inbox/Шардирование в БД.md" }, + { + "basename": "Решардинг", + "path": "Решардинг.md" + }, + { + "basename": "Consistent hashing", + "path": "_inbox/Consistent hashing.md" + }, { "basename": "Согласованное префиксное чтение", "path": "_inbox/Согласованное префиксное чтение.md" @@ -191,14 +199,6 @@ { "basename": "laminat-bez-porogov", "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": [], diff --git a/_inbox/Шардирование в PostgreSQL.md b/_inbox/Шардирование в PostgreSQL.md index 415ce7e3..51850e18 100644 --- a/_inbox/Шардирование в PostgreSQL.md +++ b/_inbox/Шардирование в PostgreSQL.md @@ -10,4 +10,7 @@ parents: - "[[Шардирование в БД]]" linked: --- -В [PostgreSQL](00%20PostgreSQL.md) есть шардирование из коробки, но оно реализовано на базе [партиционирования](Партиционирование%20в%20БД.md). Фактически партиции уезжают на отдельные сервера. Решардинг это боль, так как должен выполняться вручную. \ No newline at end of file +В [PostgreSQL](00%20PostgreSQL.md) есть шардирование из коробки, но оно реализовано на базе [партиционирования](Партиционирование%20в%20БД.md). Фактически партиции уезжают на отдельные сервера. [Решардинг](Решардинг.md) это боль, так как должен выполняться вручную. + +Данные от 2017 года +![](Pasted%20image%2020240713203302.png) \ No newline at end of file diff --git a/_inbox/Шардирование в БД.md b/_inbox/Шардирование в БД.md index 92bf8dcd..34fe2dd5 100644 --- a/_inbox/Шардирование в БД.md +++ b/_inbox/Шардирование в БД.md @@ -37,7 +37,10 @@ linked: - **Трудности с транзакциями и согласованностью**: Шардирование может затруднить обеспечение атомарности и согласованности транзакций, охватывающих несколько шардов, что может потребовать дополнительных усилий для поддержания целостности данных. **Проблемы:** +- [Решардинг](Решардинг.md) - [Согласованное префиксное чтение](Согласованное%20префиксное%20чтение.md) +- Запросы не по ключу пройдут по всем узлам. +- Запросы по диапазону ключей хэширования могут обойти все шарды. - Данные неравномерно распределились. - Попробовать подобрать лучше ключ шардирования/кэш функцию - Решардинг @@ -49,6 +52,7 @@ linked: - [Key Based Sharding](Key%20Based%20Sharding.md). Наиболее распространенный способ. - [Range Base Sharding](Range%20Base%20Sharding.md). - [Directory Based Sharding](Directory%20Based%20Sharding.md) +- [Consistent hashing](Consistent%20hashing.md). Уменьшает боль от [решардинга](Решардинг.md) Роутинг на шарды: - Умный клиент. Приложение само решает в какой шард идти @@ -64,17 +68,6 @@ linked: Реализации в СУБД: - [Шардирование в PostgreSQL](Шардирование%20в%20PostgreSQL.md) -## Решардинг -При добавлении/удалении ноды нужно провести решардинг. Перенести старые данные на новые узлы. - -Лучше если количество нод будет равно степени 2. Формула shard_Id % count. -- 16 записей на 8 шардов -> 2 записи на шард -- 16 записей на 16 шардов -> 1 запись на шард - -- [Consistent hashing](Consistent%20hashing.md) - ## Заметки - Как и в случае [партиционирования](Партиционирование%20в%20БД.md) запросы по ключу шардирования ускорятся. -- Запросы не по ключу пройдут по всем узлам. -- Запросы по диапазону ключей хэширования могут обойти все шарды. - Можно создавать различные индексы на узлах. При этом может оказаться так, что индексы на исходной таблице могут не подойди для шардирования. \ No newline at end of file diff --git a/meta/files/Pasted image 20240713203302.png b/meta/files/Pasted image 20240713203302.png new file mode 100644 index 00000000..7e800037 Binary files /dev/null and b/meta/files/Pasted image 20240713203302.png differ diff --git a/Решардинг.md b/Решардинг.md new file mode 100644 index 00000000..75437d17 --- /dev/null +++ b/Решардинг.md @@ -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 запись на шард \ No newline at end of file