Veri Tabanı Nedir?
Veri tabanı en genel tanımıyla, kullanım amacına uygun olarak düzenlenmiş veriler topluluğudur. Birbirleriyle ilişkileri olan verilerin tutulduğu, mantıksal ve fiziksel olarak tanımlarının olduğu bilgi depolarıdır. Veri tabanları gerçekte var olan ve birbirleriyle ilişkisi olan nesneleri ve ilişkileri modeller
Veri tabanı yönetim sistemleri (VTYS), verilere aynı anda birden çok bağlantı sağlayabilme özelliği sağlar. Bu sistemler, veri tabanı yönetiminin bir parçası olarak, verinin nasıl depolanacağı, kullanılacağı ve erişileceğini mantıksal olarak yönlendiren bir kurallar sistemidir
Düz model veya tablo modeli: İki boyutlu veri grubundan oluşur. Sütunlarda verilerin benzer özellikleri, satırlarda ise veri grupları yer alır. Kullanıcı adlarının ve şifrelerinin tutulduğu veri tabanı buna örnek olarak verilebilir. Böyle bir veri tabanında her satırda bir kullanıcıya ait şifre bilgileri, sütunlarda ise tipleri aynı olan veriler yer alır. Düz veri modeli tek tablodan oluşan bir model olarak düşünülebilir
Hiyerarşik Veri Modeli: İlk olarak 1960 lı yıllarda ortaya çıkmış ve adını veriyi depolama yönteminden almıştır. Bu veri tabanının depoladığı yapısal verilere kayıt adı verildi. Kayıtlar ağaç mimarisi şeklinde yukarıdan aşağı sıralanmaktadır. Kök adı verilen ilk kaydın bir veya daha çok çocuk kayıtları vardır. Çocuk kayıtlarında kendi çocuk kayıtları olabilir. Kök haricinde bütün kayıtların bir ebeveyni vardır
Ağ veri modeli: Bu model 1970'li yıların başında geliştirilmiştir. Hiyerarşik veri modelinin geliştirilmiş halidir. Hızlıca kabul görmesinin nedeni bir verinin doğal olarak başka veriler ile ilişkili olmasıdır. Ağ modelinin hiyerarşik modelden en önemli farkı, uç- düğüm pozisyonundaki verinin iç-düğüme işaret edebilmesidir. Böylelikle ağ modelinde bire-çok ilişkiler yanında, çoka-çok ilişkiler de modellenebilir. Bu veri tekrarını önemli ölçüde azaltır
İlişkisel Veri Modeli: Hiyerarşik ve ağ veri modellerinin, çeşitlenen beklentileri karşılamakta yetersiz kalması, yeni bir model arayışını başlatmış ve ilişkisel veri modeli geliştirilmiştir. İlişkisel veri modelinin temel kavramı, ilişkidir. İlişkiler yardımıyla, veri içerisindeki ilişkiler modellenir. Dolayısıyla, ilişkisel bir veri tabanı, çeşitli ilişki örneklerinden oluşur. Kavramsal olarak ilişkiler, satır ve sütunlardan oluşan iki boyutlu tablolarla karakterize edilir. Genellikle veri tabanında her tablo için bir dosya bulunur. Tablonun her satırı birbiriyle ilişkili verilerin bir topluluğudur. Sütunlarda ise nitelikler bulunur
Nesne Yönelimli Veri Modeli: Daha sonraları ortaya çıkmış ve başarısını kanıtlamıştır. Nesne yönelimli programlamaya dayanan veri modelidir
Nesne İlişkisel Veri Modeli: Nesne ilişkisel veri tabanı, ilişkisel işlevselliğin üzerine nesne yönelimli özellikler içerir. İlişkisel veri tabanları içinde nesne yönelimli karakteristikler içeren ilk veri tabanı 1997 yılında piyasaya sunulan Oracle8 dir.
Çoklu Ortam Veri Modeli: Çoklu ortam veri tabanları nesne ilişkisel veri tabanları ile büyük benzerlikler gösterir. Bununla birlikte, film, müzik, metin ve video gibi büyük nesneleri işlemek ve aynı zamanda işleme sırasındaki adımları kullanıcıya göstermemek için farklı özellikler taşır. Çoklu ortam veri tabanlarının desteklemesi gereken üç temel özellik; Veri miktarı, Süreklilik ve Senkronizasyondur. Çoklu ortam veri tabanı uygulaması, imge görüntüleme, uzaktan görüntülü eğitim, üç boyutlu tıbbi görüntü kayıtları depolanması konularında özellikle tıp bilgi sistemlerinde kullanılmaktadır
Dağıtık Veri Modeli: Dağıtık veri tabanları, iki ya da daha fazla bilgisayarda depolanan ve bir ağ üzerinde dağıtılan bilgiler için kullanılan veri tabanı grubudur. Veri tabanını ağ üzerinden paralel kullanmak için parçalara ayırmak, sorguların daha hızlı işlenmesini sağlar. Böyle bir sistemde, birden fazla veri tabanına erişilmesine rağmen, kullanıcı bir tek veri tabanıyla çalışıyormuş gibi işlem yapar.
İlişkisel Olmayan(NoSQL) ve İlişkisel Veri Tabanı Sistemleri
İlişkisel Veri Tabanı (Relational Database System) Günümüzde en yaygın kullanılan veri tabanı sistemlerinden biridir. Satır ve sütunların meydana getirdiği tablolardan oluşur. Bu tablolar birbiri ile ilişkileri olan tablolardır. Dolayısıyla bir veri tabanında ilişkiden söz edebilmek için en az iki tablonun yer alması ve bu iki tablodaki verilerin birbiri ili bir şekilde ilişkilendiriliyor olması gerekir. Bu şekilde ilişkisel veri tabanları, veri tabanı denilen büyük dosyalardan oluşur. Her bir tablo, belli yapıya uygun verileri saklamak üzere tasarlanır. ACID; klasik ilişkisel veri tabanı sistemlerinde sağlanan temel özellikler aşağıda sunulmuştur : Bölünmezlik (Atomicity) Tutarlılık (Consistency) İzolasyon (Isolation) Dayanıklılık (Durability)
İlişkisel Olmayan (NoSQL) Veri tabanı (Non-Relational Database System) NOSQL yıllardır kullanılan MSSQL ve MYSQL gibi ilişkisel kullanılan veri tabanı sistemlerine (RDBMS) alternatif olarak türetilmiş bir veri tabanı sistemidir. NOSQL sistemlerinde bildiğimiz anlamda sql dili kullanılmadığı için NOSQL olarak adlandırılmıştır. Henüz teknolojik bir standart olmadığı için bazı kişiler tarafından "Not Only SQL" olarak da isimlendirilir. Bazılarına göre yeni, hızlı ve esnek olan bu sistem kimilerine göre henüz yeterli değil. Ancak bunun üzerine düşünmek yerine şöyle bir şey düşünelim, BigData... Son yıllarda duyduğumuz bu isim yıllardır biriktirdiğimiz verilerin anlamlı hale dönüştürülme çabasıdır. Bu veri o kadar büyük boyuta ulaşır ki ilişkisel veri tabanı sistemlerinde tutulamaz. Burada tutulamadığı içinde veriler anlamlandınlamaz ve bilgi çöplüğü olarak kalır. Ancak bu bilgi çöplüğü diye tabir ettiğimiz aslında çok önemli ve yararlı verileri barındırır. İşte bu durumda başvurulan sistem NOSQL çözümleridir. Q
Neden NoSQL Gerekli? NOSQL'in önemini şöyle vurgulayabiliriz. Google yıllardır indekslediği sitelerin bilgilerini RDBMS'de değil Big Table üzerinde tutuyor. Bu sayede RDBMS gibi büyük verileri pertormanslı bir şekilde işleyemeyen pahalı sistemler yerine açık kaynaklı ucuz ve performans]] sistemleri tercih ediyor. NOSQL'in Farkı Nedir? NOSQL, RDBMS gibi işlem tabanlı çalışmaz. Bunun yerine yatay büyüme yaparak, performans kazancı sağlar. Verileri bölerek kopyalarını dağınık sistemin farklı parçalarına ekler böylelikle tutarlılık sağlar ve her bir parça için harcanan yük azaltılmış olur.
RDBMS önceden tasarlanıp sütunları belirlenir ve satır satır eklenir. Ancak NOSQL de bu tip bir tanıma gerek yoktur. Bunun yerine daha esnek bir yapı bulunur. Bu kafanızda soru işareti bırakıyorsa şöyle düşünün. 2 adet kolonu olan bir tablonuzda integer veriler' tutuyorsunuz yeni satırınızda bunlar yerine varchar eklemeniz gerekiyor. Hiçbir değişikliğe gerek kalmadan yerinizi ekleyebilirsiniz. A kolonu B kolonu varken C ve D'ye gerek yok. NOSQL birincil indeks değerine ihtiyaç duyar ve bunun üzerinden erişim sağlar. RDBMS de bu zorunlu değildir. Oluşan indeks üzerinden belirli aralığa hızlıca ulaşılabilir. Aralarındaki en önemli fark bizce veri tabanı tasarımında oluşuyor. RDBMS bir sistem için kullanacağınız veriyi nasıl depolayacağım diye düşünürken, NOSQL için depoladığım veriyi nasıl kullanacağım diye düşünüyorsunuz. Bu da proje yazarken sadece projenizi yazmanızı sağlıyor.
NOSQL Sistemleri nelerdir? Döküman (Document) tabanlı: Bu tip veri tabanları JSON yapısında kayıt yapar. Bu yapılarda sınırsız alan oluşturabilirsiniz. Hatta sınırsız alanların içine sınırsız alanlar ve onların da içine şeklinde devam edebilirsiniz. MongoDB, CouchDB, Amazon Simple DB, Cassandra, HBase... Anahtar / Değer (Key / Value) tabanlı: Bu sistemlerde anahtarlara karşılık gelen tek bir bilgi bulunur. Kolon yapısı yoktur. MemcacheDB, Berkeley DB, Azure Table Storage... Grafik (Graph) tabanlı: Bu sistemler diğerlerinden farklı olarak verilerin ilişkisini saklayan Graph Theory modelindeki sistemlerdir. Neo4J, FlockDB...
SQL Sorguları SELECT, WHERE, DISTINCT, AND, OR, ORDER BY, INSERT INTO, UPDATE, DELETE, SELECT TOP, LIKE, BETWEEN, ALIASES, JOINS, INNER JOIN, SELECT INTO, CREATE, AVG, COUNT, MAX, MIN, LEN, ROUND,LIMIT,UNION
???
SQL LIMIT Kullanımı Tablodan kaç adet satırın çekileceğini belirlerken kullanırız SELECT * FROM musteriler WHERE sehir= Manisa LIMIT 1
SQL UNION Kullanımı UNION ile iki adet tablomuzdaki seçeceğimiz alanları birleştirerek tek bir tablo alanıymış gibi kullanabiliriz. Union ile iki tablodaki alanlar birleştirilirken tekrarlayan kayıtlar bir defa alınır. Eğer tekrarlayan kayıtların alınması isteniyorsa UNION ALL kullanılmalıdır.
UNION Kullanım Biçimi SELECT alan_ad(lari) FROM tablo1 UNION SELECT alan_ad(lari) FROM tablo2 UNION ALL Kullanım Biçimi SELECT alan_ad(lari) FROM tablo1 UNION ALL SELECT alan_ad(lari) FROM tablo2