ΠΠ΄ΡΠ°Π²ΠΎ ΠΏΡΠΈΡΠ°ΡΠ΅Π»ΠΈ. ΠΡΠ΅Π΄ Π΄Π° ΡΡΠ³Π½Π΅ΠΌΠ΅ Π²ΠΎ Π²ΡΠΎΡΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ ΠΌΠ°ΡΡΠΊΠΈΡΠ΅ ΠΏΡΠ°Π·Π½ΠΈΡΠΈ, Π³ΠΎ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ²Π°ΠΌΠ΅ ΡΠΎ Π²Π°Ρ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»ΠΎΡ ΡΡΠΎ Π³ΠΎ ΠΏΡΠ΅Π²Π΅Π΄ΠΎΠ²ΠΌΠ΅ Π²ΠΎ ΠΏΡΠ΅ΡΡΠ΅Ρ Π½Π° Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° Π½ΠΎΠ² ΡΡΡΠΈΠΌ Π½Π° ΠΊΡΡΡΠΎΡ
ΠΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΠΎΡΠ°Ρ ΠΌΠ½ΠΎΠ³Ρ Π²ΡΠ΅ΠΌΠ΅ ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π΄Π° ΡΠ° ΠΈΠ·Π±Π΅ΡΠ°Ρ ΠΎΠ½Π°Π° ΡΡΠΎ Π½Π°ΡΠ΄ΠΎΠ±ΡΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΈΠΎΡ ΠΎΠ±Π΅ΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π·Π° ΡΠΈΡΠ°ΡΠ΅/Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅, Ρ
ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π°Π»Π½ΠΎ, ΠΈΠ·Π±ΠΎΡΠΎΡ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° ΡΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, SQL ΠΈΠ»ΠΈ NoSQL, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠ΅ΠΊΠΎΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ° ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π° ΡΠ°ΡΠ΅Π½ ΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈ. ΠΠΈΡΠΎΠΊΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π²ΠΎ ΡΠΌΠΈΡΠ»Π° Π½Π° Π½ΠΈΡΠΊΠ° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ ΠΈ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΏΡΡΠ½ΠΎΡΡ Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ ΡΠ΅ Π³Π»Π΅Π΄Π°Π°Ρ ΠΊΠ°ΠΊΠΎ ΡΡΠ»ΠΎΠ² ΡΡΠΎ Π½Π΅ ΡΠ΅ ΡΠ°Π·ΠΌΠ΅Π½ΡΠ²Π° ΠΈ Π·Π°ΡΠΎΠ° Π΅ ΠΎΠ΄ ΡΡΡΡΠΈΠ½ΡΠΊΠΎ Π·Π½Π°ΡΠ΅ΡΠ΅ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ.
Π¦Π΅Π»ΡΠ° Π½Π° ΠΎΠ²ΠΎΡ Π½Π°ΠΏΠΈΡ Π΅ Π΄Π° ΠΈΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²Π°Ρ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈΠΎΡ ΠΈΠ·Π±ΠΎΡ ΠΏΠΎΠΌΠ΅ΡΡ SQL ΠΈ NoSQL Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Π΅Π΄Π½Π° SQL Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΈΠΌΠ΅Π½ΠΎ PostgreSQL, ΠΈ Π΄Π²Π΅ NoSQL Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Cassandra ΠΈ MongoDB, Π·Π° Π΄Π° Π³ΠΈ ΠΏΠΎΠΊΡΠΈΠ΅ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π½Π° Π΄ΠΈΠ·Π°ΡΠ½ΠΎΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠ°Π±Π΅Π»ΠΈ, Π½ΠΈΠ²Π½ΠΎ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π°ΡΠ΅, ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΡΠ°Π±Π΅Π»Π° ΠΈ Π½ΠΈΠ²Π½ΠΎ Π±ΡΠΈΡΠ΅ΡΠ΅. ΠΠΎ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΠ°, ΡΠΈΠ³ΡΡΠ½ΠΎ ΡΠ΅ Π³ΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅, ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅, JOIN-ΠΎΠ²ΠΈΡΠ΅, TTL Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ ΠΈ Π΄ΠΈΠ·Π°ΡΠ½ΠΎΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° JSON.
ΠΠΎΡΠ° Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ SQL ΠΈ NoSQL?
ΠΠ°Π·ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° SQL ΡΠ° Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°Π°Ρ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΏΡΠ΅ΠΊΡ ACID ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ Π½ΠΈΠ²Π½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π΄Π° Π±Π°ΡΠ°Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ JOIN Π½Π° Π½Π΅ΠΎΡΠ΅ΠΊΡΠ²Π°Π½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ, ΠΏΠΎΠΊΡΠ°Ρ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
Π‘ΠΎ ΠΎΠ³Π»Π΅Π΄ Π½Π° Π½ΠΈΠ²Π½Π°ΡΠ° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½Π°/Π΅Π΄Π΅Π½-ΡΠ°Π·ΠΎΠ» Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΠΌΠΎΠ΄Π΅Π» Π·Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° master-slave Π·Π° Π²ΠΈΡΠΎΠΊ, Π½Π° ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡΠ΅ SQL Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠ²Π°Π°Ρ Π΄Π²Π΅ Π²Π°ΠΆΠ½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ - Π»ΠΈΠ½Π΅Π°ΡΠ½Π° ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡ Π·Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ (Ρ.Π΅. Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅ Π½ΠΈΠ· ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈ) ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ/Π½ΡΠ»Π° Π·Π°Π³ΡΠ±Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠΈΠ½Π°ΡΠ° Π½Π° Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π½Π°Π΄ΠΌΠΈΠ½Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ ΠΏΡΠΎΡΠΎΠΊ Π½Π° Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° Π΅Π΄Π΅Π½ ΡΠ°Π·ΠΎΠ». ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, Π½Π΅ΠΊΠΎΠΈ ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π³ΡΠ±ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΏΡΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ (Π²ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° ΡΡΠΎ Π½Π΅ΠΌΠ° Π½ΠΈΡΡΠΎ). ΠΠ²Π΄Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π½Π° ΡΠΌ Π΄Π΅ΠΊΠ° Π½Π΅ΠΎΠ΄Π°ΠΌΠ½Π΅ΡΠ½ΠΈΡΠ΅ ΠΎΠ±Π²ΡΡΠΊΠΈ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠ΅ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΡΠ°Π½ΠΈ Π²ΠΎ ΡΠΎΠ±Π½Π°ΡΠ° ΠΊΠΎΠΏΠΈΡΠ°. ΠΠΆΡΡΠΈΡΠ°ΡΠ°ΡΠ° Π±Π΅Π· ΠΏΡΠ΅ΠΊΠΈΠ½ΠΈ, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ΡΠΊΠΎ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π°Π°Ρ Π²ΠΎ Π±Π°Π·ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° 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, YugaByte DB API ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π΅Π½ ΡΠΎ Cassandra, Π³ΠΈ Π΄ΠΎΠ΄Π°Π²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠ΅ Π½Π° ACID ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ ΡΠΎ Π΅Π΄Π΅Π½ ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ ΠΊΠ»ΡΡ ΠΈ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΡΠ΅ΠΊΡΠ½Π΄Π°ΡΠ½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π½Π° NoSQL API, ΡΠΎ ΡΡΠΎ ΡΠ° Π²ΠΎΠ²Π΅Π΄ΡΠ²Π° Π΅ΡΠ°ΡΠ° Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠΊΠΈΡΠ΅ NoSQL Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, YCQL, YugaByte DB API ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π΅Π½ ΡΠΎ PostgreSQL, Π³ΠΈ Π΄ΠΎΠ΄Π°Π²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠ΅ Π·Π° Π»ΠΈΠ½Π΅Π°ΡΠ½ΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠ° ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π²ΠΎ SQL API, ΡΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ΅ Π΄ΠΎΠ½Π΅ΡΠ°Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈ SQL Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΡΠ²Π΅ΡΠΎΡ. ΠΠΈΠ΄Π΅ΡΡΠΈ YugaByte DB Π΅ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠΊΠ° ΠΏΠΎ ΠΏΡΠΈΡΠΎΠ΄Π°, NoSQL API ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΠΌΠΈΡΠΈΡΠ°ΡΠ°.
ΠΠ°ΠΊΠΎ ΡΡΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ ΡΡΠ°ΡΠΈΡΠ°ΡΠ°
- ΠΠΊΠΎ Π²Π°ΡΠΈΠΎΡ ΠΏΡΠΈΠΌΠ°ΡΠ΅Π½ ΠΎΠ±Π΅ΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ JOIN ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΈ, ΡΠΎΠ³Π°Ρ ΠΊΠΎΠ³Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅ YSQL, ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ Π΄Π΅ΠΊΠ° Π²Π°ΡΠΈΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ Π½ΠΈΠ· ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠ° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ°Π»Π° ΠΏΡΠΎΠΏΡΡΠ½ΠΎΡΡ ΠΎΠ΄ NoSQL.
- ΠΠΎ ΡΠΏΡΠΎΡΠΈΠ²Π½ΠΎ, ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΠ΅ Π±ΠΈΠ»ΠΎ ΠΎΠ΄ Π΄Π²Π΅ΡΠ΅ NoSQL API, ΠΈΠΌΠ°ΡΡΠΈ Π½Π° ΡΠΌ Π΄Π΅ΠΊΠ° ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΏΡΠ°ΡΠ°ΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΡΠ°Π·ΠΎΠ» Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅. YugaByte DB ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΠΊΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΡΠ΅Π°Π»Π½ΠΈ, ΡΠ»ΠΎΠΆΠ΅Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π°Π°Ρ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ° ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ.
ΠΠ°Π±ΠΎΡΠ°ΡΠΎΡΠΈΡΠ°ΡΠ° Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π΄Π΅Π» ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° Π±Π°Π·ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° YugaByte DB ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΈ ΡΠΎ PostgreSQL ΠΈ Cassandra API, Π½Π°ΡΠΏΡΠΎΡΠΈ ΠΌΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ²ΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ ΡΠ° Π½Π°Π³Π»Π°ΡΡΠ²Π° Π»Π΅ΡΠ½ΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎ Π΄Π²Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ 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
ΠΠ°ΡΠ°Π½Π΄ΡΠ°
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)
);
ΠΠ°ΡΠ°Π½Π΄ΡΠ°
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ΡΠΎ ΡΠ°Π±Π΅Π»Π° Π²ΠΎ ΠΠ°ΡΠ°Π½Π΄ΡΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΠΈΡΠ½ΠΎ Π½Π° 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 ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ΠΠ°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ) (ΡΠ»ΠΈΡΠ½ΠΎ Π½Π° Keyspace Π²ΠΎ ΠΠ°ΡΠ°Π½Π΄ΡΠ°), ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΈΠΌΠ° ΠΠΎΠ»Π΅ΠΊΡΠΈΠΈ (ΡΠ»ΠΈΡΠ½ΠΎ Π½Π° ΡΠ°Π±Π΅Π»ΠΈΡΠ΅) ΠΊΠΎΠΈ ΡΠΎΠ΄ΡΠΆΠ°Ρ ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ (ΡΠ»ΠΈΡΠ½ΠΎ Π½Π° ΡΠ΅Π΄ΠΎΠ²ΠΈΡΠ΅ Π²ΠΎ ΡΠ°Π±Π΅Π»Π°ΡΠ°). ΠΠΎ MongoDB, Π²ΠΎ ΠΎΡΠ½ΠΎΠ²Π° Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΠΏΠΎΡΠ΅ΡΠ½Π° ΡΠ΅ΠΌΠ°. Π’ΠΈΠΌ "ΠΊΠΎΡΠΈΡΡΠΈ Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ", ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ»Ρ, ΡΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠ° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΏΡΠΈ ΠΏΡΠ²ΠΈΠΎΡ ΠΏΠΎΠ²ΠΈΠΊ ΠΈ Π³ΠΎ ΠΌΠ΅Π½ΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΡ Π·Π° Π½ΠΎΠ²ΠΎΡΠΎΠ·Π΄Π°Π΄Π΅Π½Π°ΡΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΡΡΠΈ ΠΈ Π·Π±ΠΈΡΠΊΠΈΡΠ΅ Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ; ΡΠΈΠ΅ ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ, Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ³Π° ΡΠ΅ Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠ²ΠΈΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π²ΠΎ Π½ΠΎΠ²Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡΠ°. ΠΠ°Π±Π΅Π»Π΅ΠΆΠ΅ΡΠ΅ Π΄Π΅ΠΊΠ° 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)
ΠΠ°ΡΠ°Π½Π΄ΡΠ°
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}'
);
ΠΠ°ΡΠ°Π½Π΄ΡΠ°
Π‘Π΅Π²ΠΊΡΠΏΠ΅Π½ ΠΈΠ·ΡΠ°Π· INSERT
Π²ΠΎ ΠΠ°ΡΠ°Π½Π΄ΡΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΠΈΡΠ½ΠΎ Π½Π° ΠΎΠ½Π° Π²ΠΎ PostgreSQL. Π‘Π΅ΠΏΠ°ΠΊ, ΠΏΠΎΡΡΠΎΠΈ Π΅Π΄Π½Π° Π³ΠΎΠ»Π΅ΠΌΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° Π²ΠΎ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°ΡΠ°. ΠΠΎ ΠΠ°ΡΠ°Π½Π΄ΡΠ° INSERT
Π²ΡΡΡΠ½ΠΎΡΡ Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° UPSERT
, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ΅ Π΄ΠΎΠ΄Π°Π²Π°Π°Ρ Π½Π° ΡΠ΅Π΄ΠΎΡ Π°ΠΊΠΎ ΡΠ΅Π΄ΠΎΡ Π²Π΅ΡΠ΅ ΠΏΠΎΡΡΠΎΠΈ.
ΠΠ½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π΅ ΡΠ»ΠΈΡΠ½ΠΎ Π½Π° PostgreSQL
INSERT
Π½Π°Π΄
.
MongoDB
ΠΠ°ΠΊΠΎ MongoDB Π΅ NoSQL Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΠ°ΡΠ°Π½Π΄ΡΠ°, Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° Π·Π° Π²ΠΌΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅ Π½Π΅ΠΌΠ° Π½ΠΈΡΡΠΎ Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΎ ΡΠΎ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠΊΠΎΡΠΎ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΠ°ΡΠ°Π½Π΄ΡΠ°. ΠΠΎ 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 Π·Π° ΠΊΠΎΡ Π·Π±ΠΎΡΡΠ²Π°Π²ΠΌΠ΅ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ. ΠΠ²Π°Π° ΠΆΠ΅Π»Π±Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΠ΅ΠΊΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° Π²ΠΊΡΡΡΠ΅Π½Π° ΡΠ°Π±Π΅Π»Π°ΡΠ½Π° ΠΈ Π²ΠΊΡΡΡΠ΅Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ°. ΠΠΎΠΆΠ΅ Π΄Π° Π²Π½Π΅ΡΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΎ Π΄ΠΎΡΠ½Π΅ΡΠ΅ Π²ΠΎ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ΅ ΠΊΠΎΠ³Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΠ°ΡΠ΅ ΠΈ Π·Π°ΡΠΎΠ° Π½Π°ΡΠ΄ΠΎΠ±ΡΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½ΡΠ²Π° Π²ΠΎΠΎΠΏΡΡΠΎ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΠ°ΡΠ°Π½Π΄ΡΠ° Π±Π°ΡΠ° Π±Π°ΡΠ°ΡΠ°ΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ (ΡΠ°ΠΌΠΎ =, 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;
ΠΠ°ΡΠ°Π½Π΄ΡΠ°
ΠΠ΄ ΠΏΡΠ°ΡΠ°ΡΠ°ΡΠ° PostgreSQL Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΏΠΎΠ³ΠΎΡΠ΅, ΡΠ°ΠΌΠΎ ΠΏΡΠ²ΠΎΡΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠΎ Π²ΠΎ ΠΠ°ΡΠ°Π½Π΄ΡΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΡ 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;
ΠΠ°ΡΠ°Π½Π΄ΡΠ°
Π‘Π»ΠΈΡΠ½ΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ PostgreSQL ΠΏΠΎΠ³ΠΎΡΠ΅.
MongoDB
db.music.find( {} );
Π£ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΡΠ°Π±Π΅Π»Π°
PostgreSQL
PostgreSQL Π΄Π°Π²Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ UPDATE
Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. Π’Π°Π° Π½Π΅ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ UPSERT
, ΠΏΠ° ΠΎΠ²Π°Π° ΠΈΠ·ΡΠ°Π²Π° Π½Π΅ΠΌΠ° Π΄Π° ΡΡΠΏΠ΅Π΅ Π°ΠΊΠΎ ΡΠ΅Π΄ΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ Π΅ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
UPDATE Music
SET Genre = 'Disco'
WHERE Artist = 'The Acme Band' AND SongTitle = 'Still In Love';
ΠΠ°ΡΠ°Π½Π΄ΡΠ°
ΠΠ°ΡΠ°Π½Π΄ΡΠ° ΠΈΠΌΠ° 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';
ΠΠ°ΡΠ°Π½Π΄ΡΠ°
Π‘Π»ΠΈΡΠ½ΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ PostgreSQL ΠΏΠΎΠ³ΠΎΡΠ΅.
MongoDB
MongoDB ΠΈΠΌΠ° Π΄Π²Π° ΡΠΈΠΏΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π±ΡΠΈΡΠ΅ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ -
db.music.deleteMany( {
artist: "The Acme Band"
}
);
ΠΠ·Π±ΡΠΈΡΠ΅ΡΠ΅ ΡΠ°Π±Π΅Π»Π°
PostgreSQL
DROP TABLE Music;
ΠΠ°ΡΠ°Π½Π΄ΡΠ°
Π‘Π»ΠΈΡΠ½ΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ 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. ΠΠΎ ΠΈΠ΄Π½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ, ΡΠ΅ ΡΠ΅ Π½ΡΡΠ½Π΅ΠΌΠ΅ Π²ΠΎ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈ Π·Π° Π΄ΠΈΠ·Π°ΡΠ½ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ, ΠΠ ΠΠΠΠ£Π§Π£ΠΠΠΠ, TTL Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ JSON.
ΠΠΈ ΠΏΠΎΡΠ°ΠΊΡΠ²Π°ΠΌΠ΅ ΡΠ±Π°Π² ΠΎΠ΄ΠΌΠΎΡ ΠΎΠ΄ Π²ΠΈΠΊΠ΅Π½Π΄ΠΎΡ ΠΈ Π²Π΅ ΠΏΠΎΠΊΠ°Π½ΡΠ²Π°ΠΌΠ΅
ΠΠ·Π²ΠΎΡ: www.habr.com