ИздаванС Π½Π° FerretDB 0.1, рСализация Π½Π° MongoDB Π½Π° Π±Π°Π·Π° Π‘Π£Π‘Π” PostgreSQL

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

НапомнямС, Ρ‡Π΅ MongoDB Π·Π°Π΅ΠΌΠ° ниша ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΡŠΡ€Π·ΠΈΡ‚Π΅ ΠΈ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΈ систСми, управляващи Π΄Π°Π½Π½ΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠ»ΡŽΡ‡/стойност, ΠΈ Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π‘Π£Π‘Π”, ΠΊΠΎΠΈΡ‚ΠΎ са Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΈ Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° запитвания. MongoDB ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π² JSON-ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° с Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ гъвкав Π΅Π·ΠΈΠΊ Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° запитвания, ΠΌΠΎΠΆΠ΅ Π΄Π° създава индСкси Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ, Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ осигурява ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΆΡƒΡ€Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ промяна ΠΈ добавянС Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π‘Π”, ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Ρ‚Π° Map/Reduce, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° рСпликация ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с отказоустойчивост.

Π’ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ 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".

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster