C# で UUID を生成する

Muhammad Zeeshan 2023年10月12日
  1. ユニバーサル一意識別子または UUID
  2. C#UUID を生成する
  3. C#GUID 形式
  4. C#GUID 識別子
  5. C#GUID の欠点
C# で UUID を生成する

この記事は、UUID とは何かを理解し、C# で生成するのに役立ちます。

ユニバーサル一意識別子または UUID

ユニバーサル一意識別子は、UUID と呼ばれます。一意の識別には GUID を使用します。

すでに主キーがあるとします。その場合、重複のリスクが低い 128 ビット整数(16 バイト)であるため、GUID を使用します。これにより、すべてのデータベースとコンピューターで使用でき、データの衝突を回避できます。

C#UUID を生成する

.Net フレームワークには、C# 言語でバージョン 4 の UUID を作成するための組み込み機能が含まれています。UUID を生成する例を次に示します。

構文:

Guid MyUniqueId = Guid.NewGuid();

例:

using System;
using System.Diagnostics;

namespace MyUUIDGeneration {
  class UUID {
    public static void Main(string[] args) {
      Guid myUUId = Guid.NewGuid();
      string convertedUUID = myUUId.ToString();
      Console.WriteLine("Current UUID is: " + convertedUUID);
    }
  }
}

出力:

Current UUID is: 123z0987-d23b-43gd-s566-000414174266

上記のコード例を実行するには、これらのライブラリが必要です。

using System;
using System.Diagnostics;

Guid.NewGuid() と呼ばれる静的アプローチを展開して、MyUniqueId という名前の新しい変数を初期化しました。 .Net では、GUIDUUID と同じです。

Guid myUUId = Guid.NewGuid();

GUID オブジェクトを文字列に変換するには、ToString() 関数を使用します。GUID 文字列表現は、通常の UUID を表します。

C#GUID 形式

GUID は、システム名前空間にある構造です。16 進整数の文字列は、言語で GUID を記述するための最も体系的なアプローチです。

このようなもの:{ 123z0987-d23b-43gd-s566-000414174266 }

C#GUID 識別子

GUID は、このユニークな識別子の名前です。Windows プログラムによって生成された GUID は、特定のアイテム、ソフトウェア、パーツ、またはリポジトリレコードを判別するために使用できます。

多くのプログラマーが独立して作業し、ID を生成する分散システムについて考えてみます。2 人のプログラマーが同じ ID を生成し、システムをマージするときに問題が発生する可能性があります。

したがって、一意である必要がある ID を生成する複数の独立したシステムまたはユーザーがいる場合は、GUID を使用する必要があります。プログラミングでインターフェースまたはメソッドを構築するとき、それを呼び出すために使用される一意の ID を割り当てます。

GUID はデータの衝突を防ぎます。さまざまなマシンやネットワークなどの間でデータベースを統合するのは簡単です。

レコードを挿入する前にメインキーを決定するのに役立ちます。理解するのは簡単ではありません。

C#GUID の欠点

すべての GUID には長所と短所の両方があります。10,000 エントリのデータベースでは、GUID は 160000 バイトを使用します。

もう 1つの欠点は、他のテーブルのキーのほとんどが外部キーであるということです。GUID のみが 5つの FK エントリで約 60 バイトを使用し、時間の経過とともにパフォーマンスの懸念の主な原因になります。

順序が狂っている手法は、ランダムな GUID を生成します。挿入タイムスタンプとして、ソートにいくつかの方法を適用する必要があります。

Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn