Apakah basis data multi-penyewa:
- Server DB yang memiliki basis data / skema yang berbeda (identik) untuk setiap pelanggan / penyewa ?; atau
- Server DB yang memiliki database / skema di mana pelanggan / penyewa berbagi catatan di dalam tabel yang sama?
Sebagai contoh, di bawah Opsi # 1 di atas, saya mungkin memiliki server MySQL di, katakanlah mydb01.example.com
,, dan mungkin memiliki customer1
database di dalamnya. customer1
Database ini mungkin memiliki, katakanlah, 10 tabel yang mendukung aplikasi saya untuk pelanggan tertentu (Pelanggan # 1). Mungkin juga memiliki customer2
database dengan 10 tabel yang sama persis di dalamnya, tetapi hanya berisi data untuk Pelanggan # 2. Mungkin memiliki customer3
database, customer4
database, dan sebagainya.
Dalam Opsi # 2 di atas, hanya akan ada satu basis data / skema, katakanlah myapp_db
, lagi dengan 10 tabel di dalamnya (sama seperti di atas). Tapi di sini, data untuk semua pelanggan ada di dalam 10 tabel itu, dan karena itu mereka "berbagi" tabel. Dan pada lapisan aplikasi, logika dan kontrol keamanan dimana pelanggan memiliki akses ke catatan mana dalam 10 tabel tersebut, dan sangat hati-hati untuk memastikan bahwa Pelanggan # 1 tidak pernah masuk ke aplikasi dan melihat data Pelanggan # 3, dll.
Manakah dari paradigma ini yang merupakan DB "multi-tenant" tradisional? Dan jika tidak ada, maka dapatkah seseorang memberi saya contoh (menggunakan skenario yang dijelaskan di atas) tentang apa itu DB multi-penyewa?
Jawaban:
Kedua konsep ini disebut multi-tenancy, karena ini hanya konsep logis "di mana satu contoh perangkat lunak berjalan di server dan melayani beberapa penyewa" (dari Wikipedia ). Tetapi bagaimana Anda menerapkan konsep ini "secara fisik" terserah Anda.
Tentu saja, aplikasi membutuhkan konsep basis data yang memungkinkan untuk memisahkan data dari penyewa yang berbeda, dan gagasan multi-penyewa adalah memiliki beberapa sumber daya server dibagi (setidaknya perangkat keras) untuk pemanfaatan sumber daya yang lebih baik, dan administrasi yang lebih mudah. Jadi "multi tenant DB" adalah yang mendukung ini secara langsung , di mana bagian-bagian dari model atau tabel db dibagi.
Lebih tepatnya, adalah mungkin untuk membangun aplikasi multi-tenant dengan DB non-multi-tenant, memberikan instance DB individual per klien. Namun, ini menghalangi untuk berbagi sumber daya DB langsung antara penyewa, dan lapisan aplikasi harus memastikan untuk menghubungkan penyewa yang tepat ke database yang tepat.
sumber
Menurut Microsoft, istilah ini memiliki 3 arti potensial (satu database untuk semua penyewa, atau satu databaser per penyewa).
Untuk menggunakan contoh Anda, setiap pelanggan adalah penyewa sendiri.
Database per penyewa (pelanggan)
Basis data bersama, skema terpisah.
Basis data bersama, skema bersama.
Ada pro dan kontra untuk masing-masing, dijelaskan dengan baik dalam artikel ini: https://msdn.microsoft.com/en-us/library/aa479086.aspx
Bonus: Anda dapat menganggapnya sebagai tempat tinggal (sangat disederhanakan).
Setiap penyewa memiliki rumahnya sendiri. Mereka dapat melakukan apa pun yang mereka inginkan, dan jika terbakar, itu tidak benar-benar mempengaruhi orang lain.
Setiap penyewa berada di gedung yang sama, tetapi memiliki apartemen sendiri.
Semua orang tinggal di apartemen yang sama, dan semua barang ditandai dengan kertas tempel untuk menunjukkan siapa pemiliknya.
sumber