MangoDB dimodenkan dan kini bertukar kepada FerretDB

Baru-baru inis hari berita pelancaran projek itu diumumkan FerretDB, (dahulu MangoDB), yang membolehkan anda menggantikan DBMS berorientasikan dokumen MongoDB dengan PostgreSQL tanpa membuat sebarang perubahan pada kod aplikasi anda.

FerretDB dilaksanakan sebagai pelayan proksi yang menterjemahkan panggilan ke MongoDB ke dalam pertanyaan SQL kepada PostgreSQL, membolehkan anda menggunakan PostgreSQL sebagai storan sebenar.

FerretDB (dahulu MangoDB) diasaskan untuk menjadi pengganti sumber terbuka de facto untuk MongoDB. FerretDB ialah proksi sumber terbuka yang menukar pertanyaan protokol wayar MongoDB kepada SQL, menggunakan PostgreSQL sebagai enjin pangkalan data.

Keperluan untuk penghijrahan mungkin timbul disebabkan oleh peralihan MongoDB kepada lesen SSPL bukan percuma, yang berdasarkan lesen AGPLv3, tetapi bukan sumber terbuka, kerana ia mengandungi keperluan diskriminasi untuk disediakan di bawah lesen SSPL bukan sahaja aplikasi kod itu sendiri, tetapi juga kod sumber semua komponen yang terlibat dalam menyediakan perkhidmatan awan.

Khalayak sasaran untuk FerretDB ialah pengguna yang tidak menggunakan ciri lanjutan MongoDB dalam aplikasi mereka, tetapi ingin menggunakan timbunan perisian terbuka sepenuhnya.

Dalam peringkat pembangunan semasa, FerretDB ia masih menyokong hanya sebahagian daripada ciri MongoDB yang paling kerap digunakan dalam aplikasi biasa. Pada masa hadapan, mereka merancang untuk mencapai sokongan pemacu penuh untuk MongoDB dan menyediakan keupayaan untuk menggunakan FerretDB sebagai pengganti telus untuk MongoDB.

Harus diingat bahawa MongoDB menduduki tempat khusus di kalangan sistem yang pantas dan berskala yang beroperasi pada data dalam format kunci/nilai, dan DBMS hubungan, berfungsi dan mudah dalam menjana pertanyaan.

Kebanyakan pengguna MongoDB tidak memerlukan banyak ciri lanjutan yang ditawarkan oleh MongoDB; walau bagaimanapun, mereka memerlukan penyelesaian pangkalan data sumber terbuka yang mudah digunakan. Menyedari perkara ini, FerretDB berada di sini untuk mengisi jurang itu.

MongoDB menyokong penyimpanan dokumen dalam format seperti JSON, mempunyai bahasa yang agak fleksibel untuk menjana pertanyaan, boleh mencipta indeks untuk pelbagai atribut yang disimpan, menyediakan storan objek besar binari yang cekap, menyokong pengelogan operasi untuk menukar dan menambah data kepada pangkalan data, ia boleh berfungsi mengikut paradigma Map/Reduce, ia menyokong replikasi dan pembinaan konfigurasi toleran kesalahan.

Dalam keluaran FerretDB 0.1.0 dinyatakan bahawa direka semula sepenuhnya cara data PostgreSQL diambil semula. Sebelum ini, untuk setiap permintaan MongoDB yang masuk, pertanyaan SQL ke PostgreSQL telah dijana, menggunakan fungsi untuk berfungsi dengan format JSON dan menapis hasil di sebelah PostgreSQL.

Disebabkan perbezaan dalam semantik PostgreSQL dan fungsi json MongoDB, terdapat percanggahan dalam tingkah laku apabila membandingkan dan menyusun pelbagai jenis. Untuk menyelesaikan masalah ini, sampel data berlebihan kini diekstrak daripada PostgreSQL dan penapisan hasilnya dilakukan di sebelah FerretDB, yang memungkinkan untuk mengulangi tingkah laku MongoDB dalam kebanyakan situasi.

Harga peningkatan keserasian adalah penalti prestasi, yang pada keluaran akan datang dijangka akan diimbangi oleh penapisan terpilih di sebelah FerretDB hanya pertanyaan yang terdapat perbezaan tingkah laku.

Contohnya, pertanyaan "db.collection.find({_id: 'some-id-value'})" boleh diproses sepenuhnya dalam PostgreSQL. Matlamat utama projek pada peringkat pembangunan ini adalah untuk mencapai keserasian dengan MongoDB, dan prestasi masih diturunkan ke latar belakang.

Daripada perubahan fungsi dalam versi baharu, terdapat sokongan untuk semua pengendali bitwise, pengendali perbandingan "$e", serta pengendali "$elemMatch" dan "$bitsAllClear".

Akhirnya bagi mereka yang berminat untuk mengetahui lebih lanjut mengenainya, mereka harus tahu bahawa kod itu ditulis dalam Go dan diedarkan di bawah lesen Apache 2.0 dan anda boleh menyemak kodnya dalam pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.