ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, Π΄ΡΡΠ·ΡΡ. ΠΠ΅ΡΠ΅Π΄ ΡΡ
ΠΎΠ΄ΠΎΠΌ Π½Π° Π²ΡΠΎΡΡΡ ΡΠ°ΡΡΡ ΠΌΠ°ΠΉΡΠΊΠΈΡ
ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊΠΎΠ² Π΄Π΅Π»ΠΈΠΌΡΡ Ρ Π²Π°ΠΌΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π»ΠΈ Π² ΠΏΡΠ΅Π΄Π΄Π²Π΅ΡΠΈΠΈ Π·Π°ΠΏΡΡΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠΎ ΠΊΡΡΡΡ
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡΠ°ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
Π±Π°Π· Π΄Π°Π½Π½ΡΡ
, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ, Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ. ΠΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ Π²ΡΠ±ΠΎΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, SQL ΠΈΠ»ΠΈ NoSQL, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠΎΠ². ΠΡΡΠΎΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π½ΠΈΠ·ΠΊΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠ΅Π΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠΎΠ², ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΌ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· Π²ΡΠ±ΠΎΡΠΊΠΈ.
Π¦Π΅Π»Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ β ΠΏΠΎΠΌΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ SQL ΠΈ NoSQL Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠ΄Π½Ρ SQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π° ΠΈΠΌΠ΅Π½Π½ΠΎ PostgreSQL ΠΈ Π΄Π²Π΅ NoSQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ β Cassandra ΠΈ MongoDB, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ ΠΎΡΠ½ΠΎΠ²Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ, ΠΈΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΈΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, JOINβΡ, Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ TTL ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ JSON.
Π ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ SQL ΠΎΡ NoSQL?
SQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ²ΡΡΠ°ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΠΌ ACID, Π° ΡΠ°ΠΊΠΆΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JOIN Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΠΏΠΎΠ²Π΅ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ .
Π£ΡΠΈΡΡΠ²Π°Ρ ΠΈΡ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΡ/ΠΎΠ΄Π½ΠΎΡΠ·Π»ΠΎΠ²ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ master-slave Π΄Π»Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΠΈ, ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ SQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π΄Π²ΡΡ Π²Π°ΠΆΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ β Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ (Ρ.Π΅. Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ·Π»ΠΎΠ²) ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ/Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΏΠΎΡΠ΅ΡΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π°. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠΎΡΠ΅ΡΡ Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠ΅Π½Π° ΠΏΡΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ (Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ Π±Π΅Π· ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ²). ΠΠ΄Π΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π΅ΡΠ΅ Π½Π΅ ΠΎΡΡΠ°Π·ΠΈΠ»ΠΈΡΡ Π² ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΠΎΠΉ (slave) ΠΊΠΎΠΏΠΈΠΈ. ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π΅Π· ΠΏΡΠΎΡΡΠΎΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΄Π½ΠΎΠ΄ΠΎΡΡΠΈΠΆΠΈΠΌΡ Π² SQL Π±Π°Π·Π°Ρ Π΄Π°Π½Π½ΡΡ .
NoSQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ Π½Π°ΡΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅, Ρ.Π΅. Π² Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΡΠ΅ΠΊΡΠΈΠΈ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ·Π»Π°ΠΌ. ΠΠ½ΠΈ ΡΡΠ΅Π±ΡΡΡ Π΄Π΅Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΏΠΎΡΡΠ»Π°Π΅ΡΠ΅. ΠΠ±ΡΠ°Ρ ΡΠ΅Π»Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°ΡΠ΄ΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½ΠΈΡ. ΠΡΡΡΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΡΠΎ NoSQL ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ Π²Π°Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ Π·Π°ΠΏΡΠΎΡΡ, Π° ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ SQL ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅.
NoSQL Π°ΠΊΡΠ΅Π½ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΈ ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΠΏΠΎΡΠ΅ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ACID, JOINβΡ ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ Π²ΡΠΎΡΠΈΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½Π΅Π½ΠΈΠ΅, ΡΡΠΎ, Ρ ΠΎΡΡ NoSQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π²ΡΡΠΎΠΊΡΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ, ΠΏΠΎΡΠ΅ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡ Π½Π΅ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΡ Π΄Π°Π½Π½ΡΡ .
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² NoSQL ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ SQL.
SQL ΠΈ NoSQL: ΠΠΎΡΠ΅ΠΌΡ Π½ΡΠΆΠ½Ρ ΠΎΠ±Π΅?
ΠΠ° ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Amazon.com, Netflix, Uber ΠΈ Airbnb Π»Π΅ΠΆΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ°Π·Π½ΠΎΡΠΎΡΡΠ½ΡΡ Π·Π°Π΄Π°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΡΠΎΡΠ³ΠΎΠ²Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌΡ Amazon.com Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠ΅, Π²ΡΡΠΎΠΊΠΎ-ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡ , ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ , Π·Π°ΠΊΠ°Π·Π°Ρ , ΡΡΠ΅ΡΠ°Ρ -ΡΠ°ΠΊΡΡΡΠ°Ρ , Π½Π°ΡΡΠ΄Ρ Ρ ΡΡΠΆΠ΅Π»ΡΠΌΠΈ, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΎΠ±Π·ΠΎΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ², ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ»ΡΠΆΠ±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΎΡΠ·ΡΠ²Ρ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π½Π° ΠΎΠ΄Π½Ρ SQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½Π°ΡΡΠ΄Ρ Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄Π½ΠΎΠΉ NoSQL Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ . Π ΠΌΠ΅ΠΆΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , NoSQL Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π³Π΅ΠΎΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΠ° Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ , Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΡ Π² Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΠΎΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅, SQL Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅.
ΠΠ°ΠΊ YugaByte DB ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ SQL ΠΈ NoSQL?
ΠΠΎΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π½Π° Π»ΠΎΠ³-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠΌ Π΄Π²ΠΈΠΆΠΊΠ΅ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ, Π°Π²ΡΠΎ-ΡΠ°ΡΠ΄ΠΈΠ½Π³Π΅, ΡΠ°ΡΠ΄ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡΠ½ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ ACID (Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Google Spanner), YugaByte DB ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π² ΠΌΠΈΡΠ΅ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ NoSQL (Cassandra & Redis) ΠΈ SQL (PostgreSQL). ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅, YCQL, API YugaByte DB ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ΅ Ρ Cassandra, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΎΠ΄Π½ΠΎ- ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ACID ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ Π²ΡΠΎΡΠΈΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² API NoSQL, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΎΡΠΊΡΡΠ²Π°Ρ ΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΡ NoSQL Π±Π°Π· Π΄Π°Π½Π½ΡΡ . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, YCQL, API YugaByte DB ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ΅ Ρ PostgreSQL, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΠΈΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ ΠΊ SQL API, ΡΠ²Π»ΡΡ ΠΌΠΈΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ SQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ YugaByte DB ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΠΉ, ΡΠΎ API NoSQL ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΠΊ ΡΠ°Π½Π΅Π΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΡΠ°ΡΡΠ΅
- ΠΡΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° β ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ JOINβΠ°ΠΌΠΈ, ΡΠΎ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ YSQL, ΠΏΠΎΠ½ΠΈΠΌΠ°ΠΉΡΠ΅, ΡΡΠΎ Π²Π°ΡΠΈ ΠΊΠ»ΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ·Π»Π°ΠΌ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠ΅ ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, ΡΠ΅ΠΌ Π² NoSQL.
- Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π΄Π²ΡΡ NoSQL API, ΠΏΠΎΠΌΠ½Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π° Π·Π° ΡΠ°Π·. YugaByte DB ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠΈΠΌΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
Π ΠΎΡΠ½ΠΎΠ²Π΅ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
(Data modeling lab) Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π»Π΅ΠΆΠ°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ Ρ PostgreSQL ΠΈ Cassandra API Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
YugaByte DB Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
Π±Π°Π· Π΄Π°Π½Π½ΡΡ
. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π΄Π²ΡΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ API (Π½Π° Π΄Π²ΡΡ
ΡΠ°Π·Π½ΡΡ
ΠΏΠΎΡΡΠ°Ρ
) ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π±Π°Π· Π΄Π°Π½Π½ΡΡ
Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² Π΄Π²ΡΡ
ΡΠ°Π·Π½ΡΡ
Π±Π°Π· Π΄Π°Π½Π½ΡΡ
.
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠ°Π·Π΄Π΅Π»Π°Ρ
ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠΈΠ΅ ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ
Π±Π°Π· Π΄Π°Π½Π½ΡΡ
.
ΠΠ°Π±ΠΎΡΠ°ΡΠΎΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±Π°Π· Π΄Π°Π½Π½ΡΡ
Π£ΡΠΈΡΡΠ²Π°Ρ Π°ΠΊΡΠ΅Π½Ρ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½ΡΡ (Π° Π½Π΅ Π½Π° ΡΠ»ΠΎΠΆΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ), ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π° Π·Π°ΡΠ΅ΠΌ Π±ΡΠ΄Π΅ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π½ΠΈΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ°Ρ Ρ PostgreSQL & Cassandra, Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ YugaByte DB
mkdir ~/yugabyte && cd ~/yugabyte
wget https://downloads.yugabyte.com/yb-docker-ctl && chmod +x yb-docker-ctl
docker pull yugabytedb/yugabyte
./yb-docker-ctl create --enable_postgres
MongoDB
docker run --name my-mongo -d mongo:latest
ΠΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌΡΡ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ API.
PostgreSQL
docker exec -it yb-postgres-n1 /home/yugabyte/postgres/bin/psql -p 5433 -U postgres
Cassandra
cqlsh
Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ bin
.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ CQL Π±ΡΠ» Π²Π΄ΠΎΡ
Π½ΠΎΠ²Π»Π΅Π½ SQL ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΡΠ°Π±Π»ΠΈΡ, ΡΡΡΠΎΠΊ, ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ NoSQL, ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΠΎ Π΄ΡΡΠ³ΠΈΡ
ΡΡΠ°ΡΡΡΡ
.
docker exec -it yb-tserver-n1 /home/yugabyte/bin/cqlsh
MongoDB
docker exec -it my-mongo bash
cd bin
mongo
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ΅ΡΠ½ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠΌΠΈ. ΠΡΠΈ ΠΏΠ΅ΡΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΡΡΡΡ Π°Π»ΡΠ±ΠΎΠΌΠ°. Π’Π°ΠΊΠΆΠ΅ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ½ΠΈ β Π³ΠΎΠ΄ Π²ΡΠΏΡΡΠΊΠ°, ΡΠ΅Π½Π°, ΠΆΠ°Π½Ρ ΠΈ ΡΠ΅ΠΉΡΠΈΠ½Π³. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»Π΅ Β«ΡΠ΅Π³ΠΈΒ». ΠΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
PostgreSQL
CREATE TABLE Music (
Artist VARCHAR(20) NOT NULL,
SongTitle VARCHAR(30) NOT NULL,
AlbumTitle VARCHAR(25),
Year INT,
Price FLOAT,
Genre VARCHAR(10),
CriticRating FLOAT,
Tags TEXT,
PRIMARY KEY(Artist, SongTitle)
);
Cassandra
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π² Cassandra ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° PostgreSQL. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, NOT NULL), Π½ΠΎ ΡΡΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π·ΠΎΠ½Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ NoSQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΊΠ»ΡΡΠ° ΡΠ°Π·Π΄Π΅Π»Π° (ΡΡΠΎΠ»Π±Π΅Ρ Artist Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅) ΠΈ Π½Π°Π±ΠΎΡΠ° ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ (ΡΡΠΎΠ»Π±Π΅Ρ SongTitle Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅). ΠΠ»ΡΡ ΡΠ°Π·Π΄Π΅Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°Π·Π΄Π΅Π»/ΡΠ°ΡΠ΄ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ ΡΡΡΠΎΠΊΡ, Π° ΡΡΠΎΠ»Π±ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π΄Π°Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ°ΡΠ΄Π°.
CREATE KEYSPACE myapp;
USE myapp;
CREATE TABLE Music (
Artist TEXT,
SongTitle TEXT,
AlbumTitle TEXT,
Year INT,
Price FLOAT,
Genre TEXT,
CriticRating FLOAT,
Tags TEXT,
PRIMARY KEY(Artist, SongTitle)
);
MongoDB
MongoDB ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (Database) (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Keyspace Π² Cassandra), Π³Π΄Π΅ Π΅ΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ (Collections) (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ), Π² ΠΊΠΎΡΠΎΡΡΡ Π»Π΅ΠΆΠ°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ (Documents) (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ Π² ΡΠ°Π±Π»ΠΈΡΠ΅). Π MongoDB Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡ Π΅ΠΌΡ. ΠΠΎΠΌΠ°Π½Π΄Π° Β«use databaseΒ», ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Π°Ρ Π½ΠΈΠΆΠ΅, ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΆΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²Π½ΠΎ, ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ MongoDB ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ²ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΠ±Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠΎΠ²Π½Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π±Π°Π·Ρ, Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Π½Π΅ΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
use myNewDatabase;
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅
PostgreSQL
d Music
Table "public.music"
Column | Type | Collation | Nullable | Default
--------------+-----------------------+-----------+----------+--------
artist | character varying(20) | | not null |
songtitle | character varying(30) | | not null |
albumtitle | character varying(25) | | |
year | integer | | |
price | double precision | | |
genre | character varying(10) | | |
criticrating | double precision | | |
tags | text | | |
Indexes:
"music_pkey" PRIMARY KEY, btree (artist, songtitle)
Cassandra
DESCRIBE TABLE MUSIC;
CREATE TABLE myapp.music (
artist text,
songtitle text,
albumtitle text,
year int,
price float,
genre text,
tags text,
PRIMARY KEY (artist, songtitle)
) WITH CLUSTERING ORDER BY (songtitle ASC)
AND default_time_to_live = 0
AND transactions = {'enabled': 'false'};
MongoDB
use myNewDatabase;
show collections;
ΠΠ½Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
Π² ΡΠ°Π±Π»ΠΈΡΡ
PostgreSQL
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Year, Price, Genre, CriticRating,
Tags)
VALUES(
'No One You Know', 'Call Me Today', 'Somewhat Famous',
2015, 2.14, 'Country', 7.8,
'{"Composers": ["Smith", "Jones", "Davis"],"LengthInSeconds": 214}'
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre, CriticRating)
VALUES(
'No One You Know', 'My Dog Spot', 'Hey Now',
1.98, 'Country', 8.4
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre)
VALUES(
'The Acme Band', 'Look Out, World', 'The Buck Starts Here',
0.99, 'Rock'
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre,
Tags)
VALUES(
'The Acme Band', 'Still In Love', 'The Buck Starts Here',
2.47, 'Rock',
'{"radioStationsPlaying": ["KHCR", "KBQX", "WTNR", "WJJH"], "tourDates": { "Seattle": "20150625", "Cleveland": "20150630"}, "rotation": Heavy}'
);
Cassandra
Π ΡΠ΅Π»ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ INSERT
Π² Cassandra Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ Π² PostgreSQL. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ Π² ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅. Π Cassandra INSERT
ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ UPSERT
, Π³Π΄Π΅ Π² ΡΡΡΠΎΠΊΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
ΠΠ²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ PostgreSQL
INSERT
Π²ΡΡΠ΅
.
MongoDB
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ MongoDB ΡΠ²Π»ΡΠ΅ΡΡΡ NoSQL Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Cassandra, Π΅Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² Cassandra. Π MongoDB UPSERT
, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎΡ
ΠΎΠΆΠΈΠΌ Π½Π° PostgreSQL. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±Π΅Π· _idspecified
ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ.
db.music.insert( {
artist: "No One You Know",
songTitle: "Call Me Today",
albumTitle: "Somewhat Famous",
year: 2015,
price: 2.14,
genre: "Country",
tags: {
Composers: ["Smith", "Jones", "Davis"],
LengthInSeconds: 214
}
}
);
db.music.insert( {
artist: "No One You Know",
songTitle: "My Dog Spot",
albumTitle: "Hey Now",
price: 1.98,
genre: "Country",
criticRating: 8.4
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Look Out, World",
albumTitle:"The Buck Starts Here",
price: 0.99,
genre: "Rock"
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Still In Love",
albumTitle:"The Buck Starts Here",
price: 2.47,
genre: "Rock",
tags: {
radioStationsPlaying:["KHCR", "KBQX", "WTNR", "WJJH"],
tourDates: {
Seattle: "20150625",
Cleveland: "20150630"
},
rotation: "Heavy"
}
}
);
ΠΠ°ΠΏΡΠΎΡ ΡΠ°Π±Π»ΠΈΡΡ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ SQL ΠΈ NoSQL Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΎΠΊ FROM
ΠΈ WHERE
. SQL ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ FROM
Π²ΡΠ±ΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΈΡ, Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ WHERE
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ JOIN
ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ). ΠΠ΄Π½Π°ΠΊΠΎ NoSQL ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΆΠ΅ΡΡΠΊΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° FROM
, ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ, Π° Π² WHERE
, Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ ΡΠΎ ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ NoSQL, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΡΠ°Π½Π΅Π΅. ΠΡΠΎ ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π²ΡΡΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΡΠΎΡΡ-ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΡΠΎΡΡ-ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π±ΠΎΠ»ΡΡΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠ΅ Π² ΠΌΠ΅ΠΆΡΠ·Π»ΠΎΠ²ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΏΡΠΈ ΠΎΡΠ²Π΅ΡΠ΅ Π½Π° Π·Π°ΠΏΡΠΎΡ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΅Π³ΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Cassandra ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΠΎΡΡ Π±ΡΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ (ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ =, IN, <, >, =>, <=
) Π½Π° ΠΊΠ»ΡΡΠ°Ρ
ΡΠ°Π·Π΄Π΅Π»ΠΎΠ², Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅Π² Π·Π°ΠΏΡΠΎΡΠ° Π²ΡΠΎΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° (Π·Π΄Π΅ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ =).
PostgreSQL
ΠΠ°Π»Π΅Π΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π»ΡΠ³ΠΊΠΎΡΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ SQL Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ .
- ΠΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΠΏΠ΅ΡΠ½ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ;
- ΠΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΠΏΠ΅ΡΠ½ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ;
- ΠΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΠΏΠ΅ΡΠ½ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΡΠ΅Π½Ρ ΠΌΠ΅Π½ΡΡΠ΅ 1.00.
SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE 'Call%';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE '%Today%'
AND Price > 1.00;
Cassandra
ΠΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ
Π²ΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² PostgreSQL ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Cassandra Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ LIKE
Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ SongTitle
. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ =
ΠΈ IN
.
SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle IN ('Call Me Today', 'My Dog Spot')
AND Price > 1.00;
MongoDB
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
, ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² MongoDB ΡΠ²Π»ΡΠ΅ΡΡΡ music
Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅), ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½.
db.music.find( {
artist: "No One You Know"
}
);
db.music.find( {
artist: "No One You Know",
songTitle: /Call/
}
);
Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΡΡΠΎΠΊ ΡΠ°Π±Π»ΠΈΡΡ
Π§ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΡΡΠΎΠΊ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ ΡΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° Π·Π°ΠΏΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅.
PostgreSQL
SELECT *
FROM Music;
Cassandra
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΡ Π² PostgreSQL Π²ΡΡΠ΅.
MongoDB
db.music.find( {} );
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅
PostgreSQL
PostgreSQL ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ UPDATE
Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
. ΠΠ½Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ UPSERT
, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅Ρ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
.
UPDATE Music
SET Genre = 'Disco'
WHERE Artist = 'The Acme Band' AND SongTitle = 'Still In Love';
Cassandra
Π Cassandra Π΅ΡΡΡ UPDATE
Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ PostgreSQL. UPDATE
ΠΈΠΌΠ΅Π΅Ρ ΡΡ ΠΆΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ UPSERT
, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ INSERT
.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΡ Π² PostgreSQL Π²ΡΡΠ΅.
MongoDB
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ UPSERT
. ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ UPSERT
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ. ΠΠ°ΠΊ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΆΠ°Π½ΡΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ½Π΅.
db.music.update(
{"artist": "The Acme Band"},
{
$set: {
"genre": "Disco"
}
},
{"multi": true, "upsert": true}
);
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ
PostgreSQL
DELETE FROM Music
WHERE Artist = 'The Acme Band' AND SongTitle = 'Look Out, World';
Cassandra
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΡ Π² PostgreSQL Π²ΡΡΠ΅.
MongoDB
Π MongoDB Π΅ΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² β
db.music.deleteMany( {
artist: "The Acme Band"
}
);
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ
PostgreSQL
DROP TABLE Music;
Cassandra
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΡ Π² PostgreSQL Π²ΡΡΠ΅.
MongoDB
db.music.drop();
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘ΠΏΠΎΡΡ ΠΎ Π²ΡΠ±ΠΎΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ SQL ΠΈ NoSQL Π±ΡΡΡΡΡ ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ 10 Π»Π΅Ρ. ΠΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠ° ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠ°: Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠ΄ΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΠΉ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠΉ SQL ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ, Π½Π΅ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ NoSQL) ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² SQL ΠΏΡΠΎΡΠΈΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² NoSQL).
Π‘ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ YugaByte DB, Π΄Π΅Π±Π°ΡΡ Π½Π°ΡΡΠ΅Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·Π²Π΅ΡΠ½Ρ. ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΌΡ Π΄Π°Π½Π½ΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ·Π΅Π», ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°ΡΠ΄ΠΈΠ½Π³ΠΎΠΌ/ΡΠ΅Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ.
ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠ°ΡΠ΅ΠΉ
ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (SQL ΠΈ NoSQL) Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ΄Ρ ΠΎΠ΄ SQL Β«ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Β» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π»Π΅Π³ΡΠ΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ ΠΌΠ΅Π½ΡΡΡΠΈΠ΅ΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ NoSQL Β«ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ²Β» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠΌΠ΅Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ ΠΈ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ YugaByte DB ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ SQL ΠΈ NoSQL API Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ΄ΡΠ΅, Π° Π½Π΅ ΠΏΡΠΎΠΏΠ°Π³Π°Π½Π΄ΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , Π²ΠΊΠ»ΡΡΠ°Ρ PostgreSQL ΠΈ Cassandra, YugaByte DB Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ·ΡΡΠ°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ, ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ΄ΡΠΎΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² PostgreSQL, Cassandra ΠΈ MongoDB. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ°ΡΡΡΡ ΠΌΡ ΠΏΠΎΠ³ΡΡΠ·ΠΈΠΌΡΡ Π² ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, JOINβΡ, Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ TTL ΠΈ JSON-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ.
ΠΠ΅Π»Π°Π΅ΠΌ Π²Π°ΠΌ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΈ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ Π½Π°
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com