From 5cc7adae03d6a18afab0e008de6d152ebbff29cf Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Thu, 20 Jun 2024 21:54:23 +0300 Subject: [PATCH] vault backup: 2024-06-20 21:54:23 --- .obsidian/plugins/home-tab/data.json | 28 +++++++++---------- .../plugins/recent-files-obsidian/data.json | 24 ++++++++-------- _inbox/Куб масштабирования приложений.md | 2 +- _inbox/Репликация master-master.md | 2 +- _inbox/Репликация БД.md | 2 +- _inbox/Согласованное префиксное чтение.md | 2 +- .../{Шардирование.md => Шардирование в БД.md} | 11 ++++++-- wiki/zero/00 HighLoad.md | 2 +- Партиционирование в БД.md | 4 ++- 9 files changed, 43 insertions(+), 34 deletions(-) rename _inbox/{Шардирование.md => Шардирование в БД.md} (87%) diff --git a/.obsidian/plugins/home-tab/data.json b/.obsidian/plugins/home-tab/data.json index bfe7a374..b3bf17f1 100644 --- a/.obsidian/plugins/home-tab/data.json +++ b/.obsidian/plugins/home-tab/data.json @@ -24,24 +24,24 @@ "unresolvedLinks": false, "recentFilesStore": [ { - "filepath": "Партиционирование.md", - "timestamp": 1718909133656 + "filepath": "_inbox/Шардирование в БД.md", + "timestamp": 1718909535878 + }, + { + "filepath": "_inbox/Горизонтальное масштабирование.md", + "timestamp": 1718909530869 + }, + { + "filepath": "_inbox/Вертикальное масштабирование.md", + "timestamp": 1718909525308 + }, + { + "filepath": "Партиционирование в БД.md", + "timestamp": 1718909422727 }, { "filepath": "_inbox/Шардирование - OTUS.md", "timestamp": 1718908901467 - }, - { - "filepath": "_inbox/Шардирование.md", - "timestamp": 1718908873063 - }, - { - "filepath": "_inbox/Вертикальное масштабирование.md", - "timestamp": 1718908853473 - }, - { - "filepath": "_inbox/Согласованное префиксное чтение.md", - "timestamp": 1718908758111 } ], "bookmarkedFileStore": [], diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index b9c4de31..4f8e7f1a 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,5 +1,17 @@ { "recentFiles": [ + { + "basename": "Шардирование в БД", + "path": "_inbox/Шардирование в БД.md" + }, + { + "basename": "Горизонтальное масштабирование", + "path": "_inbox/Горизонтальное масштабирование.md" + }, + { + "basename": "Вертикальное масштабирование", + "path": "_inbox/Вертикальное масштабирование.md" + }, { "basename": "Партиционирование в БД", "path": "Партиционирование в БД.md" @@ -8,14 +20,6 @@ "basename": "Шардирование - OTUS", "path": "_inbox/Шардирование - OTUS.md" }, - { - "basename": "Шардирование", - "path": "_inbox/Шардирование.md" - }, - { - "basename": "Вертикальное масштабирование", - "path": "_inbox/Вертикальное масштабирование.md" - }, { "basename": "Согласованное префиксное чтение", "path": "_inbox/Согласованное префиксное чтение.md" @@ -195,10 +199,6 @@ { "basename": "Java Разработка", "path": "knowledge/dev/java/Java Разработка.md" - }, - { - "basename": "Adaptive Replacement Cache", - "path": "_inbox/Adaptive Replacement Cache.md" } ], "omittedPaths": [], diff --git a/_inbox/Куб масштабирования приложений.md b/_inbox/Куб масштабирования приложений.md index 228d1480..abb3af40 100644 --- a/_inbox/Куб масштабирования приложений.md +++ b/_inbox/Куб масштабирования приложений.md @@ -22,7 +22,7 @@ linked: Маршрутизатор, выставленный впереди, задействует атрибут запроса, чтобы на­ править его к подходящему экземпляру. Для этого, к примеру, можно использовать поле userid. -> Похоже на [Шардирование](Шардирование.md) +> Похоже на [Шардирование в БД](Шардирование%20в%20БД.md) ![](Pasted%20image%2020240412202007.png) diff --git a/_inbox/Репликация master-master.md b/_inbox/Репликация master-master.md index 6720cea9..c5e9b0c9 100644 --- a/_inbox/Репликация master-master.md +++ b/_inbox/Репликация master-master.md @@ -23,7 +23,7 @@ linked: **Минусы:** - Нет консистентности, есть конфликты. - Усложнение логики. Встречается редко. -- Не масштабирует запись. Для масштабирования нужно использовать [шардирование](Шардирование.md). +- Не масштабирует запись. Для масштабирования нужно использовать [шардирование](Шардирование%20в%20БД.md). **Варианты применения:** - Географическая распределенность. Репликация между ЦОД. diff --git a/_inbox/Репликация БД.md b/_inbox/Репликация БД.md index 3a0992c5..650270ed 100644 --- a/_inbox/Репликация БД.md +++ b/_inbox/Репликация БД.md @@ -34,7 +34,7 @@ linked: **Для чего делают репликацию?** - Увеличение [High Availability](High%20Availability.md) БД. Одна БД падает, ее заменяет реплика. -- Позволяет получить масштабирование чтения, но ==не позволяет получить масштабирование операций вставки.== Для масштабирования вставки используется [Шардирование](Шардирование.md). +- Позволяет получить масштабирование чтения, но ==не позволяет получить масштабирование операций вставки.== Для масштабирования вставки используется [Шардирование в БД](Шардирование%20в%20БД.md). - Чтобы делать асинхронное [резервное копирование БД](Резервные%20копии%20БД.md) - Чтобы распределить нагрузку. Например перенести сложные запросы построения отчетов на отдельную реплику. diff --git a/_inbox/Согласованное префиксное чтение.md b/_inbox/Согласованное префиксное чтение.md index 2dbaade3..a11b8373 100644 --- a/_inbox/Согласованное префиксное чтение.md +++ b/_inbox/Согласованное префиксное чтение.md @@ -10,7 +10,7 @@ parents: - "[[Репликация БД]]" linked: --- -Ситуация, которая возникает при наличии нескольких master-ов или при [Шардирование](Шардирование.md). +Ситуация, которая возникает при наличии нескольких master-ов или при [Шардирование в БД](Шардирование%20в%20БД.md). У нас есть 2 участника чата и один сторонний наблюдатель. Сначала один пользователь пишет в чат, а следом другой пользователь пишет в чат. Далее наблюдатель читает сообщения из реплики, в которую сначала пришло второе сообщение, а потом только первое. diff --git a/_inbox/Шардирование.md b/_inbox/Шардирование в БД.md similarity index 87% rename from _inbox/Шардирование.md rename to _inbox/Шардирование в БД.md index f779257d..c487290a 100644 --- a/_inbox/Шардирование.md +++ b/_inbox/Шардирование в БД.md @@ -10,7 +10,14 @@ zero-link: - "[[00 Базы Данных]]" parents: linked: + - "[[Партиционирование в БД]]" --- +## Тезисы +- Один из вариантов масштабирования +- Данные разбиваются на части. Части размещаются на разных серверах. +- Не является [репликацией](_inbox/Репликация.md) и [партиционированием](Партиционирование%20в%20БД.md) +*** + Шардирование — это метод разделения и распределения больших объёмов данных по разным базам данных или узлам в рамках одной распределённой системы, чтобы облегчить их управление, обеспечить масштабируемость и повысить производительность. Каждая часть данных, или "шард", функционирует как отдельная база данных, и все шарды вместе образуют логически единую базу данных. Основные принципы шардирования включают в себя: @@ -20,8 +27,8 @@ linked: - **Локализация данных**: Шардирование может быть использовано для локализации данных, чтобы уменьшить задержки, связанные с географическим расположением пользователей и баз данных. **Плюсы:** -- **Масштабируемость**: Шардирование позволяет системе расти горизонтально, добавляя больше шардов для управления увеличивающимися объемами данных, что делает его эффективным решением для крупных и растущих систем. -- **Улучшение производительности**: Разделение данных на шарды позволяет распределить нагрузку между серверами, что снижает задержки и увеличивает скорость обработки запросов за счет параллельной обработки. +- [Горизонтальное масштабирование](Горизонтальное%20масштабирование.md) +- **Улучшение производительности**: Единственный мет - **Высокая доступность и устойчивость к отказам**: Отказ одного шарда не приводит к полному сбою системы. Данные в остальных шардах остаются доступными, что повышает общую устойчивость системы к отказам. - **Географическое распределение данных**: Шардирование позволяет располагать данные ближе к пользователям, что может снижать задержки и улучшать взаимодействие с приложением. diff --git a/wiki/zero/00 HighLoad.md b/wiki/zero/00 HighLoad.md index 245c1df5..b985803f 100644 --- a/wiki/zero/00 HighLoad.md +++ b/wiki/zero/00 HighLoad.md @@ -35,7 +35,7 @@ parents: - Использование толстого клиента - [Кэширование](Кэширование.md) - [Функциональное разделение](Функциональное%20разделение.md) -- [Шардинг](Шардирование.md) +- [Шардинг](Шардирование%20в%20БД.md) - Виртуальные шарды - Центральный диспетчер - [Репликация](_inbox/Репликация.md) diff --git a/Партиционирование в БД.md b/Партиционирование в БД.md index f2261021..ee76153a 100644 --- a/Партиционирование в БД.md +++ b/Партиционирование в БД.md @@ -6,16 +6,18 @@ date: - - 2024-06-20 zero-link: - "[[00 Базы Данных]]" + - "[[00 HighLoad]]" parents: linked: + - "[[Шардирование в БД]]" --- - Берем данные и разделяем по какому-то признаку - Разделенные данные физически лежат отдельно. Разные таблицы - Но все данные остаются в пределах одного сервера. **Минусы:** +- Некоторые запросы могут замедлиться. Кросс-партиционные запросы. - Так как данные лежат на одном сервере, то если уперлись в производительность диска, партиционирование не поможет. -- Некоторые запросы могут замедлиться. **Плюсы:** - Некоторые типы запросов может ускорить за счет уменьшения объема данных в партиции.