diff --git a/.obsidian/plugins/home-tab/data.json b/.obsidian/plugins/home-tab/data.json index 396619bb..6286ef35 100644 --- a/.obsidian/plugins/home-tab/data.json +++ b/.obsidian/plugins/home-tab/data.json @@ -24,12 +24,16 @@ "unresolvedLinks": false, "recentFilesStore": [ { - "filepath": "_inbox/Consistent hashing.md", - "timestamp": 1720975722279 + "filepath": "_inbox/Шардирование в БД.md", + "timestamp": 1720979905047 }, { - "filepath": "_inbox/Шардирование в БД.md", - "timestamp": 1720975721310 + "filepath": "Решардинг.md", + "timestamp": 1720979834589 + }, + { + "filepath": "_inbox/Consistent hashing.md", + "timestamp": 1720975722279 }, { "filepath": "_inbox/Range Base Sharding.md", @@ -38,10 +42,6 @@ { "filepath": "_inbox/Key Based Sharding.md", "timestamp": 1720975702126 - }, - { - "filepath": "_inbox/Directory Based Sharding.md", - "timestamp": 1720975669145 } ], "bookmarkedFileStore": [], diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index df10a429..2883ac0f 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,13 +1,17 @@ { "recentFiles": [ - { - "basename": "Consistent hashing", - "path": "_inbox/Consistent hashing.md" - }, { "basename": "Шардирование в БД", "path": "_inbox/Шардирование в БД.md" }, + { + "basename": "Решардинг", + "path": "Решардинг.md" + }, + { + "basename": "Consistent hashing", + "path": "_inbox/Consistent hashing.md" + }, { "basename": "Range Base Sharding", "path": "_inbox/Range Base Sharding.md" @@ -20,10 +24,6 @@ "basename": "Directory Based Sharding", "path": "_inbox/Directory Based Sharding.md" }, - { - "basename": "Решардинг", - "path": "Решардинг.md" - }, { "basename": "00 Базы Данных", "path": "wiki/zero/00 Базы Данных.md" diff --git a/_inbox/Consistent hashing.md b/_inbox/Consistent hashing.md index e8cfb3f5..9a0dc94d 100644 --- a/_inbox/Consistent hashing.md +++ b/_inbox/Consistent hashing.md @@ -21,4 +21,7 @@ linked: ## Virtual Nodes (Bucket) Можно попытаться решить проблему неравноморного распределения. Для этого мы добавим виртуальные шарды: для одной ноды определяется несколько точек на круге. -Такой подход используется в [Cassandra](Cassandra.md) \ No newline at end of file +Такой подход используется в [Cassandra](Cassandra.md) + +## Дополнительные материалы +- Есть какая-то библиотека Guava/Sumbur \ No newline at end of file diff --git a/_inbox/Шардирование в БД.md b/_inbox/Шардирование в БД.md index d9889cb1..cc4e81d4 100644 --- a/_inbox/Шардирование в БД.md +++ b/_inbox/Шардирование в БД.md @@ -70,14 +70,14 @@ linked: Как направлять на шарды: - Умный клиент. Приложение само решает в какой шард идти - Нет дополнительной точки отказа. Нет лишнего хопа. - - Как обновлять при изменении количества шардов? -- Прокси - - Сервисы вообще не знают о шардинге - - Дополнительная точка отказа. Лишний хоп. + - Как выполнять [решардинг](Решардинг.md)? - Координатор - Сервисы вообще не знают о шардинге. - Дополнительная точка отказа. Лишний хоп. - Не отдает сами данные, а указывает сервису в какой шард сходить. +- Прокси + - Сервисы вообще не знают о шардинге + - Дополнительная точка отказа. Лишний хоп. Реализации в СУБД: - [Шардирование в PostgreSQL](Шардирование%20в%20PostgreSQL.md) diff --git a/Решардинг.md b/Решардинг.md index 061f6587..b1bae422 100644 --- a/Решардинг.md +++ b/Решардинг.md @@ -14,4 +14,7 @@ linked: Лучше если количество нод будет равно степени 2 (2,4,8). Формула shard_Id % count. - 16 записей на 8 шардов -> 2 записи на шард -- 16 записей на 16 шардов -> 1 запись на шард \ No newline at end of file +- 16 записей на 16 шардов -> 1 запись на шард + +## Заметки +- Что если не переносить записи сразу, а сначала обращаться по новому значению хэш функции, а потом по старому. Таким образом можно в фоне мигрировать данные. \ No newline at end of file