ฉันรู้ว่าคำถามประเภทนี้เกิดขึ้นมากมาย แต่ฉันยังไม่ได้อ่านข้อโต้แย้งที่น่าสนใจใด ๆ เพื่อช่วยในการตัดสินใจ กรุณาทนกับฉัน!
ฉันมีฐานข้อมูลขนาดใหญ่ - มันเติบโตประมาณ 10,000,000 รายการต่อวัน ข้อมูลมีความสัมพันธ์และสำหรับเหตุผลด้านประสิทธิภาพฉันโหลดตารางด้วย BULK COPY ด้วยเหตุนี้ฉันจำเป็นต้องสร้างคีย์สำหรับแถวและไม่สามารถพึ่งพาคอลัมน์ตัวตน
เลขจำนวนเต็ม 64- บิต - ใหญ่ - กว้างพอสำหรับฉันที่จะใช้ แต่เพื่อรับประกันเอกลักษณ์ฉันต้องมีเครื่องกำเนิดส่วนกลางเพื่อสร้าง ID ของฉันให้ฉัน ขณะนี้ฉันมีบริการตัวสร้างซึ่งอนุญาตให้บริการสำรองหมายเลขลำดับ X และรับประกันว่าไม่มีการชนกัน อย่างไรก็ตามผลที่ตามมาก็คือบริการทั้งหมดที่ฉันเชื่อถือได้จากเครื่องกำเนิดไฟฟ้าส่วนกลางนี้และดังนั้นฉันจึงถูก จำกัด ในวิธีที่ฉันสามารถกระจายระบบของฉันและฉันไม่พอใจกับการพึ่งพาอื่น ๆ (เช่นต้องใช้การเข้าถึงเครือข่าย) โดยการออกแบบนี้ นี่เป็นปัญหาในบางโอกาส
ตอนนี้ฉันกำลังพิจารณาการใช้ GUID ตามลำดับเป็นคีย์หลักของฉัน (สร้างจาก SQL ภายนอก) เท่าที่ฉันสามารถตรวจสอบได้จากการทดสอบของฉันเองข้อเสียเปรียบเพียงอย่างเดียวคือค่าใช้จ่ายในพื้นที่ดิสก์ของประเภทข้อมูลที่กว้างขึ้น (ซึ่งเป็นที่มาจากการใช้งานในดัชนี) ฉันไม่ได้เห็นการชะลอตัวที่มองเห็นได้ในประสิทธิภาพการค้นหาเมื่อเทียบกับทางเลือกที่ใหญ่ การโหลดตารางด้วย BULK COPY ช้ากว่าเล็กน้อย แต่ไม่มากนัก ดัชนีที่ใช้ GUID ของฉันไม่ได้แยกส่วนด้วยการใช้งาน GUID ตามลำดับของฉัน
โดยพื้นฐานแล้วสิ่งที่ฉันต้องการรู้คือหากมีข้อควรพิจารณาอื่น ๆ ที่ฉันอาจมองข้าม ในขณะนี้ฉันมีแนวโน้มที่จะก้าวกระโดดและเริ่มใช้ GUID ฉันไม่ได้เป็นผู้เชี่ยวชาญด้านฐานข้อมูลดังนั้นฉันขอขอบคุณคำแนะนำใด ๆ