NoSQL diye bir şey yoktur!
NoSQL bir terimdir.
Onlarca yıldır, insanlar veritabanları hakkında konuşurken, ilişkisel veritabanları anlamına geliyorlardı. İnsanlar ilişkisel veritabanları hakkında konuşurken, Edgar F. Codd'un Yapısal Sorgu Dili ile kontrol ettiğiniz anlamına geliyordu. Verileri başka bir şekilde saklama? Delilik! Başka bir şey sadece düz dosyalar.
Ancak son birkaç yılda insanlar bu dogmayı sorgulamaya başladı. İnsanlar, satırları ve sütunları olan tabloların gerçekten verileri temsil etmenin tek yolu olup olmadığını merak etti. İnsanlar düşünmeye ve kodlamaya başladı ve verilerin nasıl düzenlenebileceği birçok yeni kavram geliştirdiler. Ve verilerle bu yeni çalışma yöntemleri için tasarlanmış yeni veritabanı sistemleri oluşturmaya başladılar.
Tüm bu veritabanlarının felsefeleri farklıydı. Ancak tüm bu veritabanlarının ortak bir yanı, Yapılandırılmış Sorgu Dili'nin artık bunları kullanmak için uygun olmadığıydı. Böylece her veritabanı SQL'i kendi sorgu dilleriyle değiştirdi. Ve böylece klasik ilişkisel veritabanı modeline meydan okuyan tüm veritabanı teknolojileri için bir etiket olarak NoSQL terimi doğdu.
Peki NoSQL veritabanlarının ortak noktası nedir?
Aslında fazla değil.
Sıklıkla aşağıdaki ifadeleri duyarsınız:
- NoSQL ölçeklenebilir!
- NoSQL, BigData için!
- NoSQL, ASİT'i ihlal ediyor!
- NoSQL yüceltilmiş bir anahtar / değer deposudur!
Bu doğru mu? Bu ifadelerin bazıları, yaygın olarak NoSQL olarak adlandırılan bazı veritabanları için doğru olabilir, ancak her biri en az biri için de yanlıştır. Aslında, NoSQL veritabanlarının ortak yanı, SQL kullanmayan veritabanları olmasıdır. Bu kadar. Onları tanımlayan tek şey onları birbirinden ayıran şeydir.
Peki NoSQL veritabanlarını ayıran nedir?
Bu nedenle, yaygın olarak NoSQL olarak adlandırılan tüm veritabanlarının bunları birlikte değerlendirmek için çok farklı olduklarını açıkladık. Belirli bir sorunu çözmek için uygun olup olmadıklarına karar vermek için her birinin ayrı ayrı değerlendirilmesi gerekir. Ama nereden başlayalım? Neyse ki, NoSQL veritabanları farklı kullanım durumları için uygun olan belirli kategoriler halinde gruplandırılabilir:
Belge odaklı
Örnekler: MongoDB, CouchDB
Güçlü yönleri: Heterojen veriler, çalışan nesne yönelimli, çevik gelişim
Avantajları, tutarlı bir veri yapısı gerektirmemesidir. Gereksinimleriniz ve dolayısıyla veritabanı düzeniniz sürekli değiştiğinde veya bir araya gelen ancak yine de çok farklı görünen veri kümeleriyle uğraşırken yararlıdırlar. "Anahtar" ve "değer" olarak adlandırılan iki sütuna sahip çok sayıda tablonuz varsa, bunlar incelenmeye değer olabilir.
Grafik veritabanları
Örnekler: Neo4j, GiraffeDB.
Güçlü Yönler: Veri Madenciliği
Çoğu NoSQL veritabanı, veri ilişkilerini yönetme kavramından vazgeçerken, bu veritabanları, ilişkisel veritabanlarından daha fazla kucaklar.
Odak noktaları, verileri diğer verilerle olan ilişkisiyle tanımlamaktır. Diğer iki tablonun (ve belki de aralarındaki ilişkiyi açıklayan bazı veriler) birincil anahtarları olan çok sayıda tablonuz varsa, bunlar sizin için bir şey olabilir.
Anahtar Değerli Mağazalar
Örnekler: Redis, Cassandra, MemcacheDB
Güçlü yönleri: Bilinen tuşlarla değerlerin hızlı aranması
Çok basittirler, ancak bu onları hızlı ve kullanımı kolaylaştırır. Saklı yordamlara, kısıtlamalara, tetikleyicilere ve tüm bu gelişmiş veritabanı özelliklerine ihtiyacınız olmadığında ve verilerinizin hızlı bir şekilde depolanmasını ve alınmasını istiyorsanız, bunlar sizin için.
Ne yazık ki tam olarak ne aradığınızı bildiğinizi varsayıyorlar. User157641 profiline mi ihtiyacınız var? Sorun değil, sadece mikrosaniye alacaktır. Peki 16 ile 24 yaşları arasındaki tüm kullanıcıların isimlerini en sevdikleri yemek olarak "waffle" a sahip ve son 24 saat içinde giriş yaptıktan sonra ne olacak? Zor şans. Belirli bir sonuç için kesin ve benzersiz bir anahtarınız yoksa, bunu KV mağazanızdan kolayca çıkaramazsınız.
SQL kullanılmıyor mu?
Bazı NoSQL destekçileri, en sevdikleri NoSQL veritabanının yeni şeyler yapmanın yeni yolu olduğunu ve SQL'in geçmişte kaldığını iddia ediyor.
Onlar doğru mu?
Hayır, elbette değiller. SQL için uygun olmayan sorunlar olsa da, yine de güçlü yanları var. Birçok veri modeli en iyi şekilde birbirini referans alan bir tablo koleksiyonu olarak temsil edilir. Özellikle veritabanı programcılarının çoğu on yıllardır verileri ilişkisel bir şekilde düşünmek için eğitildiklerinden ve bu zihniyeti nadiren iyi yapılmayan yeni bir teknolojiye bastırmaya çalışmaktan dolayı.
NoSQL veritabanları SQL'in yerine geçmez - alternatiftir.
Farklı NoSQL veritabanlarının etrafındaki yazılım ekosistemlerinin çoğu henüz olgun değil. Gelişmeler olsa da, popüler SQL veritabanları için mevcut olan kadar olgun ve güçlü olan tamamlayıcı araçlara sahip değilsiniz.
Ayrıca, SQL için çok daha fazla teknik bilgi var. Nesil bilgisayar bilimcileri, kariyerlerini onlarca yıl boyunca ilişkisel veritabanlarına odaklanan araştırmalara harcadılar ve şunu gösteriyor: SQL veritabanları ve ilişkisel veri modelleme hakkında yazılan literatür, hem pratik hem de teorik, kitaplarla dolu birden fazla kütüphaneyi doldurabilir. Verileriniz için ilişkisel bir veritabanı nasıl oluşturulur, o kadar iyi araştırılmış bir konudur ki, genel olarak kabul edilen kitap tarafından en iyi uygulamaların olmadığı bir köşe vakası bulmak zordur.
Öte yandan, çoğu NoSQL veritabanı hala emekleme aşamasındadır. Hala bunları kullanmanın en iyi yolunu buluyoruz.