ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²ΡΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ° FerretDB 0.1 (Π±ΡΠ²ΡΠΈΠΉ MangoDB), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π‘Π£ΠΠ MongoDB Π½Π° PostgreSQL Π±Π΅Π· Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. FerretDB ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ, ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ MangoDB Π² SQL-Π·Π°ΠΏΡΠΎΡΡ ΠΊ PostgreSQL, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PostgreSQL Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Go ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.
ΠΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΈΠ·-Π·Π° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° MongoDB Π½Π° Π½Π΅ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ SSPL, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ AGPLv3, Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΊΡΡΡΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½ΠΈΡΡΡΡΠ΅Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ SSPL Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄Π° ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ² Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π²ΠΎΠ²Π»Π΅ΡΡΠ½Π½ΡΡ Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ FerretDB Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ MongoDB, Π½ΠΎ ΠΆΠ΅Π»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΡΡΡΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΡΠ΅ΠΊ. ΠΠ° ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ FerretDB ΠΏΠΎΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈΡΡ ΡΠ°ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ MongoDB, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π² ΡΠΈΠΏΠΎΠ²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . Π Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠ»Π°Π½ΠΈΡΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ Π΄Π»Ρ MongoDB ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ FerretDB Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ MongoDB.
Tink derom dat MongoDB in niche ynnimt tusken rappe en skalberbere systemen dy't operearje op gegevens yn it kaai / weardeformaat, en relasjonele DBMS, funksjoneel en handich by it generearjen fan fragen. MongoDB stipet it opslaan fan dokuminten yn in JSON-lykas formaat, hat in frij fleksibele taal foar it generearjen fan fragen, kin yndeksen meitsje foar ferskate opsleine attributen, soarget effisjint foar opslach fan grutte binΓͺre objekten, stipet logging fan operaasjes om gegevens te feroarjen en ta te foegjen oan de databank, kin wurkje yn oerienstimming mei it paradigma Map / Ferminderje, stipet replikaasje en it bouwen fan fouttolerante konfiguraasjes.
Π Π²ΡΠΏΡΡΠΊΠ΅ FerretDB 0.1.0 ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· PostgreSQL. Π Π°Π½ΡΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° MongoDB ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π»ΡΡ ΠΎΠ΄ΠΈΠ½ SQL-Π·Π°ΠΏΡΠΎΡ ΠΊ PostgreSQL, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ JSON ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ PostgreSQL. ΠΠ·-Π·Π° ΠΎΡΠ»ΠΈΡΠΈΠΉ Π² ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅ json-ΡΡΠ½ΠΊΡΠΈΠΉ PostgreSQL ΠΈ MongoDB Π½Π°Π±Π»ΡΠ΄Π°Π»ΠΎΡΡ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΠ· PostgreSQL ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½Π°Ρ Π²ΡΠ±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ , Π° ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ FerretDB, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ MongoDB Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΈΡΡΠ°ΡΠΈΠΉ.
Π¦Π΅Π½ΠΎΠΉ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠ°Π»ΠΎ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² Π±ΡΠ΄ΡΡΠΈΡ
Π²ΡΠΏΡΡΠΊΠ°Ρ
ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π° ΡΡΡΡ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ FerretDB ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΡΠ°ΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΠΎΡ Β«db.collection.find({_id: βsome-id-valueβ})Β» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ Π² PostgreSQL. ΠΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ MongoDB, Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠΊΠ° ΠΎΡΠΎΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π½Π° Π²ΡΠΎΡΠΎΠΉ ΠΏΠ»Π°Π½. ΠΠ· ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠ΅Ρ
Π±ΠΈΡΠΎΠ²ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Β«$eqΒ», Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Β«$elemMatchΒ» ΠΈ Β«$bitsAllClearΒ».
Boarne: opennet.ru