User Tools

Site Tools


db_clustering

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Last revisionBoth sides next revision
db_clustering [2006/07/31 18:47] slonopotamusdb_clustering [2006/07/31 18:54] – добавлена картинка с партишенингом данных slonopotamus
Line 1: Line 1:
-[[start|На главную]] 
-====== Кластеризация БД ====== 
  
-===== Репликация и share-nothing ===== 
-Принцип работы репликации: есть несколько узлов, один из которых является главным. Запросы на выборку отправляются случайному серверу, запросы на изменение данных - главному, который автоматически дублирует их на вторичные сервера. 
-Принцип работы архитектуры share-nothing отличается только тем, что нет явного главного сервера, запросы на запись могут идти любому, который потом распределяет их по всем остальным узлам. 
- 
-{{db_clustering:share-nothing.png}} 
- 
-{{jsf-ru:plus.gif}} Селекты распределяются по нескольким серверам. 
- 
-{{jsf-ru:minus.gif}} Апдейты выполняются на **всех** серверах. 
- 
-{{jsf-ru:minus.gif}} Возвращение упавшего master'а в строй - это целое приключение, требующее остановки базы (в случае репликации). 
- 
-{{jsf-ru:minus.gif}} Добавление новых узлов требует остановки базы (в случае репликации) и копирования на него всех данных (в обоих случаях). 
- 
-{{jsf-ru:minus.gif}} Узкое (и немасштабируемое) место - запись на диск. 
- 
-Реализации: [[http://www-306.ibm.com/software/data/db2/9/edition-enterprise.html|DB2 Enterprise]],[[http://pgcluster.projects.postgresql.org|PGCluster]], [[http://www.mysql.com/products/database/cluster/|MySQL Cluster]]((Список ограничений: http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations.html)), [[http://sequoia.continuent.org|Sequoia]]. 
- 
-===== Партишенинг ===== 
-Принцип работы: данные делятся на куски, каждый из которых лежит на отдельном(ых) серверах. 
- 
-{{jsf-ru:plus.gif}} При дроблении на достаточно мелкие куски можно до бесконечности (теоретически) разделять нагрузку на много серверов. 
- 
-{{jsf-ru:minus.gif}} Добавление новых серверов требует ручной переразбивки данных, что требует остановки базы. 
- 
-{{jsf-ru:minus.gif}} Высокая вероятность отключения отдельных частей данных в случае падения серверов, отвечающих за них. 
- 
-{{jsf-ru:minus.gif}} Неравномерное распределение нагрузки. 
- 
-{{jsf-ru:minus.gif}} Требуется постоянно пересматривать разделение для выравнивания нагрузки на отдельные сервера, что требует остановки базы. 
- 
-{{jsf-ru:minus.gif}} Нетривиальная процедура дампинга. 
- 
-{{jsf-ru:minus.gif}} В случае разбивки таблицы, при запросе не по тому параметру, по которому была разбивка, выполняются броадкасты на все сервера, содержащие части таблицы. 
- 
-{{jsf-ru:minus.gif}} Джойны с участием таблиц, находящихся на разных серверах, приводят к **охренительному** траффику между ними. 
- 
-Реализации: [[http://www-306.ibm.com/software/data/db2/9/edition-enterprise.html|DB2 Enterprise]], [[http://www.mysql.com/products/database/cluster/|MySQL Cluster]]((Список ограничений: http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations.html)), [[http://sequoia.continuent.org|Sequoia]]((Sequoia не умеет выполнять джойны с участием нескольких серверов.)) 
- 
- 
- 
-===== Shared-disk ===== 
-Принцип работы: существует одно дисковое хранилище, к которому присоединено много серверов, **не** хранящих данных, а читающих/пишущих в это хранилище и пользующихся общим кэшем. 
- 
-{{db_clustering:shared_disk.png}} 
- 
-{{jsf-ru:plus.gif}} Элементарное включение новых серверов, без остановки. 
- 
-{{jsf-ru:plus.gif}} База целиком доступна пока работает хотя бы один сервер. 
- 
-{{jsf-ru:minus.gif}} Узкое место - хранилище данных. Но на одно мощное можно и потратиться, в отличие от предыдущих вариантов, где мощная дисковая система должна быть на каждом сервере. 
- 
-Реализации: [[http://www.oracle.com/technology/products/database/clustering|Oracle Real Application Clusters]]. 
- 
-===== Итого ===== 
-Про PGCluster ничего не скажу, потому что почти ничего о нём не знаю. Аналогично с Sequoia, к тому же только для Java. MySQL Cluster, учитывая все его ограничения, совершенно неюзабелен. Остаётся DB2, но идея партишенинга порочна по сути, ну и Oracle, который в Standard Edition'е, начиная с которого оно поддерживает кластеризацию, стоит по $15K на процессор. Вот такая вот неутешительная ситуёвина. 
- 
-===== Ссылки по теме ===== 
-  * [[http://www.oracle.com/technology/products/database/clustering/pdf/twp_rac_10g_vs_db2_v8.2[1].pdf|Сравнение Oracle RAC и DB2]] 
db_clustering.txt · Last modified: 2019/06/12 16:08 by 127.0.0.1