โดยทั่วไปฉันใช้รหัสการเพิ่มอัตโนมัติเป็นคีย์หลักในฐานข้อมูล ฉันพยายามเรียนรู้ประโยชน์ของการใช้ GUID ฉันได้อ่านบทความนี้: https://betterexplained.com/articles/the-quick-guide-to-guids/
ฉันรู้ว่า GUID เหล่านี้ใช้เพื่อระบุวัตถุในระดับแอปพลิเคชัน พวกเขายังเก็บไว้เป็นคีย์หลักในระดับฐานข้อมูล ตัวอย่างเช่นสมมติว่าฉันมีคลาสต่อไปนี้:
public class Person
{
public GUID ID;
public string Name;
..
//Person Methods follow
}
ว่าฉันต้องการสร้างคนใหม่ในหน่วยความจำแล้วใส่คนลงในฐานข้อมูล ฉันขอทำสิ่งนี้ได้ไหม
Person p1 = new Person();
p1.ID=GUID.NewGUID();
PersonRepository.Insert(p1);
สมมติว่าฉันมีฐานข้อมูลที่ประกอบด้วยแถวนับล้านแถวที่มี GUID เป็นคีย์หลัก สิ่งนี้จะไม่ซ้ำกันหรือไม่ ฉันเข้าใจแม้แต่ GUID อย่างถูกต้องหรือไม่
ผมอ่านบทความนี้ก่อนหน้านี้: http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/ มันทำให้ฉันสับสนเล็กน้อยตามที่ปรากฏเพื่อแนะนำสื่อกลางที่มีความสุขระหว่าง GUID และจำนวนเต็มเป็นคีย์หลัก
แก้ไข 11/06/18
ฉันเชื่อว่า Guids นั้นเหมาะสมกว่า ints สำหรับความต้องการของฉัน ฉันใช้ CQRS มากกว่านี้ในวันนี้และ GUID นั้นเหมาะสมกว่า
ฉันสังเกตว่านักพัฒนาบางคนวาง GUID เป็นสตริงในรูปแบบโดเมนเช่นที่นี่: https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/OrderingDomain/AggregatesModel/BuyerAggregate/ Buyer.cs - ในกรณีนี้: IdentityGuid เป็น GUID ที่จำลองเป็นสตริง มีเหตุผลใดที่จะทำสิ่งนี้นอกเหนือจากที่ระบุไว้ที่นี่: ใช้วัตถุค่าที่กำหนดเองหรือ Guid เป็นตัวระบุเอนทิตีในระบบกระจาย . เป็น "ปกติ" ในการสร้างโมเดล GUID เป็นสตริงหรือฉันควรสร้างแบบจำลองเป็น GUID ในรูปแบบและฐานข้อมูลหรือไม่