Tüm şirketler, küçük bir işletmenin basit bir kayıt defterinden, hatta belki bir günlükten veya bir kağıt parçasından
veri depolar.
Amazon gibi petabaytlarca veriyi depolamak için bilgisayarlara ihtiyaç duyan devasa şirketlere.
Şimdi, bu bilgileri depolamak için, hemen hemen her şirket ve bazen bireyler de veritabanı adı verilen bir
şeye ihtiyaç duyarlar.
Son bölümde sunucumuzun yeni bir kullanıcıyı hatırlamasının ne kadar zor olduğunu gördük.
Sunucu her çöktüğünde, değişken sıfırlanıyor ve sonra her şey baştan başlıyordu.
Ya da bir oturum açma veya oturum açma kontrolü yapmak ve JavaScript üzerinden bir döngü yaparak e-postaları ve parolaları
yinelemek istersek, bu verimsizdir.
İşte bu noktada veri tabanı imdadınıza yetişiyor.
Öyleyse kendimize soralım, veritabanı nedir?
Veritabanı bir veri koleksiyonudur.
Ve veri ile neyi kastettiğimizi.
Bunların birçok türü var, değil mi?
Sayılar olabilir, tarihler olabilir, şifre karmaları olabilir.
Kullanıcı bilgileri olabilir.
Veritabanları bu verileri işimize yarayacak şekilde düzenlememize olanak tanır ve veri yönetimini kolaylaştırır.
Ve bundan bir şey ortaya çıktı ve buna veritabanı yönetim sistemi veya kısaca DB MBS deniyor.
Veritabanlarına erişmemizi ve verilerle çalışmamızı sağlayan bir program koleksiyonudur ve ayrıca veritabanı
kullanıcılarına kontrol erişimi sağlar.
Yani db mbs bu kutunun içinde bir şey.
Bize bir araç sağlayan bir şey, iletişim kurmamızı sağlayan bir yazılım parçası.
Veritabanı bizim için yararlı olan bilgileri depolar ve ayrıca veritabanında ne varsa güncellememize, eklememize,
silmemize, aramamıza olanak tanır.
Ve bu DB PBM'ler fikri 1960'larda gerçekten şekillenmeye başladı ve şimdi birçok heyecan verici şeyin ön saflarında
yer alıyor.
Sadece veritabanlarıyla çalışan mühendislerden oluşan koca bir endüstri var çünkü bu çok önemli.
Şu anda gerçekten popüler olan ve bu kursta bahsedeceğimiz iki tür
DMS var.
Ve bu iki tür Post Gress ve MongoDB tarafından gerçekten iyi temsil edilmektedir.
Birincisi olan ilişkisel veritabanı hakkında konuşalım.
Ve sağ tarafta görebileceğiniz gibi bu muhtemelen en popüler olanıdır, bunların hepsinin
ilişkisel veritabanları olduğunu görüyorsunuz, post grass, Oracle, SQL Server.
MySQL SQL Light'ı duymuş olabilirsiniz.
Bunların hepsi ilişkisel veritabanı etiketine sahip veritabanı türleridir.
İşin güzel yanı ise hepsinin birbirine oldukça benzemesi.
Hepsi aynı standart formatı takip eder.
İlişkisel veritabanları, sütun ve satırlara sahip iki veya daha fazla tablodan oluşur.
Bu durumda, kullanıcılar bir tablodur ve sütunlarımızda oluşturulan tam ad kullanıcı adı metni ve burada sahip oldukları
değerler satırlardır.
Her satır bir girişi temsil eder ve her sütun isim, adres veya telefon numaraları gibi çok özel bir bilgi türünü
sıralar.
Ve sonra tablolar ve alan arasındaki ilişki.
İlişkisel bir veritabanında buna şema denir.
Herhangi bir bilgi eklenmeden önce şema açıkça tanımlanmalıdır.
Ve eğer bu şu anda kafa karıştırıcıysa, endişelenmeyin, aslında bu veritabanlarını oluşturacağız.
Yani sana mantıklı geliyor.
Örneğin Twitter'ımız olsaydı, sahip olacağımız tablo türlerini ve bunları nasıl düzenleyeceğimizi burada
görebilirsiniz.
Bir kullanıcı tablomuz, bir tweet tablomuz, bir takipçi tablomuz olacaktı.
Ve tüm bu bilgileri, örneğin tablonun farklı parçalarını birbirine bağlayarak birbirine bağlayabiliriz.
Örneğin, kullanıcı adı tweet'te olduğu gibi kullanıcının tablosunda da aynı olacaktır.
Sabit.
Bu şekilde, tweets tablosundaki kullanıcı adının, kullanıcı tablosundaki kullanıcı adının yabancı anahtarı olduğunu ve ardından kullanıcıdan
geldiğini söyleyebiliriz.
Aşağıdaki tabloda kullanıcı adının yabancı anahtarı olacaktır.
Artık tam ad veya kimlik gibi şeyler, bir tablodaki her satırı tanımlayan bir şey.
Buna birincil anahtar adı verilir ve bu bölümün ilerleyen kısımlarında bunun üzerinden geçeceğiz.
Tamam.
PostgreSQL hakkında öğreneceğimiz tüm bu veritabanları hemen hemen aynıdır.
Yani birini öğrendikten sonra diğerlerini öğrenmek oldukça kolaydır.
Arka uçlu bir sunucu ile gerçekte nasıl iletişim kurarlar?
Tüm ilişkisel veritabanları SQL adı verilen bir şey kullanır.
Ve SQL, tıpkı HTTP'nin ön uç ile arka uç arasında yaptığı gibi SQL ile iletişim kurmamızı sağlar.
Veritabanı ile iletişim kurabilir ve istediğimiz şekilde değişiklik yapabilir veya güncelleme yapabiliriz.
Bu konuyla ilgili bir videomuz da olacak.
Tamam.
Yani bu ilişkisel veritabanları.
Peki ya ikinci tür?
İkinci tür, ilişkisel olmayan veritabanı veya NoSQL veritabanı olarak adlandırılır.
Ve bir kez daha, Couch DB ve Hyper Table gibi bazı havalı isimlere sahip pek çok farklı veritabanı
türü vardır.
Artık bir MongoDB veya ilişkisel olmayan bir veritabanı, önce şemayı tanımlamak zorunda kalmadan bir uygulama
oluşturmanıza olanak tanır.
İlişkisel bir veritabanının aksine.
İlişkisel veritabanına geri dönersek, bu şema veya bu tabloların önceden tanımlanmış olması gerekir, değil mi?
Uygulamamızın nasıl görüneceğini bilmemiz, bu tabloları oluşturmamız gerekiyor, böylece uygulama herkese açık olduğunda kullanıcı
bilgilerini, tweetleri ve takipçileri girmeye başlayabiliriz.
SQL ya da ilişkisel olmayan bir veritabanı ile, bunu sadece gittiğimiz gibi tanımlayabiliriz ve hepsinin bu bilgiyi depolamak
için farklı yolları vardır.
Yani her biri çok ama çok farklı.
İlişkisel olmayan bir veritabanı kullanmak için bir başka güçlü neden de şudur: Veri gereksinimleriniz
projenizin başlangıcında net değilse ve belki de büyük miktarda yapılandırılmamış veriye sahipseniz, açıkça
tanımlanmış bir şemaya sahip ilişkisel bir veritabanı geliştirme lüksünüz olmayabilir.
Bunun yerine, ilişkisel olmayan bir veritabanının her türden ilgili bilgiyi bir araya getiren klasörler gibi olması
nedeniyle daha büyük bir esneklik sunarlar.
Şimdi MongoDB belge odaklı olarak adlandırılan bir şeydir.
Bilgileri belge olarak saklar.
Bu noktayı size açıklayayım.
Masaüstümde iki klasör var.
Biri ilişkisel bir veritabanı ve burada kullanıcıların tweetleri, profil takipleri var.
İlişkisel veritabanlarını bu tür bir depolama ile düşünebilirsiniz; bu klasör bilgisayarda bir
yerde bulunur ve bu bilgileri depolar.
Ve ne zaman bir veritabanından bir şey istememiz gerekse, o zaman kullanıcıları alırız.
Kullanıcının tweetlerini de almak istiyorsak, ilgilendiğimiz kullanıcıyı buluruz, ardından
kullanıcılara bağlanan yabancı anahtarla ilgilendiğimiz kullanıcının tweetlerini de buluruz.
Ayrıca o kullanıcının kaç takipçisi olduğunu da bulabiliriz.
Bu bilgileri alır ve web uygulamamızda görüntüleriz.
Öte yandan MongoDB, her bir kullanıcıyı aslında bir belge olarak tutacaktır.
Yani ilk kullanıcıyı almak istersem, bu belgeyi alırım ve tüm takipçiler,
tweetler, profil, her şey bu tek belgede bulunur.
Ve şöyle düşünüyor olabilirsiniz, hmm, MongoDB buna sahip olmaktan daha iyi bir seçim gibi görünüyor.
İşleri doğru yapmanın yolu.
İhtiyacınıza göre değişir.
İşte bu yüzden veri tabanları bu kadar karmaşık bir konudur.
Bu gerçekten de sizin durumunuza bağlı.
Bir profiliniz, belki bir LinkedIn profiliniz varsa bu MongoDB yönteminin çok kullanışlı olduğunu görebilirsiniz,
ancak sadece takip verileriyle veya sadece tweet verileriyle çalıştığınız bir şeye ihtiyacınız varsa,
belki görmek istediğiniz tweetlerle, ortalama tweet boyutu nedir?
Bu dosyayı almak ve her bir kullanıcıdan çıkarmanız gerekebilecek bu yola kıyasla
bunu hesaplamak gerçekten çok kolay.
Yani bu gerçekten ihtiyaçlarınıza bağlı.
Size olabilecek başka bir diyagram göstereyim.
İşe yarar.
İlişkisel ve ilişkisel olmayan veritabanlarına baktığımızda, ilişkisel olanı her tablonun bir blog yazısı, bir blog
etiketi, bir blog yorumu olduğu ve bu tabloları size blog bilgilerini vermek için birbirine bağladığı, ilişkisel olmayanı ise bu
blog yazısının tamamını bir girişte sakladığı ve yorumların, etiketlerin, kategorilerin ve diğer tüm ilgili verilerin
tek bir yerde olduğu şeklinde düşünebilirsiniz.
Peki MongoDB iletişim kurmak için ne kullanır?
Buradaki örneğimize geri dönecek olursak, Post Press gibi ilişkisel veritabanları için SQL'imiz vardı.
MongoDB'nin sorgu dili dediğimiz kendine ait bir dili vardır ve bu sadece MongoDB sorgu dilidir.
Ancak her ikisi de aynı şeyi yapmayı amaçlıyor.
Yani, veritabanı ile iletişim kurmak için, sunucunun veritabanı ile iletişim kurması için kolay bir yol
sağlayın.
Ve bu bölümde, bundan bahsedeceğiz ve sonunda noktaları birleştireceğiz ve bir sunucuya
bağlandıklarında veritabanlarının gücünü size göstereceğiz.
Bir sonrakinde görüşürüz.