ขณะนี้เรากำลังใช้ทรัพยากรที่มีอยู่ด้วยโซลูชั่น mssql เซิร์ฟเวอร์ของเรา
ขณะนี้เรามีตัวเลือกแบบดั้งเดิมมากมายเกี่ยวกับการย้ายครั้งต่อไปเพื่อรับมือกับโหลด:
- ซื้อ CPU และ IO เร็วขึ้น
- แยกลูกค้าบางรายออกเป็นเซิร์ฟเวอร์แยกต่างหาก
- ย้าย db ไปยังคลัสเตอร์
ทั้งหมดมีราคาแพงทั้งในแง่ของลิขสิทธิ์และฮาร์ดแวร์หรือเวลา ดังนั้นฉันต้องการเพิ่มตัวเลือกอื่นโดยการย้ายทั้งระบบไปยังโซลูชันที่ปรับขนาดได้ซึ่งสัญญาของคาสซานดราเครื่องยนต์ nosql
แต่ฉันไม่แน่ใจและไม่มีประสบการณ์กับฐานข้อมูล noSQL ดังนั้นฉันต้องเข้าใจโครงสร้างของข้อมูล "ที่ไม่มีโครงสร้าง"
ในแอปพลิเคชันของเราเราจะจัดเก็บข้อมูลที่ผู้ใช้ป้อนในรูปแบบต่างๆเป็นรายการ "คีย์ - ค่า" มีตารางหลักที่มีองค์ประกอบส่วนหัว (เช่นคำสั่งซื้อ) และมีตารางลูกที่มีคู่ค่าคีย์ประกอบไปด้วยเนื้อหาของคำสั่งซื้อ (เช่น Order_Lines)
หน่วยธุรกิจที่ชาญฉลาดคำสั่งซื้อและคำสั่งซื้อเป็นหน่วย แต่เนื่องจาก RDBMS พวกเขาจะถูกเก็บไว้ในตารางและจะต้องเข้าร่วมตลอดเวลา
ในระหว่างการดำเนินการบางครั้งเราเลือกที่จะโหลดเฉพาะส่วนบน แต่ส่วนใหญ่เราโหลดแถวหลัก + KVP บางส่วนเพื่อแสดงข้อมูลที่เป็นประโยชน์
ตัวอย่างเช่นในรายการภาพรวมเราจะแสดงตัวระบุส่วนหัว + ค่าบางค่าในคอลัมน์สำหรับแต่ละแถว
ปรับปรุง: เราเก็บรูปแบบใด ๆ ดังนั้นโดยทั่วไปเราจัดเก็บ "เอกสาร" อย่างไรก็ตามเราต้องจัดเตรียมและค้นหาในรูปแบบเหล่านี้ด้วยค่าใด ๆ การเรียงลำดับ ฯลฯ การควบคุมการเข้าถึงข้อมูลเพิ่มเลเยอร์ของการคอมไพล์อีกครั้งในฐานข้อมูล
ตามที่คุณคาดเดาจำนวนและความพร้อมใช้งานของ KVP บางอย่างจะแตกต่างกันไปตามวัตถุ ไม่มีความเป็นไปได้ที่ถูกต้องในการสร้างตารางเดียวสำหรับวัตถุแต่ละชนิดเนื่องจากเราจะต้องสร้างตารางนับพันสำหรับการรวมข้อมูลที่แตกต่างกัน
"พจนานุกรม" ประเภทนี้เช่นชุดข้อมูลจะถูกเก็บไว้ในฐานข้อมูล noSQL ดีกว่าหรือไม่ และเราจะได้ประโยชน์จากการทำงานนี้หรือไม่? คาสซานดราจำลองหัว + KVP เหล่านี้เป็นชุดข้อมูลเดียวหรือไม่ เมื่อดูที่หน้าเว็บคาสซานดราและบทเรียนบางอย่างฉันมีความประทับใจว่า RDBMS และคาสซานดราของเราแตกต่างกันมากในแง่ของการจัดระเบียบข้อมูลทำให้เรามีจำนวนผู้เข้าร่วมมากหากคุณต้องการเลือก 5 KVP สำหรับรายการสำหรับแต่ละแถว
ยินดีต้อนรับการตรัสรู้ก็ชี้ไปที่เอกสารที่อธิบายปัญหาก็โอเค