ΠŸΡŠΡ€Π²ΠΎ стабилно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° FerretDB, внСдряванС Π½Π° MongoDB, Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° Π‘Π£Π‘Π” PostgreSQL

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° Π΅ вСрсията Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€