Почему «объединения» уменьшают масштабируемость в крупномасштабной системе распределенных баз данных? - PullRequest
6 голосов
/ 30 декабря 2011

Интересно, как и почему «объединение» снижает масштабируемость в крупномасштабной распределенной (реляционной) системе баз данных?

Спасибо.

1 Ответ

8 голосов
/ 02 января 2012

Как общее соображение, существуют значительные накладные расходы (например, вычисления, не связанные с пользователями) в распределенной системе, которые представляют «согласованный» и «унифицированный» фасад.

Просто учтите следующие факторы:

  • отдельные узлы (например, серверы) - это разные машины.Это означает, что вероятность наличия n узлов, участвующих в распределенном действии, например, объединении, в оптимальном состоянии (например, наличие только нужных таблиц в кэше или получение соответствующих блокировок) является низкой.Итак, вот некоторые накладные расходы для каждого узла, чтобы войти в соответствующее состояние.

  • естественно, они должны взаимодействовать, чтобы координировать.Таким образом, между узлами возникает сетевая болтовня, и эти задержки не являются незначительными.

  • сверх накладных расходов, в свою очередь, увеличивают среднее время обслуживания запросов и, таким образом, уменьшают доступность (с точки зрения пропускной способности системы).).

Масштабируемость становится проблемой, поскольку ни один из вышеперечисленных не является O (1).В лучшем случае вы можете ожидать O (log n), и это может быть так же плохо, как O (n ^ 2).Это делает чудеса для уничтожения масштабируемости (что по определению означает способность системы масштабироваться до большего количества узлов).

Вышеуказанное является частью мотивации для систем noSQL, например, если не требуетсякоординация между узлами для обслуживания запросов, тогда производительность значительно выше.(Как видите, это не волшебство - мы просто жертвуем системной корректностью ради производительности.)

...