MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Beberapa Basis Data di MongoDB untuk SaaS

Bukan jawaban yang mudah karena banyak bergantung pada arsitektur aplikasi, penggunaan, dan pola kueri Anda, distribusi di antara klien (yaitu:apakah tingkat penggunaan kira-kira sama di seluruh klien, atau dapatkah Anda memiliki 10% klien yang menggunakan 90% dari sumber daya), berapa banyak yang dapat Anda belanjakan untuk manajemen kode vs operasi dan sejumlah besar masalah lainnya. Berikut beberapa hal yang perlu dipertimbangkan:

1) memiliki satu database akan membuat manajemen operasi Anda lebih mudah, membutuhkan lebih sedikit sumber daya komputasi, dan memungkinkan Anda untuk meningkatkan skala lebih baik, tetapi pengkodean lapisan akses akan lebih sulit dan Anda benar-benar harus merancang lapisan keamanan Anda dengan baik untuk alasan yang jelas. Anda juga akan menggunakan lebih sedikit sumber daya di ujung klien/server web karena akan ada lebih sedikit koneksi.

Ada dua opsi skema populer saat mendekati satu database monolitik:

  • Anda dapat menempatkan semua data serupa dalam satu koleksi (yaitu:profil untuk semua akun masuk ke dalam koleksi yang sama) dan memberikan setiap dokumen kunci clientid untuk mengidentifikasi data mana yang termasuk dalam akun mana. Ini dapat memberi Anda opsi terbaik (bergantung pada arsitektur skema Anda) untuk skala dengan sumber daya komputasi paling sedikit.
  • Pilihan lainnya adalah memisahkan data klien berdasarkan koleksi - setiap klien akan memiliki koleksinya sendiri dalam database yang diidentifikasi dengan awalan clientid (yaitu:clientid_userprofiles).

2) opsi database per klien akan memberi Anda lebih banyak sakit kepala manajemen operasi dan biaya lebih banyak karena Anda akan membutuhkan lebih banyak sumber daya komputasi. Di sisi lain, biaya pengkodean Anda harus lebih sedikit karena kode akan lebih mudah ditulis. Ini juga akan memungkinkan Anda untuk mendistribusikan sumber daya Anda dengan lebih baik antara pengguna berat dan ringan. Misalnya, Anda dapat memindahkan klien penggunaan berat ke mesin yang lebih kuat dan menyediakan sharding per pelanggan.

3) Anda dapat memberikan kombinasi dari dua opsi - database khusus untuk pengguna kelas atas (akun yang membayar lebih), dan kemudian database bersama dengan data yang dipisahkan oleh pengumpulan untuk klien kelas bawah dan akun uji/freemium.

Perhatikan bahwa jika Anda menggunakan banyak rute basis data, Anda harus melihat opsi --smallfiles startup. Ini akan membantu Anda dalam situasi di mana Anda memiliki banyak orang yang menyiapkan "akun percobaan" tetapi tidak melakukan banyak hal dengan mereka.

Bagaimanapun, semoga hal di atas memberi Anda bahan renungan. Lakukan penelusuran di https://groups.google.com /forum/?fromgroups#!searchin/mongodb-user/multitenant karena ada sejumlah diskusi di forum Mongo tentang masalah khusus ini.

Adapun implikasi audit, tergantung pada tingkat kepatuhan audit yang perlu Anda patuhi. Jika Anda mengharapkan klien keberuntungan 1000, persyaratan kepatuhan Anda akan jauh lebih tinggi (dan jauh lebih mahal - pikirkan $ 10 hingga $ 100 ribuan dolar), daripada jika klien Anda adalah pemula yang mungkin belum pernah mendengar tentang SAS70, dll. Jawabannya juga tergantung pada jenis data yang Anda simpan - apakah itu data keuangan pengguna, atau hanya forum pengguna? Pada dasarnya, jika ada kekhawatiran tentang perlunya lulus audit keamanan untuk perusahaan besar di masa mendatang, jangan pernah memikirkan pendekatan basis data bersama.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. perbarui elemen tertentu dari mongodb array dokumen bersarang di mana memiliki dua kecocokan

  2. C# MongoDB - Bagaimana cara menambah dan menghapus item ke beberapa elemen array bersarang?

  3. Menggunakan findOne di mongodb untuk mendapatkan elemen dengan max id

  4. Merujuk skema lain di Mongoose

  5. Mengimpor Data Ke Instans MongoDB