Я також занурився в це, і хоча я, безумовно, посилання на це питання, є кілька ключових фактів, які я зібрав, і моменти, якими я хотів би поділитися:
Розділ є поділом логічної бази даних або її складових елементів в різні незалежні частини. Розбиття баз даних, як правило, робиться з причин керованості, продуктивності чи доступності, як і для балансування навантаження.
https://en.wikipedia.org/wiki/Partition_(database)
Шардінг - це тип розподілу, наприклад горизонтальний перегородка (HP)
Існує також вертикальний розподіл (VP), за допомогою якого ви розділите таблицю на менші окремі частини. Нормалізація також передбачає це розбиття стовпців на таблиці, але вертикальний розподіл виходить за рамки цього та стовпців розділів навіть тоді, коли вони вже нормалізовані.
https://en.wikipedia.org/wiki/Shard_(database_architecture)
Мені дуже подобається відповідь Тоні Бако на Quora, де він змушує задуматися з точки зору схеми (а не стовпців та рядків). Він заявляє, що ...
" Горизонтальний розподіл " або розшифровка реплікації [копіювання] схеми та розділення даних на основі клавіші осколка.
" Вертикальний розподіл " передбачає поділ схеми (і дані надходять на пробіжку).
https://www.quora.com/Whats-the-difference-bet between-sharding-DB-tables-and-partitioning-them
Посібник з розділення баз даних Oracle має кілька приємних цифр. Я скопіював кілька уривків із статті.
https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm
Коли розділити таблицю
Ось кілька пропозицій про те, коли розділити таблицю:
- Таблиці, що перевищують 2 Гб, завжди повинні розглядатися як кандидати для розподілу.
- Таблиці, що містять історичні дані, в які нові дані додаються до найновішого розділу. Типовим прикладом є історична таблиця, в якій оновлюються лише дані поточного місяця, а інші 11 місяців - лише для читання.
- Коли вміст таблиці потрібно розподілити на різні типи пристроїв зберігання даних.
Обрізка перегородок
Обрізка перегородок є найпростішим, а також найсуттєвішим засобом підвищення продуктивності за допомогою перегородки. Обрізка розділів часто може покращити ефективність запитів на кілька порядків. Наприклад, припустимо, що програма містить таблицю "Замовлення", що містить історичний запис замовлень, і що ця таблиця була розділена на тиждень. Запит, який запитує замовлення протягом одного тижня, матиме доступ лише до одного розділу таблиці Замовлення. Якщо в таблиці Замовлення були 2 роки історичних даних, то цей запит отримав би доступ до одного розділу замість 104 розділів. Цей запит потенційно може виконуватися в 100 разів швидше просто через обрізку розділів.
Стратегії розподілу
Ви можете прочитати їх текст і візуалізувати їх зображення, які пояснюють все досить добре.
І нарешті, важливо розуміти, що бази даних надзвичайно ресурсомісткі:
Багато DBA будуть розділяти на одній машині, де розділи поділять усі ресурси, але забезпечать поліпшення диска та вводу / виводу шляхом розбиття даних та / або індексу.
У той час як інші стратегії використовуватимуть архітектуру "нічого спільного", де осколки будуть розташовуватися на окремих і чітко виражених обчислювальних одиницях (вузлах), маючи 100% процесора, диска, вводу / виводу та пам'яті для себе. Забезпечення власного набору переваг та складностей.
https://en.wikipedia.org/wiki/Shared_nothing_architecture