ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ FerretDB 0.3, ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈΠΎΡ DBMS MongoDB ΡΠΎ PostgreSQL Π±Π΅Π· Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. FerretDB Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ ΠΊΠ°ΠΊΠΎ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡ Π³ΠΈ ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π° ΠΏΠΎΠ²ΠΈΡΠΈΡΠ΅ Π΄ΠΎ MongoDB Π²ΠΎ SQL ΠΏΡΠ°ΡΠ°ΡΠ° Π΄ΠΎ PostgreSQL, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ PostgreSQL ΠΊΠ°ΠΊΠΎ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅. ΠΠΎΠ΄ΠΎΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ Go ΠΈ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° Apache 2.0.
ΠΠΎΡΡΠ΅Π±Π°ΡΠ° Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ Π²ΠΎ Π²ΡΡΠΊΠ° ΡΠΎ ΡΡΠ°Π½Π·ΠΈΡΠΈΡΠ°ΡΠ° Π½Π° MongoDB Π½Π° Π½Π΅ΡΠ»ΠΎΠ±ΠΎΠ΄Π½Π° SSPL Π»ΠΈΡΠ΅Π½ΡΠ°, ΠΊΠΎΡΠ° ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° AGPLv3, Π½ΠΎ Π½Π΅ Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½Π°, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠΎΠ΄ΡΠΆΠΈ Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°ΡΠΎΡΡΠΊΠΈ ΡΡΠ»ΠΎΠ² Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΡΠΏΠΎΡΠ΅Π΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° SSPL Π½Π΅ ΡΠ°ΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΠ°ΠΌΠΈΠΎΡ ΠΊΠΎΠ΄, Π½ΠΎ ΠΈ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π½Π° ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΎΠ±Π»Π°ΠΊ.
ΠΠ»Π°Π²Π½Π°ΡΠ° ΡΠ΅Π»Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ° Π·Π° FerretDB ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΊΠΎΠΈ Π½Π΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° MongoDB Π²ΠΎ Π½ΠΈΠ²Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, Π½ΠΎ ΡΠ°ΠΊΠ°Π°Ρ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠΈ ΡΡΠ΅ΠΊ. ΠΠΎ ΡΠ΅Π³Π°ΡΠ½Π°ΡΠ° ΡΠ°Π·Π° Π½Π° ΡΠ°Π·Π²ΠΎΡ, FerretDB ΡΓ¨ ΡΡΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠ°ΠΌΠΎ Π΄Π΅Π» ΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° MongoDB ΠΊΠΎΠΈ Π½Π°ΡΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π²ΠΎ ΡΠΈΠΏΠΈΡΠ½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠΎ ΠΈΠ΄Π½ΠΈΠ½Π°, ΡΠΈΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π°Ρ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ ΡΠ΅Π»ΠΎΡΠ½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ ΡΠΎ Π΄ΡΠ°ΡΠ²Π΅ΡΠΈΡΠ΅ Π·Π° MongoDB ΠΈ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° FerretDB ΠΊΠ°ΠΊΠΎ ΡΡΠ°Π½ΡΠΏΠ°ΡΠ΅Π½ΡΠ½Π° Π·Π°ΠΌΠ΅Π½Π° Π·Π° MongoDB.
MongoDB Π·Π°Π·Π΅ΠΌΠ° Π½ΠΈΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ Π±ΡΠ·ΠΈ ΠΈ ΡΠΊΠ°Π»Π°Π±ΠΈΠ»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΊΠΎΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΠΊΠ»ΡΡΠ½ΠΈ/Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ ΡΠ΅Π»Π°ΡΠΈΠΎΠ½ΠΈ DBMS ΠΊΠΎΠΈ ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΈ Π»Π΅ΡΠ½ΠΈ Π·Π° ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅. MongoDB ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ Π²ΠΎ ΡΠΎΡΠΌΠ°Ρ ΡΠ»ΠΈΡΠ΅Π½ Π½Π° JSON, ΠΈΠΌΠ° ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π΅Π½ ΡΠ°Π·ΠΈΠΊ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠ°ΡΠ°ΡΠ°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ, Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ, ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π° ΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΌΠΎΠΆΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎΡΡ ΡΠΎ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°ΡΠ° Map/Reduce, ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ½ΠΈ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ.
Π Π²ΡΠΏΡΡΠΊΠ΅ FerretDB 0.3 ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° findAndModify ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠ°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ β $inc ΠΈ $set. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
.
ΠΠ·Π²ΠΎΡ: opennet.ru