Глава 29. Логическая репликация
Содержание
Логическая репликация — это метод репликации объектов данных и изменений в них, использующий репликационные идентификаторы (обычно это первичный ключ). Мы называем такую репликацию «логической», в отличие от физической, которая построена на точных адресах блоков и побайтовом копировании. Postgres Pro поддерживает оба механизма одновременно; см. Главу 25. Логическая репликация позволяет более детально управлять репликацией данных и аспектами безопасности.
В логической репликации используется модель публикаций/подписок с одним или несколькими подписчиками, которые подписываются на одну или несколько публикаций на публикующем узле. Подписчики получают данные из публикаций, на которые они подписаны, и могут затем повторно опубликовать данные для организации каскадной репликации или более сложных конфигураций.
Логическая репликация таблицы обычно начинается с создания снимка данных в публикуемой базе данных и копирования её подписчику. После этого изменения на стороне публикации передаются подписчику в реальном времени, когда они происходят. Подписчик применяет изменения в том же порядке, что и узел публикации, так что для публикаций в рамках одной подписки гарантируется транзакционная целостность. Этот метод репликации данных иногда называется транзакционной репликацией.
Типичные сценарии использования логической репликации:
Передача подписчикам инкрементальных изменений в одной базе данных или подмножестве базы данных, когда они происходят.
Срабатывание триггеров для отдельных изменений, когда их получает подписчик.
Объединение нескольких баз данных в одну (например, для целей анализа).
Репликация между разными основными версиями Postgres Pro.
Репликация между экземплярами Postgres Pro на разных платформах (например, с Linux на Windows)
Предоставление доступа к реплицированным данным другим группам пользователей.
Разделение подмножества базы данных между несколькими базами данных.
База данных подписчика функционирует так же, как и любой другой экземпляр базы Postgres Pro, и может стать публикующей, если создать публикации в ней. Когда подписчик действует как исключительно читающее приложение, никаких конфликтов с одной подпиской не будет. Но они могут возникнуть, если в тот же набор таблиц производят запись какие-либо приложения или другие подписчики.
Chapter 33. Large Objects
Table of Contents
- 33.1. Introduction
- 33.2. Implementation Features
- 33.3. Client Interfaces
- 33.3.1. Creating a Large Object
- 33.3.2. Importing a Large Object
- 33.3.3. Exporting a Large Object
- 33.3.4. Opening an Existing Large Object
- 33.3.5. Writing Data to a Large Object
- 33.3.6. Reading Data from a Large Object
- 33.3.7. Seeking in a Large Object
- 33.3.8. Obtaining the Seek Position of a Large Object
- 33.3.9. Truncating a Large Object
- 33.3.10. Closing a Large Object Descriptor
- 33.3.11. Removing a Large Object
- 33.4. Server-side Functions
- 33.5. Example Program
Postgres Pro has a large object facility, which provides stream-style access to user data that is stored in a special large-object structure. Streaming access is useful when working with data values that are too large to manipulate conveniently as a whole.
This chapter describes the implementation and the programming and query language interfaces to Postgres Pro large object data. We use the libpq C library for the examples in this chapter, but most programming interfaces native to Postgres Pro support equivalent functionality. Other interfaces might use the large object interface internally to provide generic support for large values. This is not described here.