ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π΅ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° FerretDB 1.0, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½Π°ΡΠ° ΠΊΡΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ Π‘Π£ΠΠ MongoDB Ρ PostgreSQL, Π±Π΅Π· Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. FerretDB Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΊΡΠΈ ΡΡΡΠ²ΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΠΎΠ±Π°ΠΆΠ΄Π°Π½ΠΈΡΡΠ° ΠΊΡΠΌ MongoDB Π² SQL Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ PostgreSQL, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ PostgreSQL ΠΊΠ°ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΠ΅ΡΡΠΈΡ 1.0 Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ ΠΏΡΡΠ²Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ, Π³ΠΎΡΠΎΠ²Π° Π·Π° ΠΎΠ±ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π°. ΠΠΎΠ΄ΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Go ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· Apache 2.0.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅Π»Π΅Π²Π° Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ Π·Π° FerretDB ΡΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° MongoDB Π² ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ ΡΡΠ΅ΠΊ. Π Π½Π°ΡΡΠΎΡΡΠΈΡ ΡΠΈ Π΅ΡΠ°ΠΏ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ FerretDB ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° MongoDB, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΡΠΈΠΏΠΈΡΠ½ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° FerretDB ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΠ·Π½ΠΈΠΊΠ½Π΅ Π²ΡΠ² Π²ΡΡΠ·ΠΊΠ° Ρ ΠΏΡΠ΅Ρ ΠΎΠ΄Π° Π½Π° MongoDB ΠΊΡΠΌ Π½Π΅ΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ SSPL Π»ΠΈΡΠ΅Π½Π·, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° AGPLv3 Π»ΠΈΡΠ΅Π½Π·Π°, Π½ΠΎ Π½Π΅ Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°ΡΠΈΠΎΠ½Π½ΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅ Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° ΠΏΠΎΠ΄ SSPL Π»ΠΈΡΠ΅Π½Π· Π½Π΅ ΡΠ°ΠΌΠΎ Π½Π° ΡΠ°ΠΌΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π½ΠΎ ΡΡΡΠΎ ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΡΡΠ°ΡΡΠ²Π°ΡΠΈ Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ.
MongoDB Π·Π°Π΅ΠΌΠ° Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π±ΡΡΠ·ΠΈ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΊΠ»ΡΡ/ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΈ ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½ΠΈ Π‘Π£ΠΠ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΈ Π»Π΅ΡΠ½ΠΈ Π·Π° Π·Π°ΡΠ²ΠΊΠΈ. MongoDB ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° JSON, ΠΈΠΌΠ° Π΄ΠΎΡΡΠ° Π³ΡΠ²ΠΊΠ°Π² Π΅Π·ΠΈΠΊ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π΄Π²ΠΎΠΈΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΊΡΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΌΠΎΠΆΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°ΡΠ° Map/Reduce, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΈ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΡΠ² FerretDB 1.0:
- ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ createIndexes ΠΈ dropIndexes Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΠΊΡΠΌ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ.
- ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° getMore Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° ΡΠ°ΡΡ ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΡΡΠ°Ρ ΠΊΡΡΡΠΎΡ, ΠΊΠ°ΡΠΎ find ΠΈ aggregate.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π° Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ $sum Π·Π° ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΌΠ°ΡΠ° ΠΎΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ $limit ΠΈ $skip Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π½Π΅ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ ΠΏΡΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° $count Π·Π° ΠΏΡΠ΅Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ ΠΏΡΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° $unwind Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ° ΠΎΡ ΠΌΠ°ΡΠΈΠ² Π²ΡΠ² Π²Ρ ΠΎΠ΄ΡΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡΠΊ Ρ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΠΌΠ°ΡΠΈΠ²Π°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΠ°ΡΡΠΈΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ collStats, dbStats ΠΈ dataSize Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru