Oğuzhan Eren

my blog bounded context


RavenDB : Giriş

Tuesday, March 27, 2012

Merhaba arkadaşlar,

Blogumda aktif bir yazı dizisi hazırlamak istedim ve konu olarak döküman veritabanlarından olan açık kaynak kodlu (C#) RavenDB yi uygun gördüm. Bu konuda bildiklerimi sizinle ayrıntılı bir şekilde paylaşacağım.

Yazı içeriği başlık ve altında ayrıntılı açıklaması şeklinde ilerleyecektir.

Document Database nedir?

Döküman veritabanı sistemleri kayıtlarınızı ilişkisel tablolar yerine döküman olarak saklayan sistemlerdir. Bu sistem NoSQL mimarisine dayalıdır. NoSQL hakkında ayrıntılı bilgi için: http://en.wikipedia.org/wiki/NoSQL

İlişkisel bir datayı birden çok dağıtık tabloda tutmak yerine tek bir döküman nesnesi olarak tutar. Bu şekilde daha önceden şeması belli olmayan kayıtlar bu sistemde saklanabilir ve sorgulanabilir. Bu dökümanları saklamak ve kolay sorgulamak için genelde JSON formatı kullanılır. Bu sistemlerde her hangi bir döküman aşağıdakine benzer formatta gözükür.

Daha ayrıntılı bilgi için Wikipedia sayfasına göz atabilirsiniz: http://en.wikipedia.org/wiki/Document-oriented_database

RavenDB nedir?

RavenDB .Net ortamında C# dili kullanarak geliştirilmiş açık kaynak kodlu bir döküman veritabanıdır. Kişisel kullanım ve açık kaynak kodlu projeler için ücretsiz, ticari kullanımlar için ücretlidir. Ayrıntılı bilgi için (http://ravendb.net/licensing)

RavenDB üzerinde diğer bir çok döküman veritabanı sistemindeki gibi şema tanımlamanız gerekmez. Her hangi bir nesneyi direkt saklayabilir ve sorgulayabilirsiniz. Bu şekilde geliştirme zamanından tasarruf edebilir ve şemalarla uğraşmadığınızdan sadece uygulama sürecine odaklanabilirsiniz.

RavenDB kullanımına giriş

RavenDB web sitesinden (http://ravendb.net/download) RavenDB nin son release versiyonunu indirip zip dosyasını açtığınızda aşağıdaki gibi bir yapı göreceksiniz.

Bu klasör yapısında RavenDB server ve ClientAPI dosyaları yer alır. RavenDB yi aşağıdaki şekillerde çalıştırabilirsiniz:

1.Konsol uygulamasına çift tıklayarak çalıştırılabilir, genelde geliştirme ve debugging sırasında kullanılır.

2.Server klasörü altında bulunan Raven.Server.exe yi /install parametersi ile çalıştırarak server ın Windows Servisi olarak çalışmasını sağlayabilirsiniz. (Raven.Server.exe /install)

3.RavenDB yi client uygulamalarınızın içinde çalıştırabilirsiniz (Embedded Mode)

RavenDB dataları Server klasörünün içindeki Data klasöründe saklar. Eğer bu klasör silinirse tüm verileriniz silinecektir. Data klasörünün yolunu Raven.Server.exe.config dosyasından değiştirebilirsiniz.

Start.cmd dosyasını çalıştırdığınız aşağıdaki şekilde bir ekranla bizi karşılayacaktır ayrıca tarayıcımızda RavenDB Management Studio çalışacaktır. (RavenDB Management Console için bilgisayarımız Silverlight kurulu olmalıdır) RavenDB varsayılan olarak 8080 port numarasını kullanır.

RavenDB Server Console

RavenDB Management Studio

Management Studio ilk açıldığında içinde data bulunmuyor. Create sample data butonuna tıklayarak örnek dataları oluşturabiliriz. Datalar oluştuktan sonra aşağıdaki şekilde bir ekran belirecektir.

Document nedir?

Bir döküman her hangi bir JSON nesnesidir. İlişkisel veritabanı ile karşılaştırdığımızda tablodaki bir satır olarak düşünebilirsiniz ama sütun sayısı ve içeriği belli değildir, tam olarak C# tarafındaki nesnenin (Entity) JSON olarak serileştirilmiş halidir.

Buradan her hangi bir Albums e tıkladığımızda aşağıdakine benzer bir formatla karşılaşacağız. Şimdi bu kavramları açıklayalım.

Data alanı nesnenin JSON formatında serileştirilmiş halidir. Metadata kısmında bu nesnenin hangi .Net Assembly içerisinde yer aldığını bilgileri tutulur. Metadata ClientAPI tarafından otomatik oluşturulur.

albums/393 alanı ise dökümanı diğer dökümanlardan olarak ayıran benzersiz anahtardır.

Collections nedir?

Raven-Entity-Name alanı aynı olan tüm dökümanları ortak bir şekilde gruplayan koleksiyondur. Bizim örnek veritabanımızda iki çeşit döküman olduğundan iki çeşit koleksiyon bulunmaktadır.

Bu yazımda RavenDB yi gözatma biçiminde inceledik ve bazı önemli kavramlar hakkında bilgi edinmiş olduk. Bir sonraki yazımda RavenDB üzerinde yeni bir veritabanı oluşturarak örnek data eklemeyi ve sorgulamayı öğreneceğiz.

Geri dönüşleriniz ve önerileriniz benim için önemlidir.

Tekrar görüşmek üzere, iyi günler.


ravendb