อย่างไรก็ตามมี บริษัท บางแห่งที่กลัวว่าข้อมูลของพวกเขาอาจถูกบุกรุกดังนั้นเราจึงประเมินโซลูชั่นอื่น ๆ
นี่เป็นโชคร้ายเนื่องจากบางครั้งลูกค้าประสบกับความเข้าใจผิดว่ามีเพียงการแยกทางกายภาพเท่านั้นที่สามารถให้ความปลอดภัยที่เพียงพอ
มีบทความ MSDN ที่น่าสนใจชื่อMulti-Tenant Data Architectureซึ่งคุณอาจต้องการตรวจสอบ นี่คือวิธีที่ผู้เขียนกล่าวถึงความเข้าใจผิดเกี่ยวกับวิธีการแบ่งปัน:
ความเข้าใจผิดที่พบบ่อยถือได้ว่าการแยกทางกายภาพเท่านั้นสามารถให้ระดับความปลอดภัยที่เหมาะสม ในความเป็นจริงข้อมูลที่จัดเก็บโดยใช้วิธีการที่ใช้ร่วมกันยังสามารถให้ความปลอดภัยของข้อมูลที่แข็งแกร่ง แต่ต้องใช้รูปแบบการออกแบบที่ซับซ้อนมากขึ้น
สำหรับการพิจารณาทางเทคนิคและธุรกิจบทความจะทำการวิเคราะห์สั้น ๆ ว่าวิธีการใดที่เหมาะสมกว่าอีกวิธี:
จำนวนลักษณะและความต้องการของผู้เช่าที่คุณคาดว่าจะให้บริการทั้งหมดส่งผลกระทบต่อการตัดสินใจสถาปัตยกรรมข้อมูลของคุณในรูปแบบที่แตกต่างกัน คำถามต่อไปนี้บางคำถามอาจทำให้คุณอคติต่อวิธีที่แยกจากกันมากขึ้นในขณะที่คำถามอื่นอาจทำให้คุณมีอคติมากกว่า
คุณคาดหวังว่าจะมีผู้เช่าในอนาคตจำนวนเท่าใด คุณอาจไม่สามารถประเมินการใช้งานที่คาดหวังกับผู้มีอำนาจ แต่คิดในแง่ของคำสั่งขนาด: คุณกำลังสร้างแอปพลิเคชันสำหรับผู้เช่าหลายร้อยคนหรือไม่? พัน? มีหมื่นไหม มากกว่า? ยิ่งคุณคาดหวังว่าฐานผู้เช่าของคุณจะมีขนาดใหญ่เท่าใดคุณก็จะยิ่งมีแนวโน้มที่จะพิจารณาวิธีการแบ่งปันที่มากกว่า
คุณคาดหวังว่าพื้นที่เก็บข้อมูลของผู้เช่าเฉลี่ยจะครอบครองพื้นที่เท่าใด หากคุณคาดหวังว่าผู้เช่าบางส่วนหรือทั้งหมดจะเก็บข้อมูลจำนวนมากวิธีการแยกฐานข้อมูลน่าจะดีที่สุด (อันที่จริงข้อกำหนดในการจัดเก็บข้อมูลอาจบังคับให้คุณใช้รูปแบบฐานข้อมูลแยกต่างหากอย่างไรก็ตามถ้าเป็นเช่นนั้นมันจะง่ายกว่ามากในการออกแบบแอปพลิเคชันด้วยวิธีนี้ตั้งแต่ต้นกว่าจะย้ายไปยัง
คุณคาดหวังว่าผู้ใช้งานพร้อมกันหลายคนที่คาดหวังว่าผู้เช่าโดยเฉลี่ยจะให้การสนับสนุน? ยิ่งจำนวนมากเท่าไหร่ก็ยิ่งมีความเหมาะสมมากขึ้นและแนวทางที่แยกได้มากขึ้นก็คือการตอบสนองความต้องการของผู้ใช้ปลายทาง
คุณคาดหวังที่จะให้บริการที่มีมูลค่าเพิ่มต่อผู้เช่าเช่นความสามารถในการสำรองข้อมูลต่อผู้เช่าและความสามารถในการกู้คืนหรือไม่ บริการดังกล่าวง่ายกว่าที่จะเสนอผ่านแนวทางที่แยกได้มากขึ้น
ปรับปรุง:เพิ่มเติมเพื่อปรับปรุงเกี่ยวกับจำนวนผู้เช่าที่คาดหวัง
จำนวนผู้เช่าที่คาดหวัง (10k) นั้นควรยกเว้นวิธีการหลายฐานข้อมูลส่วนใหญ่หากไม่ใช่ทุกสถานการณ์ ฉันไม่คิดว่าคุณจะนึกฝันว่าจะรักษาอินสแตนซ์ฐานข้อมูลไว้ถึง 10,000 อินสแตนซ์และต้องสร้างสิ่งใหม่หลายร้อยรายการทุกวัน
จากพารามิเตอร์นั้นเพียงอย่างเดียวดูเหมือนว่า shared-database วิธี single-schema เหมาะสมที่สุด ความจริงที่ว่าคุณจะเก็บประมาณ 50Mb ต่อผู้เช่าและไม่มี add-on ของผู้เช่าทำให้วิธีนี้เหมาะสมยิ่งขึ้น
บทความ MSDN ที่อ้างถึงข้างต้นกล่าวถึงรูปแบบความปลอดภัยสามรูปแบบที่จัดการกับข้อควรพิจารณาด้านความปลอดภัยสำหรับวิธีแชร์ฐานข้อมูล:
เมื่อคุณมั่นใจในมาตรการความปลอดภัยข้อมูลของแอปพลิเคชันของคุณคุณจะสามารถเสนอบริการระดับลูกค้าที่รับประกันความปลอดภัยของข้อมูลที่แข็งแกร่ง ใน SLA ของคุณนอกเหนือจากการค้ำประกันคุณสามารถอธิบายมาตรการที่คุณควรทำเพื่อให้แน่ใจว่าข้อมูลจะไม่ถูกบุกรุก
ปรับปรุง 2:เห็นได้ชัดว่าพวก Microsoft ย้าย / สร้างบทความใหม่เกี่ยวกับเรื่องนี้ลิงค์เดิมหายไปและนี่เป็นเรื่องใหม่: รูปแบบการครอบครองฐานข้อมูลผู้เช่าหลาย SaaS (รุ่งโรจน์เพื่อ Shai Kerer)