Основи Π·Π° дизајн Π½Π° Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ - Π‘ΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° PostgreSQL, Cassandra ΠΈ MongoDB

Π—Π΄Ρ€Π°Π²ΠΎ ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π΅Π»ΠΈ. ΠŸΡ€Π΅Π΄ Π΄Π° Ρ‚Ρ€Π³Π½Π΅ΠΌΠ΅ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Π΄Π΅Π» ΠΎΠ΄ ΠΌΠ°Ρ˜ΡΠΊΠΈΡ‚Π΅ ΠΏΡ€Π°Π·Π½ΠΈΡ†ΠΈ, Π³ΠΎ сподСлувамС со вас ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»ΠΎΡ‚ ΡˆΡ‚ΠΎ Π³ΠΎ ΠΏΡ€Π΅Π²Π΅Π΄ΠΎΠ²ΠΌΠ΅ Π²ΠΎ прСсрСт Π½Π° Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ² стрим Π½Π° курсот β€žΠ Π΅Π»Π°Ρ†ΠΈΡΠΊΠΈ DBMSβ€œ.

Основи Π·Π° дизајн Π½Π° Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ - Π‘ΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° PostgreSQL, Cassandra ΠΈ MongoDB

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚Ρ€ΠΎΡˆΠ°Ρ‚ ΠΌΠ½ΠΎΠ³Ρƒ Π²Ρ€Π΅ΠΌΠ΅ ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°Ρ˜ΡœΠΈ повСќС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Π΄Π° ја ΠΈΠ·Π±Π΅Ρ€Π°Ρ‚ ΠΎΠ½Π°Π° ΡˆΡ‚ΠΎ Π½Π°Ρ˜Π΄ΠΎΠ±Ρ€ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΈΠΎΡ‚ ΠΎΠ±Π΅ΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ поСдноставСно ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, трансакциски Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ, пСрформанси Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅/Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅, Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΡΠΊΠ°Π»ΠΈΡ€Π°ΡšΠ΅ ΠΈ Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ†ΠΈΡ˜Π° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ, ΠΈΠ·Π±ΠΎΡ€ΠΎΡ‚ Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° со ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, 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.

Основи Π·Π° дизајн Π½Π° Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ - Π‘ΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° PostgreSQL, Cassandra ΠΈ MongoDB

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 сСга ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π²ΠΎ контСкст Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° ΠΌΠΈΡΠΈΡ˜Π°Ρ‚Π°.

Основи Π·Π° дизајн Π½Π° Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ - Π‘ΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° PostgreSQL, Cassandra ΠΈ MongoDB

Како ΡˆΡ‚ΠΎ бСшС ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° β€žΠ’ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° YSQL: Дистрибуиран SQL API ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π΅Π½ со PostgreSQL Π·Π° YugaByte DBβ€œ, ΠΈΠ·Π±ΠΎΡ€ΠΎΡ‚ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ SQL ΠΈΠ»ΠΈ NoSQL Π²ΠΎ YugaByte DB цСлосно зависи ΠΎΠ΄ карактСристикитС Π½Π° основниот ΠΎΠ±Π΅ΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°:

  • Ако Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ°Ρ€Π΅Π½ ΠΎΠ±Π΅ΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° сС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ 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

psql Π΅ школка ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со PostgreSQL. Π—Π° полСсно ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅, YugaByte DB Π΄ΠΎΠ°Ρ“Π° со psql Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΎ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π·Π° Ρ“ΡƒΠ±Ρ€Π΅.

docker exec -it yb-postgres-n1 /home/yugabyte/postgres/bin/psql -p 5433 -U postgres

ΠšΠ°ΡΠ°Π½Π΄Ρ€Π°

cqlsh Π΅ школка ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со ΠšΠ°ΡΠ°Π½Π΄Ρ€Π° ΠΈ Π½Π΅Ρ˜Π·ΠΈΠ½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π½ΠΈ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΏΡ€Π΅ΠΊΡƒ CQL (Cassandra Query Language). Π—Π° полСсно ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅, YugaByte DB Π΄ΠΎΠ°Ρ“Π° со cqlsh Π²ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΡ‚ bin.
Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° CQL Π΅ инспириран ΠΎΠ΄ SQL ΠΈ ΠΈΠΌΠ° слични ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΈ Π½Π° Ρ‚Π°Π±Π΅Π»ΠΈ, Ρ€Π΅Π΄ΠΎΠ²ΠΈ, ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΈ индСкси. Π‘Π΅ΠΏΠ°ΠΊ, ΠΊΠ°ΠΊΠΎ јазик NoSQL, Π΄ΠΎΠ΄Π°Π²Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ сСт Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ°, ΠΎΠ΄ ΠΊΠΎΠΈ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ќС Π³ΠΈ ΠΎΠΏΡ„Π°Ρ‚ΠΈΠΌΠ΅ ΠΈ Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ статии.

docker exec -it yb-tserver-n1 /home/yugabyte/bin/cqlsh

MongoDB

mongo Π΅ школка ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со MongoDB. МоТС Π΄Π° сС најдС Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ Π·Π° Ρ“ΡƒΠ±Ρ€Π΅ Π½Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° 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 Π΅ db.collection.find(). Овој ΠΌΠ΅Ρ‚ΠΎΠ΄ Сксплицитно Π³ΠΎ содрТи ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° (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
ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ () Π²ΠΎ 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 ΠΈΠΌΠ° Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Π±Ρ€ΠΈΡˆΠ΅ΡšΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ - DeleteOne() /deleteMany() ΠΈ отстрани (). И Π΄Π²Π°Ρ‚Π° Ρ‚ΠΈΠΏΠ° Π±Ρ€ΠΈΡˆΠ°Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ, Π½ΠΎ Π²Ρ€Π°ΡœΠ°Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ.

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, Π΄Π΅Π±Π°Ρ‚Π°Ρ‚Π° Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° сС стави ΠΊΡ€Π°Ρ˜. Како ΡˆΡ‚ΠΎ ΠΎΠ±Π΅ΠΌΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ станува ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌ ΠΎΠ΄ ΠΎΠ½Π° ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС запишС Π½Π° Π΅Π΄Π΅Π½ јазол, станува Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½Π° цСлосно дистрибуирана Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° која ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° Π»ΠΈΠ½Π΅Π°Ρ€Π½Π° приспособливост Π·Π° Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ со автоматско ΡΠ΅Ρ‡Π΅ΡšΠ΅/Ρ€Π΅Π±Π°Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅.

ОсвСн Ρ‚ΠΎΠ°, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ Π΅Π΄Π΅Π½ ΠΎΠ΄ написитС Google CloudВрансакцискитС, силно конзистСнтни Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ сСга сС повСќС сС користат Π·Π° Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π° Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° агилност ΠΎΠ΄ нСтрансакцискитС, Π΅Π²Π΅Π½Ρ‚ΡƒΠ°Π»Π½ΠΎ конзистСнтни Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ.

ΠΠ°Π²Ρ€Π°ΡœΠ°Ρ˜ΡœΠΈ сС Π½Π° Π΄ΠΈΡΠΊΡƒΡΠΈΡ˜Π°Ρ‚Π° Π·Π° дизајн Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Ρ„Π΅Ρ€ Π΅ Π΄Π° сС ΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° ΠΈ Π΄Π²Π°Ρ‚Π° пристапи Π·Π° дизајн (SQL ΠΈ NoSQL) сС Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΈ Π·Π° сСкоја слоТСна Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ Ρ€Π΅Π°Π»Π½ΠΈΠΎΡ‚ свСт. ΠŸΡ€ΠΈΡΡ‚Π°ΠΏΠΎΡ‚ Π·Π° β€žΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈβ€œ Π½Π° SQL ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ полСсно Π΄Π° Π³ΠΈ исполнат ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ Π΄Π΅Π»ΠΎΠ²Π½ΠΈ Π±Π°Ρ€Π°ΡšΠ°, Π΄ΠΎΠ΄Π΅ΠΊΠ° пристапот Π½Π° NoSQL β€žΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈβ€œ ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° иститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ со ΠΌΠ°Π»Π° латСнтност ΠΈ висока пропусност. Π’ΠΎΠΊΠΌΡƒ ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΎΠ²Π°Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° YugaByte DB ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° SQL ΠΈ NoSQL API Π²ΠΎ Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠΎ Ρ˜Π°Π΄Ρ€ΠΎ, намСсто Π΄Π° ΠΏΡ€ΠΎΠΌΠΎΠ²ΠΈΡ€Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ пристапитС. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, со ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° компатибилност со ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½ΠΈΡ‚Π΅ Ρ˜Π°Π·ΠΈΡ†ΠΈ Π½Π° Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ Π³ΠΈ PostgreSQL ΠΈ Cassandra, YugaByte DB Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° Π΄Π΅ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π΅ ΠΌΠΎΡ€Π° Π΄Π° ΡƒΡ‡Π°Ρ‚ Π΄Ρ€ΡƒΠ³ јазик Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ со дистрибуиран, високо конзистСнтСн ΠΌΠΎΡ‚ΠΎΡ€ Π½Π° Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

Π’ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°, Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π²ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ основитС Π½Π° Π΄ΠΈΠ·Π°Ρ˜Π½ΠΎΡ‚ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ сС Ρ€Π°Π·Π»ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ PostgreSQL, Cassandra ΠΈ MongoDB. Π’ΠΎ ΠΈΠ΄Π½ΠΈΡ‚Π΅ статии, ќС сС Π½ΡƒΡ€Π½Π΅ΠΌΠ΅ Π²ΠΎ Π½Π°ΠΏΡ€Π΅Π΄Π½ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΈ Π·Π° дизајн ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС индСкси, трансакции, ΠŸΠ Π˜ΠšΠ›Π£Π§Π£Π’ΠΠŠΠ, TTL Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ JSON.

Π’ΠΈ посакувамС ΡƒΠ±Π°Π² ΠΎΠ΄ΠΌΠΎΡ€ ΠΎΠ΄ Π²ΠΈΠΊΠ΅Π½Π΄ΠΎΡ‚ ΠΈ Π²Π΅ ΠΏΠΎΠΊΠ°Π½ΡƒΠ²Π°ΠΌΠ΅ бСсплатСн Π²Π΅Π±ΠΈΠ½Π°Ρ€, кој ќС сС ΠΎΠ΄Ρ€ΠΆΠΈ Π½Π° 14 мај.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€