50.5. ÐÑоÑокол логиÑеÑкой поÑоковой ÑепликаÑии
Ð ÑÑом Ñазделе опиÑÑваеÑÑÑ Ð¿ÑоÑокол логиÑеÑкой ÑепликаÑии, ÑегламенÑиÑÑÑÑий поÑок ÑообÑений, коÑоÑÑй запÑÑкаеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ÑепликаÑии START_REPLICATION SLOT имÑ_ÑлоÑа LOGICAL.
ÐÑоÑокол логиÑеÑкой поÑоковой ÑепликаÑии поÑÑÑоен на пÑимиÑÐ¸Ð²Ð°Ñ Ð¿ÑоÑокола ÑизиÑеÑкой поÑоковой ÑепликаÑии.
50.5.1. ÐаÑамеÑÑÑ Ð¿ÑоÑокола логиÑеÑкой поÑоковой ÑепликаÑии
Ðоманда логиÑеÑкой ÑепликаÑии START_REPLICATION пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑледÑÑÑие паÑамеÑÑÑ:
- proto_version
ÐеÑÑÐ¸Ñ Ð¿ÑоÑокола. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑолÑко веÑÑиÑ
1.- publication_names
СпиÑок ÑазделÑннÑÑ Ð·Ð°Ð¿ÑÑÑми имÑн пÑбликаÑий, на коÑоÑÑе подпиÑÑваеÑÑÑ ÐºÐ»Ð¸ÐµÐ½Ñ (бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ). Ðмена оÑделÑнÑÑ Ð¿ÑбликаÑий обÑабаÑÑваÑÑÑÑ ÐºÐ°Ðº ÑÑандаÑÑнÑе имена обÑекÑов и могÑÑ Ñак же заклÑÑаÑÑÑÑ Ð² кавÑÑки пÑи Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи.
50.5.2. СообÑÐµÐ½Ð¸Ñ Ð¿ÑоÑокола логиÑеÑкой ÑепликаÑии
ÐÑделÑнÑе ÑообÑÐµÐ½Ð¸Ñ Ð¿ÑоÑокола ÑаÑÑмаÑÑиваÑÑÑÑ Ð² ÑледÑÑÑÐ¸Ñ Ð¿Ð¾Ð´ÑÐ°Ð·Ð´ÐµÐ»Ð°Ñ . СобÑÑвенно ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð² Раздел 50.9.
ÐÑе ÑообÑÐµÐ½Ð¸Ñ Ð²ÐµÑÑ Ð½ÐµÐ³Ð¾ ÑÑÐ¾Ð²Ð½Ñ Ð½Ð°ÑинаÑÑÑÑ Ñ Ð±Ð°Ð¹Ñа, опÑеделÑÑÑего Ñип ÑообÑениÑ. ХоÑÑ Ð¾Ð½ пÑедÑÑавлен в коде ÑимволÑнÑм Ñипом, ÑÑо знаковÑй Ð±Ð°Ð¹Ñ Ð±ÐµÐ· Ñвно заданной кодиÑовки.
Так как в пÑоÑоколе поÑоковой ÑепликаÑии пеÑедаÑÑÑÑ Ð´Ð»Ð¸Ð½Ð° ÑообÑениÑ, Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи ÑказÑваÑÑ Ð´Ð»Ð¸Ð½Ñ Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°Ñ ÑообÑений веÑÑ Ð½ÐµÐ³Ð¾ ÑÑовнÑ.
50.5.3. ÐоÑок ÑообÑений пÑоÑокола логиÑеÑкой ÑепликаÑии
Ðа иÑклÑÑением ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ START_REPLICATION и ÑообÑений о пÑогÑеÑÑе воÑпÑоизведениÑ, веÑÑ Ð¸Ð½ÑоÑмаÑионнÑй поÑок напÑавлен Ð¾Ñ ÑеÑвеÑа к клиенÑÑ.
ÐÑоÑокол логиÑеÑкой ÑепликаÑии пеÑедаÑÑ Ð¾ÑделÑнÑе ÑÑанзакÑии Ð¾Ð´Ð½Ñ Ð·Ð° дÑÑгой. ÐÑо знаÑиÑ, ÑÑо вÑе ÑообÑÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ Ð¿Ð°Ñой ÑообÑений Begin и Commit оÑноÑÑÑÑÑ Ðº одной ÑÑанзакÑии.
ÐÐ°Ð¶Ð´Ð°Ñ Ð¿ÐµÑÐµÐ´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ ÑÑанзакÑÐ¸Ñ ÑодеÑÐ¶Ð¸Ñ Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ более ÑообÑений DML (Insert, Update, Delete). РкаÑкадной ÑÑ ÐµÐ¼Ðµ она Ð¼Ð¾Ð¶ÐµÑ Ñакже ÑодеÑжаÑÑ ÑообÑÐµÐ½Ð¸Ñ Origin. ÐÑо ÑообÑение показÑваеÑ, ÑÑо ÑÑанзакÑÐ¸Ñ Ð¿ÑиÑла Ñ Ð´ÑÑгого Ñзла в ÑÑ ÐµÐ¼Ðµ ÑепликаÑии. Так как ÑÑим Ñзлом в конÑекÑÑе пÑоÑокола логиÑеÑкой ÑепликаÑии Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑо Ñгодно, единÑÑвеннÑм иденÑиÑикаÑоÑом ÑвлÑеÑÑÑ ÐµÐ³Ð¾ имÑ. Ðак воÑпÑинимаÑÑ ÑÑо Ð¸Ð¼Ñ (еÑли ÑÑо вообÑе нÑжно), опÑеделÑÑÑ Ð½Ð¸Ð¶ÐµÑÑоÑÑие ÑзлÑ. СообÑение Origin вÑегда пеÑедаÑÑÑÑ Ð¿ÐµÑед вÑеми оÑÑалÑнÑми ÑообÑениÑми DML в ÑÑанзакÑии.
Ðаждое DML-ÑообÑение ÑодеÑÐ¶Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ (OID) оÑноÑениÑ, коÑоÑÑй ÑказÑÐ²Ð°ÐµÑ Ð½Ð° Ñелевое оÑноÑение на ÑÑоÑоне пÑбликаÑии. ÐеÑед пеÑвÑм DML-ÑообÑением Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ OID оÑноÑÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð¾ÑпÑавлено ÑообÑение Relation, опиÑÑваÑÑее ÑÑ ÐµÐ¼Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ оÑноÑениÑ. ÐпоÑледÑÑвии бÑÐ´ÐµÑ Ð¾ÑпÑавлено новое ÑообÑение Relation, еÑли опÑеделение оÑноÑÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑ Ð¿Ð¾Ñле оÑпÑавки поÑледнего ÑообÑÐµÐ½Ð¸Ñ Relation. (РпÑоÑоколе пÑедполагаеÑÑÑ, ÑÑо ÐºÐ»Ð¸ÐµÐ½Ñ ÑÐ¼Ð¾Ð¶ÐµÑ ÐºÐµÑиÑоваÑÑ Ð¼ÐµÑаданнÑе Ð´Ð»Ñ Ð´Ð¾ÑÑаÑоÑно болÑÑого ÑиÑла оÑноÑений.)
Ð ÑообÑениÑÑ Relation ÑÐ¸Ð¿Ñ ÑÑолбÑов опÑеделÑÑÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑами (OID). ÐÐ»Ñ Ð²ÑÑÑоенного Ñипа пÑедполагаеÑÑÑ, ÑÑо ÐºÐ»Ð¸ÐµÐ½Ñ Ð¼Ð¾Ð¶ÐµÑ ÑазÑеÑиÑÑ ÑÑÐ¾Ñ OID локалÑно, поÑÑÐ¾Ð¼Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ дополниÑелÑнÑе даннÑе не нÑжнÑ. Ðднако Ð´Ð»Ñ Ð»ÑбÑÑ Ð´ÑÑÐ³Ð¸Ñ Ñипов пеÑед ÑообÑением Relation бÑÐ´ÐµÑ Ð¿ÐµÑедаваÑÑÑÑ ÑообÑение Type, ÑвÑзÑваÑÑее Ð¸Ð¼Ñ Ñипа Ñ Ð¾Ð¿ÑеделÑннÑм OID. Таким обÑазом, клиенÑ, коÑоÑÐ¾Ð¼Ñ Ð½Ñжно однознаÑно опÑеделÑÑÑ ÑÐ¸Ð¿Ñ ÑÑолбÑов в оÑноÑении, должен кеÑиÑоваÑÑ ÑодеÑжимое ÑообÑений Type, и в ÑлÑÑае обнаÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑÑенного OID в кеÑе иÑполÑзоваÑÑ ÑÑÑ Ð¸Ð½ÑоÑмаÑиÑ, а в пÑоÑивном ÑлÑÑае ÑазÑеÑаÑÑ ÐµÐ³Ð¾ локалÑно.