Microsoft ΠΎΡ‚ΠΊΡ€Ρ‹Π» ΠΊΠΎΠ΄ Π‘Π£Π‘Π” DocumentDB, основанной Π½Π° PostgreSQL

Компания Microsoft объявила ΠΎΠ± ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° DocumentDB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ NoSQL Π‘Π£Π‘Π”, ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для создания собствСнных систСм хранСния ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ BSON Π² Π‘Π£Π‘Π” PostgreSQL. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ DocumentDB примСняСтся Π² Microsoft Π² качСствС основы ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Β«Azure Cosmos DB for MongoDBΒ», ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ интСрфСйс, совмСстимый с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π‘Π£Π‘Π” MongoDB. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Π”Π²ΠΈΠΆΠΎΠΊ DocumentDB Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Ρ„ΠΎΡ€ΠΌΠ΅ надстройки Π½Π°Π΄ Π‘Π£Π‘Π” PostgreSQL.

Как ΠΈ Π² MongoDB для хранСния структурированных Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² DocumentDB задСйствован JSON-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ BSON (BinΒ­ary JSON), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ иСрархичСскиС структуры, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ΄Π½ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ массивы ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ массивы. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΎΡ‚ JSON являСтся использованиС сСриализации Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ прСдставлСниС. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ прСдоставляСт ΠΊΠ°ΠΊ NoSQL-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для создания, чтСния, обновлСния ΠΈ удалСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ BSON, Ρ‚Π°ΠΊ ΠΈ API для ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ PostgreSQL (DocumentDB ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ PostgreSQL с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ BSON). Π’ DocumentDB ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ возмоТности полнотСкстового поиска, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ ΠΈ гСопространствСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

  • pg_documentdb_core β€” Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΊ PostgreSQL с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ‚ΠΈΠΏΠ° BSON ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² PostgreSQL с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ BSON.
  • pg_documentdb β€” общСдоступный API DocumentDB с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ опСрациями для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ BSON, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов ΠΈ управлСния индСксами.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ выпуск DocumentDB прСдоставляСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ CRUD (созданиС, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅), индСксы для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ BSON, индСксы для полнотСкстового поиска (совмСстимы с RUM), Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΈ гСопространствСнныС запросы (совмСстимыС с pg_vector ΠΈ postgis), возмоТности для формирования запросов ΠΈ агрСгирования Π΄Π°Π½Π½Ρ‹Ρ… BSON.

На использованиС DocumentDB ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΡˆΡ‘Π» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ FerretDB, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π‘Π£Π‘Π” MongoDB Π½Π° Π±Π°Π·Π΅ Π‘Π£Π‘Π” PostgreSQL. FerretDB позволяСт Π±Π΅Π· внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π‘Π£Π‘Π” MongoDB Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ стСк, основанный Π½Π° PostgreSQL. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρ‹ MongoDB ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠΉ Π‘Π£Π‘Π” Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ SSPL, которая основана Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ AGPLv3, Π½ΠΎ Π½Π΅ являСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ содСрТит Π΄ΠΈΡΠΊΡ€ΠΈΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ поставки ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ SSPL Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄Π° самого прилоТСния, Π½ΠΎ ΠΈ исходных тСкстов всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π²ΠΎΠ²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹Ρ… Π² прСдоставлСниС ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ сСрвиса.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° FerretDB сводилась ΠΊ трансляции ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ MongoDB Π² SQL-запросы ΠΊ PostgreSQL, Π½ΠΎ начиная с вСрсии FerretDB 2.0, которая находится Π½Π° стадии ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π° Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹, для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° BSON задСйствовано PosgreSQL-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ DocumentDB. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° использованиС DocumentDB ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² 20 Ρ€Π°Π· ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ FerretDB для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Из Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π² FerretDB 2.0 отмСчаСтся ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ совмСстимости с MongoDB, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ поиска. Код FerretDB написан Π½Π° языкС Go ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ