İçindekiler:
Video: Disk Yönetimi ve RAID (Veri Tabanı Eğitimleri 8.1) (işletim sistemleri 17. Video) 2024
Anahtarları uygun bir şekilde yönettiğinizde, NoSQL ile veri depolamanın nasıl tasarlanacağını ve iş için güvenli ve her zaman erişilebilir olduğundan emin olmaya hazırsınız demektir yapman lazım.
Anahtar / değer depoları veri türleri
Anahtar / değer depoları genellikle & ldquo; kovalar ve rdquo; ikili veri için. Bazı veritabanları güçlü dahili veri yazımı ve hatta şema desteği sağlar. Diğerleri, basitçe, ortak uygulama veri yapılarını bir anahtar / değer depoya seri hale getirmek için istemci sürücülerinde kolay yardımcı işlevler sağlar. Haritaya, listelere ve sıralanmış kümelere örnekler.
Oracle NoSQL iki modda çalışabilir:-
Basit ikili depo
-
Çok yapılandırılmış Avro şema desteği
Bir Avro şeması bir ilişkisel veritabanı şemasına benzer - çok sıkı bir set uygulamak burada resimde gösterildiği gibi, veritabanında saklanan JavaScript Nesne Tabelası (JSON) verilerinde biçim kuralları:
{kullanıcı adı: & ldquo; afowler ve rdquo;, sessionid: 13452673, beri: 1408318745, theme: & ldquo; bluesky & rdquo;}
Bir Avro şemasını bir JSON belgesi kullanarak tanımlarsınız. Bu, daha önce gösterilen saklanan veriler için Avro şemasına bir örnek:
{& ldquo; türü ve rdquo;: & ldquo; Kayıt ve rdquo;, & ldquo; ad & rdquo;: & ldquo; com. Örnek ve rdquo;, & ldquo; adı ve rdquo;: & ldquo; UserSession ve rdquo;, & ldquo; alanları & rdquo;: [{& ldquo; adı ve rdquo;: & ldquo; kullanıcı adı ve rdquo;, & ldquo; türü ve rdquo;: [& ldquo; dize & rdquo;, & rdquo; null & rdquo;]}, {& ldquo; adı ve rdquo;: & ldquo; sessionid ve rdquo;, & ldquo; türü ve rdquo;: & ldquo; int & rdquo;}, {& ldquo; adı ve rdquo;: & ldquo; çünkü ve rdquo;, & ldquo; türü ve rdquo;: & ldquo; uzun & rdquo;}, {& ldquo; adı ve rdquo;: & ldquo; tema & rdquo;, & ldquo; türü ve rdquo;: [& ldquo; dize & rdquo;, & rdquo; null & rdquo;]}]}
Bir Avro şeması, şemanın önemli olduğu zaman veritabanında çok güçlü bir şekilde yazım sağlar. Önceki örnekte, dize verileri, sayısal bir oturum kimliği, bir tarih (Unix Zaman Döneminden bu yana milisaniye, uzun bir tamsayı olarak) ve temanın web sitesinde kullanılacağı bir kişiselleştirme ayarını görürsünüz.
Ayrıca, kullanıcı adı ve temanın türüne iki seçenek vardır - dize ve null, bu, null değerlere izin verildiğini Oracle NoSQL'e yönelttiğiniz yöntemdir. Temayı bir dize olarak bırakıp ek bir yapılandırma parametresi & ldquo; Varsayılan & rdquo;: & ldquo; bluesky ve rdquo;.
Diğer NoSQL veritabanları, JSON içeriğine sahip herhangi bir değerin herhangi bir özelliğine sekonder dizinler sağlar. Örneğin, Riak, doküman bölümlemeye dayalı ikincil endeksler sunar - temel olarak, bir JSON belgesindeki bilinen bir özellik bir türle endekslenmiştir.Bu, eşit eşit olmayan karşılaştırmalara ek olarak aralık sorguları (az veya büyük) sağlar. Riak sıkı bir şema olmadan aralık sorguları sağlamayı başarır - sadece basit indeks tanımı. Veriler oradaysa, dizine eklenir.
Verileri çoğaltma
Aynı verinin birden çok kopyasını diğer sunucularda veya hatta raf sunucularında saklamak, bir sunucu başarısız olursa verilerin kullanılabilirliğini sağlamaya yardımcı olur. Sunucu arızası öncelikle aynı küme içinde olur.
Yinelemeleri iki temel yolla çalıştırabilirsiniz:
- Ana-bağımlı: Tüm okuma ve yazma, usta olur. Esirler devralır ve yalnızca ana başarısız olduğunda istek alırlar.
Ana-köle çoğaltması, genellikle ACID uyumlu anahtar / değer depoları üzerinde kullanılır. En yüksek tutarlılığı sağlamak için, birincil mağazaya yazılır ve işlem tamamlanmadan önce tüm çoğaltmalar güncellenir. Bu mekanizmaya bir iki fazlı taahhüt adı verilir ve kopyalar üzerinde fazladan ağ ve işlem süresi oluşturur.
- Master-master: Bir anahtarı yöneten tüm düğümlerde okuma ve yazma gerçekleşebilir. Bir & ldquo; Birincil ve rdquo; bölüm sahibi.
Master-master çoğaltmaları tipik olarak sonunda tutarlıdır; küme, bir anahtardaki en son değeri belirlemek ve eski, eskiyen değerleri kaldırmak için otomatik bir işlem gerçekleştirir.
Çoğu çoğu anahtar değerli mağazada, bu yavaş bir şekilde olur - okuma zamanında. Riak, istisnadır çünkü normal işlemler sırasında tutarlılık kontrolü için anti-entropi hizmeti vardır.
Sürüm verisi
Otomatik çakışma çözme özelliğini etkinleştirmek için, verilerin en son sürümünü belirten bir mekanizmaya ihtiyacınız var. Sonuçta tutarlı anahtar / değerli mağazalar farklı yollarla çakışma çözünürlüğünü elde eder.
Riak hangi kopyanın en sonuncusu olduğunu tahmin etmek için bir vektör saat mekanizması kullanır. Diğer anahtar değerli mağazalar, kademeliği göstermek için basit zaman damgalarını kullanır. Çakışmalar otomatik olarak çözülemediğinde, verilerin her iki kopyası müşteriye gönderilir. Müşteriye gönderilen çakışan veriler aşağıdaki durumda ortaya çıkabilir:
-
İstemci 1 kopyasına A 'Adam: {likes: Cheese}' yazar.
-
Yineleme A, yineleme B'ye veri kopyalar.
-
İstemci 1 Y kopyası A'daki verileri 'Adam: {likes: Cheese, hates: sunlight}' olarak günceller.
Bu noktada, çoğaltma A'nın en son veriyi çoğaltma B'ye kopyalamak için yeterli zamanı yok.
-
İstemci 2 çoğaltma B'deki verileri 'Adam: {severler: Köpekler, nefret eder: kangurular}' olarak günceller.
Bu noktada çoğaltma A ve çoğaltma B çakışıyor ve veritabanı kümesi farkları otomatik olarak çözemiyor.
Alternatif bir mekanizma, zaman damgalarını kullanmak ve en son veriyi gösterecek şekilde güvenmektir. Böyle bir durumda, uygulamanın değeri güncelleştirmeden önce zaman damgalarının en son değeri okuduğunu kontrol etmesi sağduyu olur.
onayını kontrol ediyorlar ve mekanizması, 'i temelde ' anlamına geliyorlar. En son sürüm hala sürüm 2 ise, sürüm 3'ü kaydet '. Bu mekanizmaya bazen okundu eşlemesi güncellemesi (RMU) veya okuma eşleşmesi yazma (RMW) denir. Bu mekanizma, Oracle NoSQL, Redis, Riak ve Voldemort tarafından kullanılan varsayılan mekanizma.