PostgreSQL Π΄Π°Π²Π½ΠΎ Π·Π°Π²ΠΎΠ΅Π²Π°Π» ΡΠ΅ΠΏΡΡΠ°ΡΠΈΡ ΠΌΠΎΡΠ½ΠΎΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΠ΄Π½Π°ΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ: ΠΊΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ (dump/restore)? ΠΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ pgstream, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ· Xata.io, ΠΏΠΎΠ΄Π΅Π»ΠΈΠ²ΡΠΈΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ½ΡΡΠΈΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Β«ΡΠ½Π°ΠΏΡΠΎΡΠΎΠ²Β» PostgreSQL.
π Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ pgstream ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½?
pgstream β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π·Π°Ρ Π²Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (CDC β Change Data Capture) Π² Π±Π°Π·Π°Ρ Π΄Π°Π½Π½ΡΡ PostgreSQL. ΠΠ½ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ:
- π§© ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° DDL-ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: ΡΡ Π΅ΠΌΠ° ΠΈ Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ.
- π¬ ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Kafka ΠΈ webhook: ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ Π΄Π°Π½Π½ΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- πΈ Π‘Π½Π°ΠΏΡΠΎΡΡ: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΌΠΊΠ° Π±Π°Π·Ρ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- π Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ: ΠΌΠΎΠΆΠ½ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Β«Π½Π° Π»Π΅ΡΡΒ» Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ½Π°ΠΏΡΠΎΡΠΎΠ².
ΠΠΎ Π³Π»Π°Π²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ°Π»Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ½ΡΡΠΈΡ ΡΠ½ΠΈΠΌΠΊΠΎΠ² PostgreSQL, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ³Π½Π°ΡΡ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π³Π½Π°ΡΡ ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ pg_dump ΠΈ pg_restore.
π ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΡΡΡΠΎΠ΅Π½ΠΎ ΡΠ°Π½ΡΡΠ΅ ΠΈ Π² ΡΡΠΌ Π±ΡΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°?
ΠΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ½Π°ΠΏΡΠΎΡΠ° ΡΠΎΡΡΠΎΡΠ» ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π³ΠΎΠ²:
- π ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΡΡΠΈΠ»ΠΈΡΡ PostgreSQL pg_dump/pg_restore.
- ποΈ Π§ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ : ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ PostgreSQL Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ snapshot-ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΈ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΏΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ (ctid). ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»ΡΠ½Π½ΡΠΉ DuckDB ΠΈ PeerDB, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ» ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΠΈΡΠ°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².
- βοΈ ΠΠ°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ : ΠΎΡΠΏΡΠ°Π²Π»ΡΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ INSERT-Π·Π°ΠΏΡΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ β ΡΠΊΠΎΡΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΡΡΠ°Π²Π°Π»Π° ΠΎΡ Β«ΡΠΎΠ΄Π½ΡΡ Β» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² PostgreSQL. π ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»ΡΡΡΠ΅Π½Π½ΡΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ (observability), Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ Π² Π²Π΅ΡΡΠΈΡ pgstream 0.6.0, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π²ΡΡΠ²ΠΈΠ»ΠΈ ΡΠ·ΠΊΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ.
β‘οΈ Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΡΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ Π΄Π»Ρ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ:
- π ΠΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ INSERT: ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ (ΡΠ°ΠΌΡΠΉ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ).
- π’ ΠΠ°ΠΊΠ΅ΡΠ½ΡΠ΅ INSERT (Batch Insert): Π±ΡΡΡΡΠ΅Π΅, Π½ΠΎ Π²ΡΡ Π΅ΡΡ ΡΡΡΡΠΏΠ°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
- π ΠΠΎΠΌΠ°Π½Π΄Π° COPY FROM Π² Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅: ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠ°Ρ Π²ΡΡΠ°Π²ΠΊΠ° Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΡΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ .
ΠΠΎΡΠ»Π΅ ΡΠ΅ΡΠΈΠΈ ΡΠ΅ΡΡΠΎΠ² Π½Π° Π±Π°Π·Π΅ IMDb (~9 ΠΠ, 21 ΡΠ°Π±Π»ΠΈΡΠ°) ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ COPY FROM, ΠΏΠΎΠ»ΡΡΠΈΠ² ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΡΠΎΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ.
π οΈ ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ COPY FROM Π² PostgreSQL:
COPY employees (first_name, last_name, position)
FROM stdin WITH BINARY;
π© ΠΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ (Deferred indexes)
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ Π·Π°ΠΊΠ»ΡΡΠ°Π»ΡΡ Π² ΠΎΡΡΡΠΎΡΠΊΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, Π²Π΅Π΄Ρ PostgreSQL ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ INSERT.
π§ Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ:
- ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ Ρ ΠΎΡΠΊΠ»ΡΡΡΠ½Π½ΡΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΠ°ΠΌΠΈ (ALTER TABLE ... DISABLE TRIGGER ALL).
- ΠΠ°ΡΡΠΎΠ²Π°Ρ Π²ΡΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ΅Π· COPY FROM.
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΠ»Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ pgstream ΠΊ ΡΡΠΎΠ²Π½ΡΠΌ pg_dump/pg_restore, Π° Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠ΅Π²Π·ΠΎΡΠ»Π° ΠΈΡ .
π ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΡΡ ΠΎΠ΄Π½ΠΈΠΌ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π»ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° (batch) Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄Π°Π½Π½ΡΡ , Π° Π½Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΡΠΎΠΊ. Π Π°Π½ΡΡΠ΅ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΎ Π΄ΠΈΡΠ±Π°Π»Π°Π½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΡΠ°Π·Π½ΠΎΠΉ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π°Π²Π°Π»ΠΈ ΡΠ°Π·Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΏΠ°ΠΌΡΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½Π°Ρ, Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π΅Π΅.
π Π§ΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΈ?
Π’Π΅ΡΡΡ Π½Π° Π½Π°Π±ΠΎΡΠ°Ρ Π΄Π°Π½Π½ΡΡ IMDb, MusicBrainz ΠΈ Firenibble ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΈ:
- π― ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ COPY FROM ΠΈ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±Π³ΠΎΠ½ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠ°ΠΊ Ρ pg_dump/pg_restore.
- βοΈ ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ½Π°ΠΏΡΠΎΡΡ ΠΎΡ pgstream ΡΡΠ°Π»ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π΅Π΅ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ΅Π΅ Π΄Π°ΠΆΠ΅ Π½Π° ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡ Π΅ΠΌΠ°Ρ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ°Π±Π»ΠΈΡ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².
π‘ ΠΠΈΡΠ½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ
Π ΡΡΠ°ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΠ»ΠΈ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΡ ΠΊΠ°ΠΊ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ Π΄Π°Π½Π½ΡΡ : ΡΠ°ΡΡΠΎ ΡΠ°ΠΌΡΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π»Π΅ΠΆΠ°Ρ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅, Π½ΠΎ ΠΌΠ°Π»ΠΎΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π‘Π£ΠΠ. COPY FROM β ΡΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ: ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ, Π½ΠΎ Π΅Π³ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½Ρ.
Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΎ Β«ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΒ». ΠΠ΅ΡΠ΅ΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ β ΡΡΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ, Π½ΠΎ Π·Π°ΡΠ°ΡΡΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΎΠ²ΡΡ Π·Π°Π³ΡΡΠ·ΠΎΠΊ.
π ΠΡΠ²ΠΎΠ΄Ρ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ
ΠΠΎΠΌΠ°Π½Π΄Π° pgstream ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π»Π°, ΠΊΠ°ΠΊ ΡΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠ΅ΡΡΡΠ·Π½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°. ΠΠΎΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ°:
- π ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠ°ΠΉΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π²Π°ΠΌΠΈ Π‘Π£ΠΠ ΠΈ Π½Π΅ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π°ΠΉΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΊΠ°ΠΆΡΡΡΡ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌΠΈ.
- ποΈ ΠΠ°ΡΡΠΎΠ²ΡΠ΅ Π²ΡΡΠ°Π²ΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π· COPY FROM β Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ INSERT-Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅.
- π ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ.
pgstream ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΈΠ»ΠΈ ΡΡΠ΅Π΄Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π½ΠΎ ΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΡΠ·Π½ΡΡ ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ·-ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ ΠΊΡΠΈΡΠΈΡΠ½Ρ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ΅ΡΡΡΡΡ.
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
π ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° Xata.io
π ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ pgstream
π Π‘ΡΡΠ°Π½ΠΈΡΠ° PostgreSQL ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ COPY
Π’Π΅ΠΏΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈ ΠΏΡΠΈΡΠΌΡ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠ½Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ PostgreSQL. π