İlişkisel Veritabanı (RDBMS) Nedir?

İlişkisel veritabanı, birbiriyle ilişkili veri noktalarını depolayan ve bunlara erişim sağlayan bir veritabanı türüdür. İlişkisel veritabanları tablolardaki verileri temsil etmenin sezgisel ve basit bir yolu olan ilişkisel modeli temel alır. İlişkisel veritabanında, tablodaki her satır, anahtar adı verilen benzersiz kimliğe sahip bir kayıttır. Tablonun sütunlarında verilerin öznitelikleri bulunur ve her kayıt genellikle her öznitelik için bir değer taşır. Bu da veri noktaları arasında ilişki kurmayı kolaylaştırır.

İlişkisel veritabanı örneği

Aşağıda küçük bir işletmenin ürünleri için siparişleri işlemek üzere kullanabileceği iki tabloluk kolay bir örnek görüyorsunuz. İlk tablo, bir müşteri bilgileri tablosudur. Her bir kayıtta bir müşterinin adı, adresi, sevkiyat ve fatura bilgileri, telefon numarası ve diğer irtibat bilgileri bulunmaktadır. Her bilgi parçacığı (her bir öznitelik) kendi sütunundadır ve veritabanı her satıra benzersiz bir kimlik (anahtar) atar. Müşteri siparişi tablosu olan ikinci tablonun her bir kaydında siparişi veren müşterinin kimliği, sipariş edilen ürün, miktar, seçilen büyüklük ve renk ve benzer bilgiler bulunur ancak müşterinin adı veya irtibat bilgileri bulunmaz.

Bu iki tablonun tek bir ortak noktası vardır: Kimlik sütunu (anahtar). Ancak bu ortak sütun sayesinde ilişkisel veritabanı, iki tablo arasında bir ilişki yaratabilir. Daha sonra şirketin sipariş işleme uygulama yazılımı veritabanına bir sipariş gönderdiğinde veritabanı, müşteri sipariş tablosuna giderek ürün siparişi hakkındaki doğru bilgileri alabilir ve müşterinin müşteri bilgileri tablosunda bulunan fatura ve sevkiyat bilgilerine bakmak için bu tablodaki müşteri kimliğini kullanabilir. Ardından depo doğru ürünü bulabilir, müşteri siparişi zamanında teslim alabilir ve şirkete ödeme yapılabilir.

İlişkisel veritabanları nasıl yapılandırılır?

İlişkisel model, mantıksal veri yapılarının (veri tabloları, görünümleri ve dizinleri) fiziksel depo yapılarından ayrı olduğu anlamına gelir. Bu ayrım, veritabanı yöneticilerinin, mantıksal bir yapı olarak bu verilere erişimi etkilemeden fiziksel veri depolamayı yönetebilmeleri anlamına gelir. Örneğin, bir veritabanı dosyasını yeniden adlandırdığınızda, içinde depolanan tablolar yeniden adlandırılmaz.

Ayrıca, mantıksal ve fiziksel depolama alanı arasındaki ayrım, uygulama yazılımlarının veritabanına ait veri ve yapıları değiştirmesini sağlayan, açıkça tanımlanmış işlemler olan veritabanı işlemleri için de geçerlidir. Mantıksal operasyonlar bir uygulama yazılımının ihtiyaç duyduğu içeriği belirlemesine olanak tanır, fiziksel operasyonlar bu verilere nasıl erişilmesi gerektiğini belirler ve ardından görevi yerine getirir.

Verilerin her zaman doğru ve erişilebilir olmasını sağlamak için ilişkisel veritabanları belirli bütünlük kurallarına uyar. Örneğin bir bütünlük kuralı, veritabanına hatalı bilgi girme olasılığını ortadan kaldırmak için bir tabloda yinelenen satırlara izin verilmediğini belirtebilir.

İlişkisel model

Veritabanlarının ilk yıllarında, her uygulama yazılımı kendi benzersiz yapısında veri depolardı. Geliştiriciler, bu verileri kullanmak için uygulama yazılımları oluşturmak istediklerinde ihtiyaç duydukları verileri bulmak için söz konusu veri yapıları hakkında çok şey bilmek zorundaydılar. Bu veri yapıları verimsiz, bakımı zor ve iyi uygulama yazılımı performansı sağlamak için optimize etmesi zor yapılardı. İlişkisel veritabanı modeli çoklu rastgele veri yapıları problemini çözmek için tasarlandı.

İlişkisel veri modeli, herhangi bir uygulama yazılımı tarafından kullanılabilecek verileri temsil etmek ve sorgulamak için standart bir yöntem sağlamıştır. Geliştiriciler, en baştan itibaren ilişkisel veritabanı modelinin temel gücünün, yapılandırılmış bilgileri depolamak ve bunlara erişmek için sezgisel, verimli ve esnek bir yol olan tabloları kullanmakta olduğunu fark etti.

Zamanla, geliştiriciler bir veritabanında veri yazmak ve sorgulamak için yapılandırılmış sorgu dilini (SQL) kullanmaya başladıkça ilişkisel modelin bir diğer gücü ortaya çıktı. SQL uzun yıllardır veritabanı sorgulama dili olarak yaygın şekilde kullanılmaktadır. İlişkisel cebire dayanan SQL, tüm veritabanı sorgularının performansını iyileştirmeyi kolaylaştıran, dâhilî tutarlılığa sahip bir matematik dili sağlar. Buna karşılık, diğer yaklaşımlar tekil sorgular tanımlamalıdır.

İlişkisel veritabanı yönetim sisteminin avantajları

Kolay ama güçlü bir yapıdaki ilişkisel model, her tür ve büyüklükteki kurumlar tarafından çok çeşitli bilgi ihtiyaçları için kullanılmaktadır. İlişkisel veritabanları, stokları takip etmek, e-ticaret işlemlerini gerçekleştirmek, çok büyük miktarlarda misyon açısından kritik müşteri bilgisini yönetmek ve çok daha fazlasını yapmak için kullanılıyor. Veri noktalarının birbiriyle ilgili olduğu; güvenli, kurallara dayalı ve tutarlı bir şekilde yönetilmesi gereken tüm bilgi ihtiyaçları için ilişkisel veritabanı kullanmayı düşünebilirsiniz.

İlişkisel veritabanları 1970'lerden bu yana kullanılıyor. İlişkisel model, avantajları sayesinde günümüzde de veritabanları için en yaygın kabul gören model olmayı sürdürüyor.

İlişkisel model ve veri tutarlılığı

İlişkisel model, uygulama yazılımları ve veritabanı kopyaları (bunlara örnekler adı verilir) arasında veri tutarlılığını korumakta en iyi çözümdür. Örneğin, bir müşteri bir ATM'ye para yatırıp cep telefonunda hesap bakiyesine baktığında, yatırdığı paranın güncel hesap bakiyesine derhal yansıdığını görmeyi bekler. İlişkisel veritabanları, bu tür veri tutarlılığında üstün performans gösterir ve bir veritabanının birden fazla örneğinin her zaman aynı verilere sahip olmasını sağlar.

Diğer veritabanı türlerinin büyük miktarda veriyle zamanında tutarlılık seviyesini sürdürmesi zordur. Günümüzde NoSQL gibi bazı veritabanları, yalnızca nihai tutarlılığı destekleyebilmektedir. Bu ilkeye göre, veritabanı ölçeklendiğinde veya birden fazla kullanıcı aynı verilere aynı anda eriştiğinde, verilerin "yakalanması" biraz sürer. Nihai tutarlılık bir ürün kataloğundaki girişleri tutmak gibi bazı kullanımlar için kabul edilebilir, ancak alışveriş sepeti işlemleri gibi kritik iş operasyonları için ilişkisel veritabanı hâlâ altın standarttır.

Taahhüt ve atomisite

İlişkisel veritabanları, iş kuralları ve politikalarını kesin kalıcılık politikalarıyla (yani, veritabanı değişikliklerini kalıcı hâle getirmek) çok ayrıntılı düzeyde hayata geçirir. Örneğin, her zaman birlikte kullanılan üç parçayı izleyen bir envanter veritabanını düşünün. Bir parça envanterden çekildiğinde diğer ikisi de çekilmelidir. Üç bölümden biri mevcut değilse, parçaların hiçbiri çekilmemelidir - veritabanı herhangi bir taahhütte bulunmadan önce üç parçanın tümü mevcut olmalıdır. İlişkisel veritabanı, üç parçanın tümü için taahhütte bulunabileceğini bilene kadar bir parça için taahhütte bulunmaz. Bu çok yönlü kalıcılık becerisine atomisite denir. Atomisite, verileri veritabanında doğru olarak tutmanın ve işletmenin kuralları, mevzuatı ve politikaları ile uyumlu olmasını sağlamanın anahtarıdır.

ACID nitelikleri ve RDBMS

İlişkisel veritabanı işlemlerini tanımlayan dört önemli özellik vardır: atomisite, tutarlılık, yalıtım ve dayanıklılık (genellikle ACID olarak da adlandırılır).

  • Atomisite tam bir veritabanı işlemini oluşturan tüm unsurları tanımlar.
  • Tutarlılık veri noktalarını bir işlemden sonra doğru durumda tutmaya ilişkin kuralları tanımlar.
  • İzolasyon karışıklığı önlemek için, kalıcı hâle gelene kadar, bir işlemin etkisini diğer işlemlerden görünmez kılar.
  • Dayanıklılık işlem gerçekleştiğinde veri değişikliklerinin kalıcı olmasını sağlar.

Depolanan prosedürler ve ilişkisel veritabanları

Veri erişimi tekrar eden birçok eylemden oluşur. Örneğin, bir veri tablosundan bilgi alırken, istenen sonucu elde etmek için kolay bir sorgunun yüzlerce veya binlerce kez tekrarlanması gerekebilir. Bu veri erişim işlevleri, veritabanına erişmek için bir tür kod gerektirir. Uygulama yazılımı geliştiricileri, her yeni uygulama yazılımında bu işlevler için yeni kod yazmak istemezler. Neyse ki ilişkisel veritabanları kayıtlı prosedürlere, yani tek uygulama yazılımı çağrısı ile erişilebilen kod bloklarına olanak tanır. Örneğin, tek bir kayıtlı prosedür, birden çok uygulama yazılımının kullanıcıları için tutarlı bir kayıt etiketleme işlevi sağlayabilir. Kayıtlı prosedürler, geliştiricilerin, uygulama yazılımındaki belirli veri işlevlerinin belirli bir şekilde uygulanmasını sağlamalarına da yardımcı olabilir.

Veritabanı kilitleme ve eşzamanlılık

Birden fazla kullanıcı veya uygulama yazılımı, aynı verileri aynı anda değiştirmeye çalıştığında, veritabanında çakışma yaşanabilir. Kilitleme ve eşzamanlılık teknikleri, verilerin bütünlüğünü korurken çelişki ihtimalini azaltır.

Kilitleme diğer kullanıcıların ve uygulama yazılımlarının güncellenmekte olan verilere erişmesini önler. Bazı veritabanlarında kilitleme tüm tabloya uygulanır ve bu, uygulama yazılımı performansını olumsuz etkiler. Oracle ilişkisel veritabanları gibi diğer veritabanları, kilitleri kayıt düzeyinde uygulayarak, tablodaki diğer kayıtları erişilebilir hâlde bırakır ve daha iyi uygulama yazılımı performansı elde edilmesine yardımcı olur.

Eşzamanlılık birden çok kullanıcı veya uygulama yazılımı aynı anda aynı veritabanında sorgular gerçekleştirdiğinde faaliyetleri yönetir. Bu beceri, veri kontrolü için tanımlanan politikalara göre kullanıcılara ve uygulama yazılımlarına doğru erişimi sağlar.

İlişkisel veritabanı seçerken nelere dikkat edilmelidir?

İlişkisel veritabanında depolanan verileri saklamak, yönetmek, sorgulamak ve almak için kullanılan yazılıma ilişkisel veritabanı yönetim sistemi (RDBMSf). denir RDBMS, kullanıcılar ve uygulama yazılımları ile veritabanı arasında bir arayüzün yanı sıra veri depolama, erişim ve performans yönetimi için yönetim işlevleri sağlar.

Veritabanı türleri ve ilişkisel veritabanı ürünleri arasında seçim yaparken çeşitli faktörler kararınıza yön verebilir. Seçtiğiniz RDBMS işletmenizin gereksinimlerine bağlı olacaktır. Kendinize aşağıdaki soruları sorun:

  • Veri doğruluğu gereksinimlerimiz neler? Veri depolama ve doğruluk iş mantığına dayanıyor mu? Verimizin katı doğruluk gereksinimleri var mı (örneğin, finansal veri ve devlet raporları)?
  • Ölçeklenebilirliğe ihtiyacımız var mı? Yönetilecek verilerin ölçeği ve beklenen büyüme nedir? Veritabanı modelinin, ölçeklenebilirlik için yansıtılmış veritabanı kopyalarını (ayrı örnekler olarak) desteklemesi gerekir mi? Gerekiyorsa, bu örnekler arasında veri tutarlılığını koruyabilir mi?
  • Eşzamanlılık ne kadar önemli? Birden fazla kullanıcı ve uygulama yazılımının eşzamanlı veri erişimine ihtiyacı olacak mı? Veritabanı yazılımı verileri korurken eşzamanlılığı destekliyor mu?
  • Performans ve güvenilirlik ihtiyaçlarımız neler? Yüksek performanslı, güvenilir bir ürüne ihtiyacımız var mı? Sorgu-yanıt performansı için gereksinimler neler? Satıcının hizmet düzeyi anlaşmaları (SLA'lar) veya planlanmamış kesinti süreleri için taahhütleri nelerdir?

Geleceğin ilişkisel veritabanı: Kendi kendini yöneten veritabanı

İlişkisel veritabanları yıllar içinde giderek daha iyi, daha hızlı, daha güçlü ve daha kolay kullanılır hâle geldi. Ancak aynı zamanda daha karmaşık bir hale de geldiler ve veritabanı yönetmek, uzun süredir tam zamanlı bir iş durumunda. Geliştiriciler uzmanlıklarını işletmeye değer katacak yenilikçi uygulama yazılımları geliştirmeye odaklanmak için kullanamıyor. Zamanlarının çoğunu veritabanı performansını optimize etmek için gereken yönetim faaliyetlerine harcamak zorunda kalıyorlar.

Bugün, kendi kendini yöneten teknoloji yeni bir ilişkisel veritabanı türü sunmak için bulut veritabanı teknolojisi ve makine öğreniminin güçlü yönleri üzerinde yükselmektedir. Kendi kendini yöneten veritabanı (diğer bir deyişle otonom veritabanı) ilişkisel modelin güç ve avantajlarını korurken sorgu performansını artırmak ve yönetim görevlerini izlemek için yapay zekâ (AI), makine öğrenimi ve otomasyon da kullanıyor. Örneğin, sorgu performansını artırmak için kendi kendini yöneten veritabanı, sorguları daha hızlı hale getirmek için dizinleri hipotezleyebilir ve test edebilir ve ardından en iyilerini kendi başına canlı kullanıma aktarabilir. Kendi kendini yöneten veritabanı, bu geliştirmeleri insan müdahalesine gerek kalmadan sürekli yapar.

Kendi kendini yöneten teknoloji, geliştiricileri veritabanını yönetmeyle ilgili sıradan görevlerden kurtarır. Örneğin, artık altyapı gereksinimlerini önceden belirlemek zorunda değiller. Bunun yerine, kendi kendini yöneten bir veritabanıyla, veritabanı büyümesini desteklemek için depolama ve bilişim kaynaklarını gerektikçe ekleyebilirler. Geliştiriciler yalnızca birkaç adımla kendi kendini yöneten bir ilişkisel veritabanını kolayca oluşturabilir uygulama yazılımı geliştirme süreçlerini hızlandırabilirler.