Схема базы данных
- 1 year ago
- 0
- 0
Сегментирование ( англ. sharding) — подход, предполагающий разделение баз данных , отдельных её объектов или индексов поисковых систем на независимые сегменты , каждый из которых управляется отдельным экземпляром сервера базы данных , размещаемым, как правило, на отдельном вычислительном узле.
В отличие от секционирования , предполагающего раздельное хранение частей объектов базы данных под управлением единого экземпляра СУБД, сегментирование позволяет задействовать технику распределённых вычислений , но при этом более сложно в реализации, так как требует обеспечения координации множества экземпляров таким образом, чтобы взаимодействие со всей совокупностью сегментов велось как с единой базой данных.
Некоторые данные в базе могут присутствовать во всех сегментах, а некоторые могут находиться только в одном или нескольких сегментах. Например, небольшие таблицы, используемые в качестве медленно меняющихся измерений , могут быть представлены в каждом сегменте полностью, а большие таблицы фактов равномерно разбиты по какому-либо ключу по сегментам. Наличие часто используемых данных во всех сегментах позволяет более эффективно выполнять операции с ними, при этом требуется обеспечение синхронного их обновления на всех сегментах.
Техника сегментирования широко используется в NoSQL -СУБД (таких, как Cassandra , Couchbase , MongoDB ), массово-параллельных аналитических СУБД ( Teradata Database , Netezza , Greenplum ), горизонтально-масштабируемых поисковых системах ( Elasticsearch , Solr ). Также техника реализована в некоторых традиционных реляционных СУБД (опция Sharding в Oracle Database ). Для СУБД, не поддерживающих сегментирование, для реализации подобной техники организуется маршрутизация запросов к нескольким экземплярам СУБД со стороны приложения; существует несколько проектов связующего программного обеспечения , реализующего прозрачное сегментирование (, , , для MariaDB ).