Release fan FerretDB 0.1, in ymplemintaasje fan MongoDB basearre op de PostgreSQL DBMS

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° 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

Add a comment