ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²ΡΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ° 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.
Ricurdemu chì MongoDB occupa un nichu trà i sistemi veloci è scalabili chì operanu dati in formatu chjave / valore, è DBMS relazionali chì sò funziunali è faciuli di furmulà dumande. MongoDB supporta l'almacenamiento di documenti in un formatu JSON-like, hà una lingua abbastanza flessibile per generà dumande, pò creà indici per diversi attributi almacenati, furnisce in modu efficiente u almacenamentu di grandi oggetti binari, supporta u logu di operazioni per cambià è aghjunghje dati à a basa di dati, pò. travaglià in cunfurmità cù u paradigma Map / Reduce, sustene a replicazione è a custruzzione di cunfigurazioni toleranti à i difetti.
Π Π²ΡΠΏΡΡΠΊΠ΅ 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Β».
Source: opennet.ru