1.2. Область применения #
Postgres Pro Shardman обеспечивает горизонтальное масштабирование со всеми преимуществами единой базы данных. Приложения могут использовать любой узел для доступа к распределённой базе данных и работать в основном так же, как и с одним экземпляром PostgreSQL. Тем не менее, по сути это распределённая система, в которой существуют определённые правила проектирования схемы и написания запросов. Основное направление внедрения — локализация данных и вычислений.
Следующие свойства базы данных или рабочей нагрузки указывают на потенциальную необходимость перехода на распределённую систему:
Рабочий набор данных не помещается в оперативную память одного сервера. В распределённых системах общий объём оперативной памяти может быть гораздо больше.
Операции технического обслуживания, например очистка, занимают слишком много времени. Shardman сразу использует секционированные таблицы, поэтому операции обслуживания можно распараллеливать по узлам и секциям таблиц.
Слишком большое количество сеансов чтения для одного экземпляра PostgreSQL. Shardman позволяет распределять сеансы чтения по кластеру и очень эффективно обрабатывать внутренние соединения с помощью мультиплексирующего транспорта.
Интенсивные операции записи. Распределённые системы могут работать со значительно большим общим количеством дисковых операций ввода-вывода в секунду.
Запросы с интенсивной вычислительной нагрузкой на процессор. Shardman позволяет распределить вычисления по узлам и сократить время выполнения сложных запросов.
Использовать Postgres Pro Shardman нецелесообразно в следующих случаях:
Вертикальное масштабирование экономически и технически возможно.
Модель данных и рабочая нагрузка требуют большого количества межсегментных транзакций.
Сложная аналитика, в частности объединение сегментированных таблиц в условиях отсутствия ключа сегментирования.
Развёртывание кластера типа Multi-DC/Multi-region.
1.2. When to use #
Postgres Pro Shardman provides horizontal scalability with a view and consistency of a single database. Applications can use every node to access the distributed database and operate mostly the same way as with a single PostgreSQL instance. Still internally it is a distributed system that imposes certain rules on designing schema and writing queries. The main direction of adoption is to localize the data and the computations.
The following properties of a database or workload should be marks to consider a distributed system:
The working set of data does not fit in RAM of one server. Distributed systems can have much bigger total size of RAM.
Maintenance operations such as vacuum take too long. Shardman utilizes partitioned tables under the hood. Maintenance operations can be parallelized by nodes and partitions of tables.
Number of read sessions is too large for one instance of PostgreSQL. Shardman allows to distribute read sessions across the cluster and handle internal connections very efficiently with multiplexing transport.
Intensive write operations. Distributed systems can have much bigger total number of disk IOPS.
CPU intensive queries. Shardman allows to distribute calculations by nodes and reduce execution time for complex queries.
When Postgres Pro Shardman is not appropriate:
Vertical scaling is economically and technically possible.
Data model and workload require a lot of cross-shard transactions.
Complex analytics, in particular joins of sharded tables when conditions don't include the sharding key.
Multi-DC/Multi-region deployments.