İlişkisel veri tabanları, birbiriyle bir şekilde ilişkili olan çeşitli türdeki bilgileri depolamak için kullanılan araçlardır. Veri mühendisleri, işletmelerin verileri toplamasına, depolamasına ve analiz etmesine yardımcı olmak için ilişkisel veri tabanları (ve diğer veri yönetim sistemleri) oluşturur ve tasarlar. Ardından, veri analistleri ve veri bilimcileri bunları büyük miktarda veriyi sindirmek ve anlamlı içgörüler belirlemek için kullanır.
İlişkisel Veri Tabanı Nedir?
İlişkisel veri tabanı, verileri depolayan ve verilere erişim sağlayan bir veri tabanı türüdür. Bu tür veri tabanlarına “ilişkisel” denir, çünkü içlerindeki veri öğelerinin birbirleriyle önceden belirlenmiş ilişkileri vardır. İlişkisel veri tabanındaki veriler tablolarda saklanır. Tablolar, benzersiz kimlikler veya “anahtarlar” ile bağlanır. Bir kullanıcının belirli bilgilere erişmesi gerektiğinde, o anahtarla ilişkili olduğu önceden belirlenmiş tüm veri tablolarına erişmek için bir anahtar kullanabilir.
İlişkisel veri tabanı kullanım durumu örneği
İnternette kıyafet satan bir şirkette çalıştığınızı varsayalım. İşletmeniz sevkiyat, müşteri bilgileri, envanter ve web sitesi trafiği ile ilgili verileri yönetmek için ilişkisel bir veri tabanı kullanır. Sevkiyatla ilgili tüm tablolara erişen bu veri tabanının anahtarına sahip olduğunuzu ve geçen haftaki siparişleri sevk etmek için yeterli envanteriniz olup olmadığını öğrenmeniz gerektiğini varsayalım.
İlişkisel veri tabanı, gönderi bilgileri ile envanter arasında bir ilişki olduğunu tanıdığından, verileri karşılaştırmak için envanter numaralarına ve gönderi isteklerine erişmek için anahtarınızı kullanmanızı sağlar. Bu istek sırasında, web sitesi trafiği hakkında herhangi bir bilgiye erişmezsiniz, çünkü anahtarınız yalnızca gönderim ile ilgili veri tablolarına erişir.
Bulutistan hizmetlerinin detaylarına ulaşmak için tıklayınız.
İlişkisel Veri Tabanı Kullanıcıları
Aşağıdaki kullanıcılar ilişkisel veri tabanı sistemlerinden yararlanır:
Veri Tabanı Yöneticileri: Sistemin performansını izleme ve bakımını yapma görevini yerine getirir. Ayrıca veri tabanı bütünlüğü ve güvenliği ile sistemin diğer ilgili sorunlarından da sorumlu olurlar.
Yazılım Geliştiriciler/Programcılar: Veri tabanını oluşturur ve tasarlar. Programcılar, programlama dilleri aracılığıyla veri tabanı ile etkileşime girer.
Son Kullanıcı: Komutlar aracılığıyla sistemden veri/bilgi alma görevini yerine getirir ve ayrıca veri ekleme, güncelleme ve silme işlemlerini de yapabilir.
DBMS İlişkisel Model Kavramları
DBMS’de anlaşılması gereken ilişkisel veri tabanı kavramları aşağıdakileri içerir:
- Nitelik: Nitelik, bir varlığın özelliği veya kalitesidir. İlişkisel model bağlamında, nitelik bir tablodaki bir sütundur.
- Tablolar: Tablo, satır ve sütunlar halinde düzenlenmiş bir veri koleksiyonudur. Veri tabanı yönetimi için ilişkisel modelde, varlıklar hakkında bilgi depolamak için tablolar kullanılır.
- Tuple: Tuple, tablodaki bir satırdır. Demetler niteliklerden oluşur.
- İlişki Şeması: Bir ilişki şeması, bir tablo için bir plandır. Bir tabloda yer alan öznitelikleri ve bu öznitelikler arasındaki ilişkileri tanımlar.
- Derece: Derece, içerdiği niteliklerin sayısıdır.
- Cardinality: Cardinality, bir ilişki şemasındaki iki özellik arasındaki ilişkiyi tanımlar. Üç olası ilişki vardır: bire bir, birden çoğa ve çoktan çoğa.
- Sütun: Sütun, bir tabloda yer alan bir özniteliktir. Sütunlara bazen alanlar da denir.
- İlişki örneği: Bir ilişki örneği, belirli bir ilişki şemasına uyan bir demet kümesidir. Başka bir deyişle, bir ilişki şeması tarafından ortaya konan plana göre satır ve sütunlar halinde düzenlenmiş doldurulmuş verilerdir.
- İlişki anahtarı: Bir ilişki anahtarı, bir tablodaki bir demeti benzersiz şekilde tanımlayan bir öznitelik veya özniteliklerin birleşimidir.
- Alan adı: Bir özniteliğin alan adı, o öznitelikte depolanabilecek değerler kümesidir. Örneğin, bir özellik yaşları temsil ediyorsa, alan adı 0’dan itibaren herhangi bir yaş olacaktır.
İlişkisel Veri Tabanı Nasıl Çalışır?
İlişkisel veri tabanları, veri analistlerinin ortak öznitelikler aracılığıyla bağlanan birden çok tablodan bilgileri verimli bir şekilde sorgulamasına olanak tanıyan ilişkisel bir veri modeline dayalıdır.
İlişkisel bir veri tabanından bilgi sorgulamak için ilişkisel bir veri tabanıyla birincil iletişim noktası olan SQL’i kullanmak yaygın bir uygulamadır. MySQL, PostgreSQL ve Oracle SQL gibi bazı sağlayıcılar kendi SQL uygulamalarını oluşturur. Bu uygulamalar, söz dizimlerinde veya SQL’deki diğer özelliklerde farklılık gösterebilir. Örneğin, PostgreSQL, kesme eylemini çevreleyen işlemde herhangi bir terslik olması durumunda kullanıcıların silinmiş verileri kurtarmasına olanak tanıyan işlem güvenli kesme sunar; MySQL bu özelliğe izin vermez.
İlişkisel Model Türleri
DBMS’de genellikle üç tür ilişkisel model vardır. Bunlar aşağıdaki şekildedir:
1. Birden Çoğa Model (The One-to-Many Model)
Bu tür bir ilişkide, bir varlık birden fazla başka varlıkla ilişkilidir. Örneğin, bir müşterinin birden çok siparişi olabilir, bir öğretmenin birden çok öğrencisi olabilir ve bir ürün birden çok mağazada satılabilir. Birden çoğa modelin temel özelliği, iki varlık arasındaki ilişkinin karşılıklı olmamasıdır. Yani bir müşterinin birden fazla siparişi olması, bir siparişin birden çok müşterisi olduğu anlamına gelmez.
2. Bire Bir Model (The One-to-One Model)
İlişkisel modellerin bire bir modeli, iki belirli nesne arasında doğrudan ve benzersiz bir ilişki olduğunu belirtir. Başka bir deyişle, her nesne yalnızca bir başka nesneyle ilişkilendirilebilir ve bunun tersi de geçerlidir. Bu tür bir ilişki genellikle insanlar ve ehliyet numaraları gibi fiziksel şeyler arasındaki ilişkileri temsil etmek için kullanılır. Bire bir model nispeten basit olsa da, karmaşık gerçek dünya ilişkilerini temsil etmek için yararlı olabilir.
3. Çoktan Çoğa Model (The Many-to-Many Model)
Çoktan çoğa modelde, birincil tablodaki her kayıt, yabancı tablodaki birden çok kayda bağlanabilir ve bunun tersi de geçerlidir. Bu tür bir ilişki daha az yaygındır. Örneğin, öğrenciler ve kurslar arasında çoktan çoğa bir ilişki kurulur. Bir öğrenci birden fazla ders alabilir ve bir derse birden fazla öğrenci kaydolabilir.
Çoktan çoğa bir ilişki oluşturmak için diğer tabloların birincil anahtarlarını içeren, bağlantı tablosu adı verilen üçüncü bir tablo oluşturmamız gerekir. Bağlantı tablosu, diğer iki tablodaki satırlar arasındaki ilişkileri kurar.
İlişkisel Veri Tabanı Neden Önemlidir?
İlişkisel bir veri tabanının ana avantajı, faydalı bilgiler elde etmek için farklı tablolardan verileri birbirine bağlama yeteneğidir. Bu yaklaşım, her büyüklükteki ve sektördeki işletmenin çeşitli departmanlardan farklı veri kümeleri arasındaki ilişkileri deşifre etmesine yardımcı olur. İlişkisel bir veri tabanında verilerin nasıl yapılandırıldığı, erişim izinlerini yönetmek için de yararlı olabilir. Veri noktaları arasındaki ilişkiler önceden belirlendiğinden ve referans için benzersiz bir kimlik gerektirdiğinden, kullanıcılar yalnızca ilgili ve önceden taranmış bilgileri elde eder.
İlişkisel veri tabanlarının birkaç avantajı vardır. Bunlar aşağıdaki şekildedir:
1. Basit ve merkezi veri tabanı
İlişkisel veri tabanları basittir. Tablolar arasında geçiş yapmak, çeşitli amaçlar için kullanılabilecek üstün bir bilgi sağlar. Ayrıca, ERP sistemleri ilişkisel veri tabanları üzerine kuruludur, bu nedenle kullanıcıların müşterileri, envanteri ve çok daha fazlasını yönetmesine yardımcı olur.
2. Kolay kullanım
Birçok şirket, büyük miktarda veriyi düzenlemek ve yönetmek için ilişkisel veri tabanlarını ve ERP’yi kullanır. Sürekli kullanımları, buluta geçiş gibi bu sistemlerde iyileştirmeler yapılmasına yardımcı olur. SQL kullanarak, kullanıcılar ihtiyaç duydukları bilgileri almak, filtrelemek ve düşünmek için veri kümelerinde kolayca gezinebilir.
3. Zamandan ve paradan tasarruf
İlişkisel veri tabanlarını kullanarak şirketler düzenli ve verimli kalabilir. Benzersiz kimlikler, ister bir müşterinin siparişini ister müze ziyaretçilerini takip ediyor olsun, yinelenen bilgileri ortadan kaldırmaya yardımcı olur. Müşteri verilerinin günlüklerini girmek için zaman ayırmak yerine, ilişkisel bir veri tabanı fazlalığı azaltır ve böylece çalışanların zamanından tasarruf sağlar. Şirketler, bu emeği başka bir yere tahsis ederek paradan tasarruf edebilir.
4. Güvenlik
İlişkisel veri tabanı yönetim sistemi, sadece yetkili kullanıcıların verilere doğrudan erişmesine izin verdiği için veriler güvendedir. Yetkisiz hiçbir kullanıcı bilgilere erişemez.
5. İşbirliği
Birden çok kullanıcı, aynı anda ve veriler güncelleniyor olsa bile bilgileri almak için veri tabanına erişebilir.
6. Normalleştirme
Veriler giderek daha karmaşık hale geldikçe, verileri depolamanın verimli yollarına olan ihtiyaç da artar. Normalleştirme, depolama boyutunu azaltmak için bilgileri yönetilebilir parçalara ayıran bir yöntemdir. Verilerinizi normalleştirmenin başka bir düzeyine geçmeden önce veriler hazırlık gerektiren herhangi bir düzeyde farklı düzeylere ayrılabilir.
Veri tabanı normalleştirme ayrıca ilişkisel bir veri tabanının yapısında çeşitlilik veya sapma olmamasını ve doğru bir şekilde manipüle edilebilmesini sağlar. Bu, iş kararlarınız için bu veri tabanındaki verileri kullanırken bütünlüğün korunmasına olanak tanır.
7. Veri bütünlüğü
RDBMS veri tabanları, tüm tablolarda tutarlılık sağladıkları için veri bütünlüğü için de yaygın olarak kullanılır. Veri bütünlüğü, doğruluk ve kullanım kolaylığı gibi özellikleri sağlar.
İlişkisel Veri Tabanının Dezavantajları
İlişkisel veri tabanlarının ne kadar iyi ölçeklenebileceği konusunda sınırlar vardır. Tam boyut açısından, bazı veri tabanlarının sütun uzunlukları üzerinde sabit sınırları vardır. Veri tabanınız tek bir adanmış sunucu üzerine kuruluysa, ölçeklendirme daha fazla sunucu alanı satın almayı gerektirir ve bu da uzun vadede pahalıya mâl olur.
Ayrıca, bir veri tabanına sürekli olarak yeni öğeler eklemek onu o kadar karmaşık hale getirebilir ki, yeni veri parçaları arasında ilişki kurmayı zorlaştırır. Karmaşık veri ilişkileri de sorgulamayı yavaşlatır ve performansı olumsuz etkiler.
İlişkisel Veri Tabanı Sınırlamaları
İlişkisel veri tabanlarını kullanmanın daha fazla yararı olmasına rağmen bazı sınırlamaları da vardır.
İlişkisel veri tabanını kullanmanın sınırlamaları aşağıdaki şekildedir:
1. Bakım Problemi
İlişkisel veri tabanının bakımı, verilerin artması nedeniyle zaman içinde zorlaşır. Geliştiriciler ve programcılar veri tabanını korumak için çok zaman harcamak zorundadır.
2. Maliyet
İlişkisel veri tabanı sisteminin kurulması ve sürdürülmesi maliyetlidir. Yazılımın ilk maliyeti tek başına küçük işletmeler için oldukça pahalı olabilir, ancak bu özel program türünde uzmanlığa sahip olması gereken profesyonel bir teknisyeni işe almayı hesaba kattığınızda daha da kötüleşir.
3. Fiziksel Depolama
İlişkisel bir veri tabanı, gerçekleştirilen her işlem ayrı depolamaya bağlı olduğu için çok fazla fiziksel bellek gerektiren satır ve sütunlardan oluşur. Fiziksel bellek gereksinimleri, verilerin artmasıyla birlikte artabilir.
4. Ölçeklenebilirlik Eksikliği
İlişkisel veri tabanını birden fazla sunucu üzerinden kullanırken yapısı değişir ve özellikle veri miktarının fazla olduğu durumlarda kullanımı zorlaşır. Bu nedenle, veriler farklı fiziksel depolama sunucularında ölçeklenemez. Sonuç olarak, performansı (yani veri kullanılabilirliği ve yükleme süresi vb.) etkilenir.
5. Yapıdaki Karmaşıklık
İlişkisel veri tabanları, verileri yalnızca tablo biçiminde depolayabilir, bu da nesneler arasındaki karmaşık ilişkileri temsil etmeyi zorlaştırır. Bu bir sorundur çünkü birçok uygulama, uygulama mantığının gerektirdiği tüm gerekli verileri depolamak için birden fazla tablo gerektirir.
6. Zamanla Performansta Düşüş
İlişkisel veri tabanı, yalnızca birden çok tabloya bağlı olması nedeniyle yavaşlayabilir. Sistemde çok sayıda tablo ve veri olduğunda, karmaşıklığın artmasına neden olur. Belirli bir zamanda sunucuda kaç kişinin oturum açtığına bağlı olarak, sorgular üzerinde yavaş yanıt sürelerine veya hatta tamamen başarısızlığa neden olabilir.
İlişkisel Veri Tabanı Örnekleri
İlişkisel veri tabanlarının en popüler örneklerinden bazılarını aşağıdaki listede bulabilirsiniz:
1. MySQL
MySQL, Sun Microsystems (şimdi Oracle Corporation) tarafından satın alınana kadar ilişkisel veri tabanları için açık kaynaklı bir yönetim sistemi olarak geliştirildi. Şu an farklı tescilli lisansların eklenmesiyle hala açık kaynak lisansı altında mevcuttur.
MySQL, ACID uyumluluğu, paylaşımsız kümeleme ile yerleşik çoğaltma desteği sunar ve birden çok depolama motorunu destekler. Ancak, bazı depolama motorlarının kullanılması SQL’in düzgün çalışmamasına neden olabilir.
MySQL, yüksek kullanılabilirlik ve performansı korurken hızlı veri girişi ve ölçeklenebilirlikte mükemmeldir. Bu, onu web ve uygulama geliştirme için son derece yararlı kılar.
2. PostgreSQL
PostgreSQL, açık kaynak lisansı altında kullanılabilen ücretsiz bir ilişkisel veri tabanı yöneticisidir. MVCC’nin (çoklu sürüm eşzamanlılık kontrolü) kayda değer bir şekilde eklenmesiyle MySQL ile bazı özellikleri paylaşır ve bu da onu ACID uyumlu hale getirir.
PostgreSQL, büyük veri tabanlarını işlerken bile yüksek düzeyde performans ve esnekliği korur. Yüksek okuma/yazma hızlarına ve kapsamlı veri analizine ihtiyaç duyan kullanıcılar için doğru seçimdir.
PostgreSQL’in bazı önemli kullanıcıları arasında Reddit, Skype ve Instagram bulunur.
3. MariaDB
MariaDB, MySQL’in Oracle tarafından satın alınmasının ardından topluluk odaklı bir ilişkisel veri tabanı olarak başladı. Hâlâ açık kaynaklı ve GNU General Public License altında mevcuttur.
MariaDB, daha da fazla depolama motoru için destek ekleyerek ve depolama motoru sınırlamalarını düzelterek MySQL tabanını geliştirir. Bu, MySQL’den bile daha hızlı performans göstermesini ve hem SQL hem de NoSQL’i tek bir veri tabanında çalıştırmasını sağlar.
Önemli MariaDB kullanıcıları arasında Google, Mozilla ve Wikimedia Foundation bulunmaktadır.
4. SQLite
Bu listedeki diğerlerinin aksine, SQLite bir istemci-sunucu veri tabanı yöneticisi değil, son uygulamaya gömülüdür. Bu, hafif olmasını ve çok çeşitli sistem ve platformlarla çalışabilmesini sağlar.
SQLite yalnızca kısmen tetikleyiciler sağladığından, sınırlı bir ALTER TABLE işlevine sahip olduğundan ve görünümlere yazamadığından, bazı sınırlamalara da neden olur. Ayrıca, veri tabanının maksimum boyutunu 32.000 sütun ve 140 TB ile sınırlar.
Bu nedenle SQLite, diğer uygulamalar için bir veri tabanı bileşeni olarak en iyi şekilde kullanılır. Dikkate değer kullanımlar, Google Chrome, Mozilla Firefox, Opera ve Safari gibi popüler tarayıcıları içerir.
Bulutistan hizmetlerinin detaylarına ulaşmak için tıklayınız.
İlişkisel Veri Tabanlarına Alternatifler Nelerdir?
Kullanım durumuna bağlı olarak belirli avantajlar sunan verilerimizi depolamak için daha fazla alternatif vardır. Yapılandırılmamış veriler için ilişkisel olmayan (veya NoSQL) bir veri tabanı, büyük hacimli verileri yüksek hızlarda işleyebilir. İlişkisel veri tabanlarına başka bir alternatif, bir veri gölünü içerir. Verilerin amacını henüz tanımlamamış olsak bile herhangi bir ölçekte veri depolamak için bir veri gölü kullanabiliriz. Bir veri gölünde veriler yapılandırılmış, yapılandırılmamış ve hatta ham dosyalarda olabilir.
İlişkisel verilere ihtiyacınız varsa ve veri analitiği gerçekleştirmeniz gerekiyorsa, bir veri ambarı en iyi seçenek olabilir. Veri ambarları genellikle bulut tabanlıdır. Bir veri ambarı ilişkisel bir model kullansa da, veri analitiğinde kullanım içindir ve bu nedenle ilişkisel veri tabanlarından belirli farklılıkları vardır. Örneğin, bir veri ambarında, güncel veriler yerine geçmiş verileri yakalamak daha yaygındır. Dahası, veri güncellemeleri, bir işlem gerçekleştiğinde oluşturulmak yerine programlanır. Son olarak, veri ambarları, analitik amaçlar için birden fazla veri kaynağından veri toplanması ve dönüştürülmesiyle oluşturulur.