Sql Server, Sql server nesneleri, sql server veritabanı nesnesi, Master, model, msdb, tempdb, AdventureWork, Transaction Log

Veritabanı Nesnelerine Genel Bakış

SQL  Server gibi, İlişkisel veritabanı yönetim sistemleri bir çok nesne içerir. Microsoft’un nesnelere verdiği isimlerin, nesnenin tanımına tam olarak uymadığı tartışabilir fakat SQL Server’ın amacına uygun bazı çok önemli veritabanı nesnelerine değinelim;

Veritabanının kendisi               İndeksler
Transaction Log                          CLR Assemby’ler
Tablolar                                          Raporlar
Filegroup’lar                                Full-text catalogs
Diagram’lar                                   Kulwan-nedir.html”target=”_self”title=”Lan nedir” >lanıcı tanımlı veri tipleri
View’lar                                          Roller
Stored Procedure’ler                Kullanıcılar
Kullanıcı-tanımlı fonksiyonlar

Veritabanı Nesnesi

Veritabanı , etkin olarak,  verilen SQL server ile ilişkili en yüksek seviyeli nesnedir. SQL  Server’daki diğer nesnelerin bir çoğu veritabanı nesnesinin çocuklarıdır. (Hepsi değil)

SQL Server’ın eski versiyonlarına alışıksanız  ‘Oturum açma kavramına ne oldu ? ‘ Remote Server ve SQL Server Agent görevlerine ne oldu ? diyebilirsiniz. SQL server listelenen nesneler dışında veritabanını destekleyen bir çok başka nesnelerede sahiptir. Bu nesneler, linked server’lar ve belki Integration Servis paketleri haricinde, öncelikle veritabanı yöneticisini ilgilendirir. Bu nedenle, tasarım ve programlama süreçlerinde bu nesnelere çok fazla önem vermezsiniz.  SQL yönetim nesneleri (SQL Management Objects, SMO) adı verilen bazı araçlar yolu ile bu nesneler programlanabilir .

Veritabanı genel anlamda en azından tablo nesneleri içeren, çok sık olmasa da veritabanının tablolarında saklanan verinin farklı gruplandırılması ile ilgili stored procedure ve view gibi diğer nesneleride içeren bir gruptur.

SQL Server’ı ilk defa yüklediğiniz zaman, dört sistem veritabanı ile başlarsınız.

Master, model, msdb, tempdb

Server’ın düzgün çalışması için bu veritabanlarının yüklenmiş olması gerekir. (Aslında, SQL Server yıkarıdaki tabloların bazısı olmadan çalışmayacaktır.) Bu noktada, hangi yükleme seçeneğini seçtiğinize bağlı olarak bazı şeyler değişecektir. Görebileceğiniz örnek veritabanları şunlardır;

AdventureWork (Örnek Veritabanı)

AdventureWorksDW (Analiz Servisleri kullanımı için örnek)
 

Master Veritabanı

Versiyon ya da özel değişiklikleri dikkate almaksızın her SQL Server, master veritabanına sahiptir. Bu veritabanı, sistemin bütününü izlemeyi sağlayan, özel tablolar (sistem tabloları) kümesini içine alır. Örneğin, server üzerinde yeni bir veritabanı oluşturduğunuzda, girdiğiniz kayıt master veritabanındaki sysdatabases’da yer alır.  Tüm extended ve system stored procedure’ler (kullanılacağı veritabana dikkate alınmaksızın) , master veritabanında saklanır. Açıkcası, server’ı tanımlayan herşey master veritabanında saklandığından dolayı, sistem için bu veritabanı önemlidir ve silinemez.

Master veritabanında bulunanları da içeren sistem tabloları, gerektiğinde son derece kullanışlı olabilir. Microsoft, sistem seviye bilgisini elde etmek için bir çok özellik çıkarmayı sürdürdükçe, sistem tablolarının kullanımı önemini yitirmektedir.

Model Veritabanı

Model veritabanı, kopyalama için referans alınabilecek model anlamında, uygun şekilde isimlendirilmiştir. Oluşturacağınız herhangi bir yeni veritabanı için, model veritabanı bir şablon oluşturur. Bunun anlamı, isterseniz yeni oluşturulacak veritabanlarının nasıl olacağını, model veritabanında değişiklik yaparak belirleyebilmenizdir. Örneğin, oluşturduğunuz her veritabanının içeriğinde yer almasını istediğiniz bir denetim tabloları kümesi ekleyebilirsiniz. Ayrıca, sistem üzerinde oluşturulan her yeni veritabanına kopyalanan birkaç kullanıcı grubu oluşturabilirsiniz. Model veritabanı diğer veritabanları için şablon olduğundan gerekli bir veritabanıdır ve sistemde kalmalıdır yani bu veritabanıda silinemez.

Model veritabanında değişiklik yaparken aklınızda bulunması gereken bazı şeyler var. İlk olarak, oluşturduğunuz herhangi bir veritabanı model veritabanı büyüklüğünde olmak zorundadır. Bunun anlamı, eğer model veritabanını büyüklük olarak 100mb olacak şekilde değiştirdiyseniz, 100MB’dan küçük bir veritabanı oluşturumazsınız. Kurulumların %90’ında, model veritabanını olduğu gibi bırakmanız daha doğrudur.

Msdb Veritabanı

Msdb, SQL Agent işlem sürecinin herhangi bir sistem görevini sakladığı yerdir. Veritabanı üzerinde geceleri yedekleme işleminin çalışmasına dair bir görev zamanlayıcı oluşturduysanız, bununla ilgili kayıt msdb’de yer alır. Stored Procedure’un ilk çalışması (time execution) ile ilgili kayıt da, aynı şekilde msdb’de bulunur.

TempDB  Veritabanı

Tempdb veritabanı,  server’ınız için anahtar çalışma alanlarından biridir. Karmaşık ya da geniş bir sorgulama yaptığınızda, SQL Server’ın geçici tablolar oluşturması gerekirse, bu işlemi tempdb yoluyla gerçekleştirir.  Aynı zamanda , geçici bir tablo oluşturduğunuzda da, üzerinde çalıştığınız veritabanında oluşturduğunuzu zannetseniz de, aslında tempdb veritabanında oluşturulur. Verinin geçici olarak saklanması gerektiği zaman da, tempdb veritabanında saklanır.

Tempdb veritabanında, diğer veritabanlarından farklı olarak, sadece içerdiği nesneler geçici değildir, veritabanının kendisi de geçicidir. SQL Server her başlatıldığında, tamamen sıfırdan yeniden oluşturulmasıyla,  sistemdeki diğer veritabanlarından ayırt edici özelliğe sahiptir. 

AdventureWorks

Bu örnek veritabanı çıkmadan çok önce, SQL Server birden çok örnek içerirdi. Eski örneklerin bir çok kusuru vardı. Örneğin, birkaç zayıf tasarım uygulaması ile sınırlıydılar.

Yukon’un (bugün SQL  Server 2005 olarak bildiğimiz, dahili kod isimlendirmesi) ilk gelişme evrelerinden beri, Microsoft, ürünün olabildiğince çok özelliği için örnek olacak, çok daha güçlü örnek veritabanları geliştirmek istiyordu. AdventureWorks veritabanı, bu çabanın ürünüdür.  Başlangıç seviyesi kullanıcılar için bu veritabanının oldukça fazla karmaşık yapısından şikayetçi olsamda , bu veritabanı herşeyi bütün olarak gösteren bir şaheserdir. Aslında tam olarak herşey değildir fakat dahaz fazla gerçek verileri, karmaşık yapısı ve ürün özellikerinin geniş bir yelpazesi için örnekler gösteren kısımları ile yeterince bütün bir örnektir.

AdventureWorksDW

AdventureWorksDW, Analysis Servisi örneğidir. (DW, veri deposu anlamına gelir, üzerinde bir çok Analysis Servis projelerinin oluşturulduğu bir tip veritabanıdır.) Belki de AdventureWorksDW hakkında ki en önemli şey, Microsoft’un transcation veritabanı örneği ile analiz örneğinin birlikte çalışmasını gösteren bütün bir örnekler kümesi sağlayarak, transaction veritabanı örneği ile analiz örneğini bağlayabileceği öngörüsüdür.

Transaction Log

Veri, kesinlikle veritabanı dosyasından okunuyor olmakla birlikte, yaptığınız herhangi bir değişiklik ilk olarak veritabanın kendisinde meydana gelmez. Aslında, değişiklikler sırasıyla transaction log dosyasına yazılır. Zaman olarak bir sonraki noktada, veritabanı bir checkpoint yaparak log dosyasına yazılan değişikliklerin gerçek veritabanı dosyasında üretildiği zaman düzenler.

Veritabanı dosyası, rastgele sırada düzenlenmiştir fakat log dosyası sırayla yazılmıştır. Veritabanı dosyasının rastgele yapısı, hızlı erişim imkanı, log dosyasının sıralı yapısı ise değişiklikleri sırayla izleyebilme imkanı sağlar.  Gerçekleştiği varsayılan değişiklikler log dosyasında biriktirilir ve daha sonraki bir zaman sunucu, değişiklikleri fiziksel olarak veritabanı dosyasına yazar.

Yazının devamında ele alınacaklar indeksler, clustered, non-clustered, trigger’lar, constraint’ler, schema’lar, filegroup’lar, diagramlar ve view’ler.

Benzer Yazılar

Etiketler: , , , , , , , , , , , ,

Facebook'ta Paylaş

Yorum Ekle