Подтвердить что ты не робот

Разделение базы данных против разбиения

Я недавно читал о масштабируемых архитектурах. В этом контексте два слова, которые продолжают появляться в отношении баз данных, это шардинг и разбиение. Я посмотрел описания, но все еще был в замешательстве.

Могут ли эксперты в stackoverflow помочь мне понять основы?

  • В чем разница между шардингом и разбиением?
  • Правда ли, что "все сегментированные базы данных по существу разделены (по разным узлам), но все разделенные базы данных не обязательно сегментированы"?
4b9b3361

Ответ 1

Разделение - это скорее общий термин для деления данных между таблицами или базами данных. Облицовка - это один конкретный тип разбиения, а именно горизонтальное разбиение.

Смотрите также: http://www.quora.com/Whats-the-difference-between-sharding-and-partition

Ответ 2

Похоже, это отвечает на ваши вопросы:

Горизонтальное разбиение разделяет одну или несколько таблиц по строкам, обычно в пределах одного экземпляра схемы и сервера базы данных. Это может предлагают преимущество за счет уменьшения размера индекса (и, следовательно, усилий поиска) при условии наличия очевидного, надежного, неявного способа идентифицировать в какой таблице будет найден конкретный ряд, без необходимости для поиска индекса, например, классического примера "CustomersEast", и "CustomersWest", где их индекс где они будут найдены.

Sharding выходит за рамки этого: он разбивает проблематичную таблицу (таблицы) в Точно так же, но это происходит через потенциально несколько экземпляров схемы. Очевидным преимуществом будет то, что поисковая нагрузка для большая секционированная таблица теперь может быть разделена на несколько серверов (логический или физический), а не только несколько индексов на одном логическом сервер.

Источник: Wiki-Shard.

Sharding - это процесс хранения записей данных по нескольким машин и подход MongoDBs для удовлетворения требований данных рост. По мере увеличения размера данных одна машина может не быть достаточный для хранения данных и обеспечения приемлемого чтения и записи пропускная способность. Sharding решает проблему с горизонтальным масштабированием. С sharding, вы добавляете больше машин для поддержки роста данных и требований операций чтения и записи.

Источник: MongoDB.

Ответ 3

Я тоже погружался в это, и хотя я, безусловно, ссылка на этот вопрос, есть несколько ключевых фактов, которые я собрал, и указывает, что я хотел бы поделиться:

A partition - это разделение логической базы данных или ее составных элементов на отдельные независимые части. База данных Разбиение обычно выполняется для удобства управления, производительности или доступности, а также для балансировки нагрузки.

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-between-sharding-DB-tables-and-partitioning-them

В руководстве по разбиению базы данных Oracle есть несколько хороших цифр. Я скопировал несколько выдержек из статьи.

https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm

Когда разбивать таблицу

Вот несколько советов о том, когда нужно разбить таблицу:

  • Таблицы размером более 2 ГБ всегда должны рассматриваться как кандидаты для разбиения.
  • Таблицы, содержащие исторические данные, в которые новые данные добавляются в новейший раздел. Типичный пример - это историческая таблица, в которой обновляются только текущие данные месяца, а остальные 11 месяцев - только для чтения.
  • Когда содержимое таблицы должно быть распределено между различными типами устройств хранения.

Обрезка раздела

Обрезка разделов - это самое простое, а также наиболее существенное средство для повышения производительности с использованием разбиения. Обрезка раздела часто может повысить производительность запросов на несколько порядков. Например, предположим, что приложение содержит таблицу Orders, содержащую историческую запись заказов, и что эта таблица была разделена по неделям. Запрос, запрашивающий заказы на одну неделю, будет иметь доступ только к одному разделу таблицы Orders. Если таблица Orders имела 2 года исторических данных, тогда этот запрос имел бы доступ к одному разделу вместо 104 разделов. Этот запрос потенциально может выполняться в 100 раз быстрее просто из-за обрезки разделов.

Стратегии разделения

  • Диапазон
  • Hash
  • List

Вы можете прочитать их текст и визуализировать свои изображения, которые хорошо объясняют все.

И, наконец, важно понимать, что базы данных чрезвычайно ресурсоемкие:

  • процессор
  • Диск
  • I/O
  • Память

Многие DBA будут разбиваться на один и тот же компьютер, где разделы будут делиться всеми ресурсами, но обеспечивают улучшение в диске и вводе-выводе путем разделения данных и/или индекса.

В то время как в других стратегиях будет использоваться архитектура "общего ничего", где осколки будут располагаться на отдельных и отдельных вычислительных устройствах (узлах), имея на себе 100% центрального процессора, диска, ввода-вывода и памяти. Предоставляя ему собственный набор преимуществ и сложностей.

https://en.wikipedia.org/wiki/Shared_nothing_architecture

Ответ 4

Рассмотрим таблицу в базе данных с 1 миллионами строк и 100 столбцами В разделах вы можете разделить таблицу на 2 или более таблиц, имеющих свойство, подобное:

  1. 0,4 миллиона строк (таблица1), 0,6 миллиона строк (таблица2)

  2. 1 миллион строк & 60 столбцов (таблица 1) и 1 миллион строк & 40 столбцов (таблица 2)

    Таких случаев может быть несколько

Это общее разбиение

Но Sharding относится к 1-му случаю, когда мы делим данные на основе строк. Если мы разделяем таблицу на несколько таблиц, нам нужно поддерживать несколько одинаковых копий схем, так как теперь у нас есть несколько таблиц.

Ответ 5

Разделение в особом случае горизонтального разделения, когда разделы охватывают несколько экземпляров базы данных. Если база данных сегментирована, это означает, что она разделена по определению.