NoSQL, devrimciden daha evrimseldir. Esasen mevcut “dış veritabanı depolama” fikirlerini “ilişkisel tabloları değil, bilinen veri yapılarını kullanarak” birleştirir.
İlişkiselden daha fazla veri tabanı türü vardır, örneğin hiyerarşik veri tabanları . Bugünün standartlarına göre arkaik olsa da, verilerinin veri yapılarına (ör. COBOL kayıtları) çok iyi göz attı . Mesele şu ki, veritabanındaki veriler, onları kullanan programlama dillerinde kayıtların nasıl düzenlendiğine yakın bir şekilde modellenmiştir.
Nihayetinde veritabanının kaygıları birbirinden ayırdığı ve uygun şekilde normalleştirildiğinde çoğu veri türünü ve veriler arasındaki ilişkileri görselleştirmek için harika bir yol olan ilişkisel veritabanlarının icadı için hızlı ileri . Öyle gerçekten veritabanlarının diğer türlerine göre kolay anlaşılır. Ancak, tamamen başarısız olduğu şey, verileri bir programdaki nesneleri ve sınıfları yansıtacak şekilde depolamaktır. Dolayısıyla, nesne-ilişkisel haritalamanın icadı . Başka bir deyişle, veritabanının tasarımı aslında onu kullanan programın tasarımına engel teşkil etmektedir, bu yüzden Hazırda Bekletme gibi ORM kitaplıklarına ihtiyacımız var.. Temiz ve tutarlı olsa da, aklımın arkasında, bir şeylerin tam olarak doğru olmadığı konusunda her zaman dürtücü bir şüphe vardır.
Bu, iki tür veritabanına, nesne veritabanlarına ve NoSQL'e yol açtı .
Her ikisi de ilişkisel veritabanlarının ortaya çıkardığı sorunları çözmeye çalışırken, bizi hiyerarşik veritabanlarının zihin bükme korkularına maruz bırakmaz. Veriler hala belirsiz tablolara benzeyen depolarda ortaya konmuştur, ancak gerçekte ilişkisel tablolardan çok programlama veri yapıları gibidir. Nesne veritabanları çoğunlukla iyi tanımlanmış kuralları takip ederken, benim fikrim NoSQL'in oldukça keyfi olduğu yönünde. Örneğin, bir tablo bir karma tablo veya bir dizi olarak görselleştirilebilir. Oracle SQL Developer veya SQL Server Management Studio'ya benzer bir keyfi araç kullanarak bunları sorgulamanın kolay ve iyi tanımlanmış bir yolu yoktur .
Fikir, bir kişinin istediği sorguyu ifade etmek yerine, bir SQL veritabanı motoruna daha uygun olan SQL sorgularını bir araya getirmekten ziyade, kolayca kodda aranabilen veri yapılarını tanımlayabilmesidir. Örneğin, bulanık veya kısmi eşleşmeler daha zordur ve ilişkisel bir veritabanında daha kötü performans gösterirken, NoSQL veritabanı böyle bir arama için optimize edilmiş ve zamanın bir bölümünde tamamlanan bir yapıya sahip olabilir.
NoSQL'i sorgulamak için diller var. Bununla birlikte, ilişkisel veritabanları için SQL'in ne olduğu gibi evrensel bir dil yoktur .
Geç Düzenleme:
NoSQL veritabanlarına yeterince aşina olmama rağmen, bu soru konuyla ilgili kaliteli bir kitap satın almam ve sonuçta konuyla ilgili gerçek bir uzman olmayı hedeflemem için itici güçtü. Geriye kalan yorumlar NoSQL Distile'e dayanıyor : Pramod Sadalage ve Martin Fowler'ın Gelişmekte Olan Polyglot Kalıcılık Dünyasına Kısa Bir Kılavuz .
Yazarlar, ilişkisel veritabanlarının Amazon ve Google gibi siteler için ihtiyaç duyulan verileri sunma yeteneğine sahip kümelere iyi ölçeklenmediğini belirtmiştir. büyük ölçüde statik verileri kullanır (dolayısıyla ACID işlemleri o kadar önemli değildir).
Ayrıca, NoSQL veritabanlarının NoSQL veritabanlarının veri yapısını daha kolay değiştirmelerine izin veren bir şema olmadan (sayfa 10) çalıştığını belirtirler. Resmi bir şemanın varlığının veya yokluğunun bu konuda önemli olduğundan emin değilim, çünkü SQL veritabanları da şemaları değiştirmeye izin veriyor. Ne olursa olsun, iki tanınmış yazar iddiada bulunmaya değer olduğunu iddia ediyor.
Bu ana noktaların her ikisinin de yalnızca asıl noktamı, NoSQL'in devrimci değil, evrimsel olduğunu zorlamaya hizmet ettiğine inanıyorum. Halen veri depolamakta ve ölçek ve değiştirilebilirlikte artımlı iyileştirmeler yapmaktadırlar. Ayrıca, NoSQL'in ilişkisel veritabanlarını veri depolamasının kralı olarak ele almaya çalışmakla kalmayıp, sadece ilişkiye girecek şekilde (ölçeklendirmeleri gerektiğine inanacak şekilde ölçeklendirilmesi ve morph olması gereken veri türleri için alternatif bir veri depolama aracı sağlamak için) dikkat çekmektedirler. veritabanları yeterince desteklemiyor.