TG Telegram Group & Channel
.NET Разработчик | United States America (US)
Create: Update:

День 2225. #ЗаметкиНаПолях
UUID и ULID в .NET

Хотя UUID (универсальные уникальные идентификаторы) были отраслевым стандартом в течение многих лет, ULID (универсальные уникальные лексикографически сортируемые идентификаторы) являются превосходной альтернативой в определённых контекстах. Про сортируемые GUID, появившиеся в .NET 9 я уже писал ранее. Сегодня рассмотрим их альтернативу (например, если вы ещё не перешли на .NET 9).

Стандартный формат для UUID:

afdf5738–6a8e-4d1a-90db-e894a3828320

13й символ – это версия UUID, а 17й – обозначает вариант (вид и значение UUID).

UUID, особенно версии 4, являются в высокой степени случайными. Эта случайность, хотя и обеспечивает уникальность, может привести к узким местам производительности в базах данных из-за низкой эффективности индексации.

ULID решают некоторые ограничения производительности и сортировки UUID. Они объединяют временную метку со случайными данными для создания 128-битного идентификатора, который можно сортировать лексикографически. Типичный ULID выглядит следующим образом:
01HZW2RKF63AWC1BT901FPGRGT

ULID состоит из метки времени Unix в миллисекундах (первые 10 символов) и случайно сгенерированных остальных символов.

Чтобы использовать ULID в .NET, нужно установить NuGet-пакет Ulid (доступен во всех версиях .NET, даже в .NET Framework):
using System;
using NUlid;

Ulid newUlid = Ulid.NewUlid();
Console.WriteLine(newUlid.ToString());


Преимущества
- Лексикографическая сортировка, что значительно повышает индексацию базы данных и производительность запросов.
- Совместимость: ULID имеют длину 128 бит, что обеспечивает совместимость с системами, разработанными для UUID.

Пример использования: интеграция с Entity Framework
Чтобы использовать ULID в Entity Framework, вы можете настроить модели на использование ULID в качестве первичных ключей:
public class Order
{
[Key]
public Ulid OrderId { get; set; }
public DateTime OrderDate { get; set; }
// …
}

protected override void OnModelCreating(ModelBuilder mb)
{
mb.Entity<Order>()
.Property(o => o.OrderId)
.HasConversion(
v => v.ToString(),
v => Ulid.Parse(v));
}


Источник: https://medium.com/codenx/uuid-and-ulid-in-net-maximizing-efficiency-in-unique-identifiers-a94c41177128

День 2225. #ЗаметкиНаПолях
UUID и ULID в .NET

Хотя UUID (универсальные уникальные идентификаторы) были отраслевым стандартом в течение многих лет, ULID (универсальные уникальные лексикографически сортируемые идентификаторы) являются превосходной альтернативой в определённых контекстах. Про сортируемые GUID, появившиеся в .NET 9 я уже писал ранее. Сегодня рассмотрим их альтернативу (например, если вы ещё не перешли на .NET 9).

Стандартный формат для UUID:
afdf5738–6a8e-4d1a-90db-e894a3828320

13й символ – это версия UUID, а 17й – обозначает вариант (вид и значение UUID).

UUID, особенно версии 4, являются в высокой степени случайными. Эта случайность, хотя и обеспечивает уникальность, может привести к узким местам производительности в базах данных из-за низкой эффективности индексации.

ULID решают некоторые ограничения производительности и сортировки UUID. Они объединяют временную метку со случайными данными для создания 128-битного идентификатора, который можно сортировать лексикографически. Типичный ULID выглядит следующим образом:
01HZW2RKF63AWC1BT901FPGRGT

ULID состоит из метки времени Unix в миллисекундах (первые 10 символов) и случайно сгенерированных остальных символов.

Чтобы использовать ULID в .NET, нужно установить NuGet-пакет Ulid (доступен во всех версиях .NET, даже в .NET Framework):
using System;
using NUlid;

Ulid newUlid = Ulid.NewUlid();
Console.WriteLine(newUlid.ToString());


Преимущества
- Лексикографическая сортировка, что значительно повышает индексацию базы данных и производительность запросов.
- Совместимость: ULID имеют длину 128 бит, что обеспечивает совместимость с системами, разработанными для UUID.

Пример использования: интеграция с Entity Framework
Чтобы использовать ULID в Entity Framework, вы можете настроить модели на использование ULID в качестве первичных ключей:
public class Order
{
[Key]
public Ulid OrderId { get; set; }
public DateTime OrderDate { get; set; }
// …
}

protected override void OnModelCreating(ModelBuilder mb)
{
mb.Entity<Order>()
.Property(o => o.OrderId)
.HasConversion(
v => v.ToString(),
v => Ulid.Parse(v));
}


Источник: https://medium.com/codenx/uuid-and-ulid-in-net-maximizing-efficiency-in-unique-identifiers-a94c41177128
👍17👎2


>>Click here to continue<<

.NET Разработчик




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)