Apakah ada skema di mongodb?

Untuk membuat skema atau tidak, itulah pertanyaan yang diajukan Rob Ludwig dalam artikel Write Stuff ini. Apakah Anda memiliki Write Stuff untuk menulis tentang database di sini?

Di satu sisi, memilih apakah akan menggunakan skema atau tidak sama dengan memilih apakah akan menggunakan bahasa pemrograman yang diketik dengan kuat atau dinamis atau tidak. tradeoff utama adalah antara fleksibilitas dan kekakuan. Sama seperti bahasa yang diketik secara dinamis memungkinkan Anda untuk mengulang dan mengembangkan aplikasi Anda dengan cepat, tanpa skema memungkinkan Anda mengubah model data Anda dengan sedikit gesekan

Namun, kontrol ketat dan ketepatan yang diberlakukan oleh skema dan bahasa yang diketik memungkinkan Anda mempertahankan kelompok besar pengembang di halaman yang sama, dan memungkinkan Anda menangkap bug lebih awal dalam siklus pengembangan. Setiap bahasa dengan ODM berfitur lengkap untuk MongoDB juga memiliki pustaka untuk menerapkan skema dalam kode aplikasi, sehingga Anda selalu memiliki opsi untuk menyertakan skema dalam proyek Anda. Untuk lebih memahami pengorbanannya, ada baiknya untuk melihat lebih dekat pro dan kontra dari skema

Liar bebas. MongoDB Tanpa Skema

Menjadi "tanpa skema" adalah sedikit keliru karena hanya ada sedikit kasus penggunaan produksi di mana data sepenuhnya tidak terstruktur. Sebagian besar data Mongo biasanya memiliki struktur tersirat. Bahkan MongoDB baru-baru ini mengumumkan versi 3. 2 yang menyertakan beberapa alat untuk dan memvalidasinya. Meskipun data Anda dapat berkembang dari waktu ke waktu, data tersebut biasanya memiliki tulang punggung yang sama di setiap kumpulan yang menjadi dasar kueri Anda. Sebanyak orang berpendapat bahwa pergi tanpa skema adalah arsitektur barat liar di mana apa pun dapat dimasukkan ke dalam database yang jarang terjadi.

Sebenarnya, ada beberapa alasan mengapa Anda mungkin merasa lebih baik untuk tidak menggunakan skema untuk data Mongo Anda. Pertama, fleksibilitas Mongo dalam hal skema adalah alasan utama untuk menggunakan MongoDB. Jika Anda masih mengulangi bagaimana aplikasi Anda menggunakan data, dan data apa yang digunakannya, Anda mungkin tidak ingin mengikatkan diri pada satu bentuk yang mungkin diambil oleh data. Tidak menggunakan skema dengan Mongo memungkinkan Anda memanfaatkan sepenuhnya alat yang ditawarkan Mongo untuk memproyeksikan data Anda sesuka Anda dalam bentuk apa pun yang Anda inginkan

Selain itu, jika Anda memiliki aplikasi yang mengumpulkan data dengan berbagai struktur ke dalam satu kumpulan, mencoba memperkenalkan skema mungkin lebih merepotkan daripada nilainya. Lebih dari sekali, saya telah melihat skema berkembang dari definisi ketat tentang data apa yang seharusnya menjadi kumpulan objek yang longgar, di mana validasi hampir tidak mungkin karena sifat protean dari data yang sedang dioperasikan. Dunia nyata seringkali berantakan. suatu hari Anda berintegrasi dengan penyedia yang menyusun API mereka dengan satu cara, hari berikutnya Anda menendang mereka untuk pesaing dengan struktur yang sama sekali berbeda. Saat kebutuhan bisnis Anda berkembang, data Anda juga demikian

Skema Besar Hal. Menggunakan Skema Dengan Mongo

Sebagian besar argumen untuk menerapkan skema pada data Anda sudah diketahui dengan baik. skema mempertahankan struktur, memberikan gagasan yang jelas tentang apa yang masuk ke database, mengurangi bug yang dapat dicegah dan mengizinkan kode yang lebih bersih (tidak perlu lagi memeriksa jenis bidang yang keluar dari database sebelum menggunakannya). Skema adalah bentuk kode yang mendokumentasikan diri sendiri, karena mereka menjelaskan dengan tepat jenis data apa yang seharusnya, dan memberi tahu Anda pemeriksaan apa yang akan dilakukan. Banyak pustaka skema memungkinkan fungsi validasi di luar pemeriksaan tipe sederhana, sehingga Anda bahkan dapat memiliki skema yang memastikan, misalnya, bahwa bidang string adalah alamat email yang valid atau bidang GeoJSON berada di Amerika Serikat

Di atas alasan klasik untuk menggunakan skema ini, ada beberapa alasan khusus MongoDB untuk menggunakannya. Pertama, skema dapat membantu dengan beberapa sisi kasar saat melakukan kueri di Mongo. Meminta subdokumen di Mongo bisa membuat frustasi karena, seperti yang diingatkan oleh dokumentasi, "Saat melakukan pencocokan kesetaraan pada subdokumen, urutan bidang penting dan subdokumen harus sama persis. ”

Jika data Anda memiliki struktur yang rumit dengan banyak tingkatan, membuatnya dapat diprediksi dengan skema dapat membuat hidup Anda lebih mudah. Misalnya, jika Anda memiliki catatan karyawan dengan berbagai pembelian

{
  _id: 112,
  department: “r & d”,
  status: “full time”,
  purchases: [{
    authorizedBy: “accounting”,
    receiptsSubmitted: true,
    cost: 125.99,
    items: [{
      name: “plane ticket”,
      cost: 100,
    }, {
      name: “client lunch”,
      provider: “Applebee’ s”,
      cost: 25.99
    }],
  }],
},

dapat dengan cepat menjadi sulit untuk memikirkan tentang cara melakukan kueri kompleks hanya dengan melihat data. Skema memberikan beberapa jaminan tentang format data, dan cara untuk melihat semua jaminan tersebut di satu tempat. Jika Anda mencoba menemukan semua pembelian lebih dari $100 yang diotorisasi oleh departemen Anda yang belum mengirimkan tanda terimanya, akan lebih mudah melakukannya dengan skema di depan Anda

Skema juga sangat berguna saat dipasangkan dengan Object Document Manager (ODM). Luwak. js ODM untuk Node, sebagai contoh, dapat menggunakan skemanya secara cerdas untuk memastikan bahwa kueri Mongo Anda semuanya disetel ke nilai yang benar. Itu dapat melemparkan string ke ObjectIds, tanggal, atau angka yang diperlukan untuk kueri Anda, yang jauh lebih sederhana dan lebih cepat daripada mengelola jenis ini secara manual

Satu alasan terakhir untuk memilih skema dengan MongoDB adalah karena mereka mencegah Anda terlalu sering mengubah bentuk dokumen untuk koleksi tertentu. Pembaruan ke dokumen Mongo yang mengonversi data antara jenis atau ukuran dapat menjadi mahal karena Mongo harus merealokasi ruang untuk rekaman yang baru diubah ukurannya, sehingga pembaruan menjadi lambat. Bahkan contoh yang relatif kecil dapat menyebabkan masalah. Jika, katakanlah, Anda awalnya menyimpan nama di dokumen pengguna, sebagai string

{
    _id : 1,
    hostName : "Jay Leno",
    timeSlot : "20:00",
    show: "The Tonight Show"
}
_

dan Anda mengonversi dalam versi aplikasi yang lebih baru untuk menyimpan nama sebagai subdokumen saat nama diperbarui

{
    _id : 1,
    hostName : {
        first: "Conan",
        last: "O'Brien"
    }
    timeSlot: "20:00"
    show: "The Tonight Show"
}

ini dapat menyebabkan penulisan yang lambat saat Mongo menggeser dokumen untuk memberi ruang bagi dokumen yang baru diubah ukurannya. Jika Anda mendapati bahwa perubahan yang sering terjadi pada ukuran dokumen dalam kumpulan memperlambat aplikasi Anda, skema dapat membantu Anda dengan memaksa Anda memikirkan tentang perubahan yang Anda buat pada data Anda

Memutuskan

Saat Anda menilai pilihan Anda, luangkan waktu untuk memikirkan jalan di depan. Jika Anda sudah memahami dengan baik data yang akan Anda gunakan (misalnya, jika Anda berinteraksi dengan data dalam format tetap, jika Anda menerapkan standar), maka skema sangat masuk akal. Di lain waktu, keputusannya tidak begitu mudah. Tanyakan pada diri Anda seberapa gesit Anda berencana menjadi perusahaan. Akankah pelanggan baru memerlukan perubahan pada format data?

Terakhir, satu hal penting yang perlu dipertimbangkan saat melepaskan skema adalah bahwa ini bukan keputusan permanen. Jika Anda menolak untuk memaksakan skema saat ini, opsi tetap terbuka untuk Anda di masa mendatang. Kapan pun jika data Anda menjadi lebih teratur, atau Anda menemukan kurangnya skema menghalangi kemampuan Anda untuk berkoordinasi di antara banyak pengembang, Anda dapat mengadopsi skema dengan cukup mudah. Demikian pula, Anda selalu dapat membuka pintu air pada aplikasi yang sebelumnya memiliki skema dan mengizinkan semua jenis data masuk

Sumber daya tambahan

Sebagian besar bahasa memiliki pustaka untuk menerapkan skema pada tingkat aplikasi di Mongo. Berikut adalah pilihan

  • Piton. Ada beberapa pustaka skema yang terintegrasi dengan PyMongo. Humongulus menyediakan beberapa alat validasi. https. //github. com/entone/Humongolus

  • Node. Luwak. js adalah ODM Node utama dan menyertakan validasi ekstensif. http. // mongoosejs. com/docs/guide. html

  • Jawa. Driver Spring Data Mongo memberlakukan validasi dengan memetakan dokumen ke kelas. http. // proyek. musim semi. io/spring-data-mongodb/

  • Rubi. Proyek Mongoid yang luar biasa mendukung seluruh host fitur skema, mulai dari typecasting hingga validasi.

    Apakah MongoDB memiliki skema?

    Data di MongoDB memiliki skema yang fleksibel . Koleksi tidak menerapkan struktur dokumen secara default. Fleksibilitas ini memberi Anda pilihan pemodelan data yang sesuai dengan aplikasi Anda dan persyaratan kinerjanya.

    Apa itu skema di MongoDB?

    Apa itu Skema? . Anda dapat menggunakan skema BSON Layanan Aplikasi Atlas, yang memperluas standar Skema JSON, untuk menentukan model data aplikasi Anda dan memvalidasi dokumen setiap kali dibuat, diubah, atau dihapus. a JSON object that defines the the structure and contents of your data. You can use Atlas App Services' BSON schemas, which extend the JSON Schema standard, to define your application's data model and validate documents whenever they're created, changed, or deleted.

    Apakah skema diperlukan di MongoDB?

    Sebagai database NoSQL, MongoDB dianggap tanpa skema karena tidak memerlukan skema yang kaku dan telah ditentukan sebelumnya seperti database relasional.

    Bagaimana cara menemukan skema koleksi di MongoDB?

    Periksa Skema MongoDB dengan Schema Explorer .
    Klik kanan – Klik kanan pada koneksi apa pun di Pohon Koneksi dan pilih Analisis Skema
    Tombol – Pilih koleksi dan klik Skema di toolbar global