Bila anda sering bermain dengan `object` maka anda mau tidak mau akan membutuhkan UUID (Universally Unique Identifier) untuk memberikan nilai identitas `yang` unik bagi object tersebut. Nah Microsoft .NET sudah memiliki built-in class untuk UUID ini dan terkenal dengan GUID (Globally Unique Identifier).

Karena built-in, pemakaiannya pun cukup mudah:

Guid g = new Guid();
g = Guid.NewGuid();
Console.WriteLine(g);
Console.WriteLine(Guid.NewGuid());

Pada baris pertama, nilai g masih sama dengan nilai default atau dalam format canonical `100000000-0000-0000-0000-000000000000`. Dan dengan bantuan static method NewGuid() maka sebuah GUID baru yang (mungkin) unik akan dibuat. Penggalan code diatas akan menghasilkan 2 buah GUID yang berbeda.

Untuk programmer yang terbiasa menggunakan Relational Database, saya selalu menggunakan auto-increament value sebagai identitas dari tabel. Namun ini hampir tidak bisa dilakukan di dalam Object Database. Disinilah UUID digunakan, walaupun UUID tidak menjamin bahwa setiap nilai yang dihasilkan adalah unik, namun dengan kemungkinan nilai yang dihasilkan sebanyak 25616 membuat kemunculan dua nilai yang sama sangatlah kecil.
Cara penggunaannya pun cukup mudah, cukup tambahkan satu identifier Guid sebagai bagian dari object. Nah.. kalau sudah diberi identifikasi, object jadi lebih mudah di index dan di search.

Berikut contoh penggunaan pada object Person:

public class Person
{
Guid _personid;
string _name;
string _phoneNumber;
string _email;

public Person(string name, string phoneNumber, string email)
{
_name = name;
_phoneNumber = phoneNumber;
_email = email;
// Creating new UUID based on assumption that new Person object created
_personid = Guid.NewGuid();
}

public Person(Guid PersonID, string name, string phoneNumber, string email)
{
_name = name;
_phoneNumber = phoneNumber;
_email = email;
// assigning UUID to value, based on assumption that Person object is not a new object
_personid = PersonID;
}

public string Name { get { return _name; } set { _name = value;} }
public string PhoneNumber { get { return _phoneNumber; } set { _phoneNumber = value; } }
public string Email { get { return _email; } set { _email = value; } }
public Guid PersonID { get { return _personid; } set { _personid = value; } }
}

System.GUID adalah implementasi Microsoft dari UUID version 2 atau DCE Security. Dan saya anggap cukup mumpuni sehingga saya saat ini belum memerlukan porting implementasi UUID dari tempat lain.

2 Comments

Leave a Reply to donie Cancel reply

Your email address will not be published. Required fields are marked *