Generalmente uso ID de incremento automático como claves principales en bases de datos. Estoy tratando de aprender los beneficios del uso de GUID. He leído este artículo: https://betterexplained.com/articles/the-quick-guide-to-guids/
Me doy cuenta de que estos GUID se utilizan para identificar objetos a nivel de aplicación. ¿Se almacenan también como la clave principal a nivel de la base de datos? Por ejemplo, digamos que tuve la siguiente clase:
public class Person
{
public GUID ID;
public string Name;
..
//Person Methods follow
}
Digamos que quería crear una nueva persona en la memoria y luego insertar la Persona en una base de datos. ¿Puedo hacer esto?
Person p1 = new Person();
p1.ID=GUID.NewGUID();
PersonRepository.Insert(p1);
Digamos que tenía una base de datos que contenía millones y millones de filas con un GUID como clave principal. ¿Será esto siempre único? ¿Incluso estoy entendiendo los GUID correctamente?
Leí este artículo anteriormente: http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/ . Me confunde un poco, ya que parece recomendar un medio feliz entre los GUID y los enteros como claves principales.
Editar 06/11/18
He llegado a creer que las guías son más adecuadas que las ins para mis requisitos. Estoy usando CQRS más en estos días y los GUID encajan mejor.
Me doy cuenta de que algunos desarrolladores modelan los GUID como cadenas en el modelo de dominio, por ejemplo, aquí: https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/ Buyer.cs : en este caso: IdentityGuid es un GUID modelado como una cadena. ¿Hay alguna razón para hacer esto que no sea lo que se establece aquí: utilizar un objeto de valor personalizado o un Guid como identificador de entidad en un sistema distribuido? . ¿Es "normal" modelar el GUID como una cadena o debería modelarlo como un GUID en el modelo y la base de datos?