MongoDB ve Cassandra hakkında konuşurken "Belge odaklı" ve Anahtar-Değer ne anlama geliyor?


Yanıtlar:


153

Bir anahtar-değer deposu , mümkün olan en basit veri modelini sağlar ve tam olarak adından da anlaşılacağı gibi: bir anahtar tarafından dizine alınmış değerleri depolayan bir depolama sistemidir. Anahtara göre sorgulama ile sınırlısınız ve değerler opaktır , mağaza onlar hakkında hiçbir şey bilmiyor . Bu, çok hızlı okuma ve yazma işlemlerine izin verir (basit bir disk erişimi) ve bu modeli bir tür geçici olmayan önbellek olarak görüyorum (yani, uzun ömürlü verilere anahtarla hızlı erişime ihtiyacınız varsa çok uygundur).

Bir belge yönelik veri tabanı önceki modeli uzanır ve değerler saklanır yapılandırılmış veritabanı anlayabileceği (bu nedenle adı, bir belge) biçiminde. Örneğin, bir belge bir blog yazısı ve normal olmayan bir şekilde saklanan yorumlar ve etiketler olabilir. Veriler şeffaf olduğundan, mağaza daha fazla iş yapabilir (belgenin alanlarını endekslemek gibi) ve anahtarla sorgulama yapmakla sınırlı değilsiniz. Bahsettiğim gibi, bu tür veritabanları tek bir sorgu ile tüm bir sayfanın verilerini almanıza izin verir ve içerik odaklı uygulamalar için çok uygundur (bu yüzden Facebook veya Amazon gibi büyük siteler onları sever).

Diğer NoSQL veritabanı türleri arasında sütun odaklı depolar , grafik veritabanları ve hatta nesne veritabanları bulunur . Ancak bu sorunun ötesine geçiyor.

Ayrıca bakınız


2
Anahtar-değer depolarının disk erişimiyle yapılması gerekmez ve bazı uygulamalarda bunlara geçici olmayan olarak adlandırılması yanlıştır. Geçici olmayan bir depolama ortamına yazma veya geri yazma olmadan bellekte bir anahtar-değer deposu oluşturabilirsiniz. Verileri uzun ömürlü olarak adlandırmak da yanıltıcıdır çünkü verilerin yaşam süresinin onu geri getirme şeklinizle hiçbir ilgisi yoktur.
Anthony

17

Ben de son bir aydır NoSQL'i araştırıyorum. Sanırım genel olarak şöyle bir şey ifade edilebilir:

  • KV mağazaları, bir anahtar için gerçekte depolanan değer içeriğini bilmiyor
  • Belge tabanlı, db belge yapısını bildiğinden (örneğin bir blog gönderisinin etiketleri) değer içeriği içinde ikincil dizinleri tanımlamanıza olanak tanır.
  • NoSQL çözümlerinin her birinin dikkate alınması gereken belirli özellikleri vardır, örneğin:
    • Bir KV mağazasındaki özel veri türleri (ör. Sol / sağ pop / redis'teki gibi itmeli setler)
    • riak'ın söylediği gibi kolay ölçek büyütme / küçültme kümesi (henüz denemedim ... henüz)
    • Voldemort'taki gibi takılabilir veri deposu
    • yerleşik web yapılandırması ve CouchDB / couchapp'daki gibi web uygulaması desteği

2

Belge yönelimli bir veritabanı veya belge deposu, yarı yapılandırılmış veriler olan belgeye yönelik bilgileri depolamak, almak ve yönetmek içindir. Anahtar-değer deposu, Belgeye Yönelik veritabanının miras alınmasıdır. Fark, verilerin işlenme biçiminde yatmaktadır; Bir anahtar-değer deposunda, verilerin veritabanına doğal olarak opak olduğu kabul edilirken, belge odaklı bir sistem, veritabanı motorunun daha fazla optimizasyon için kullandığı meta verileri çıkarmak için belgedeki dahili yapıya dayanır.

MOngoDb ve Cassandra arasındaki farkla ilgilenirsek. MongoDB, ilişkisel bir veritabanı gibi davranır. Veri modeli, en üst düzeyde bir veritabanı, daha sonra MySQL'deki tablolara benzeyen koleksiyonlardan (örneğin) ve daha sonra MySQL'deki satırlar gibi koleksiyonda bulunan belgelerden oluşur. Her belgenin bir alanı ve MySQL'deki sütunlara ve değerlere benzer olduğu bir değer vardır. Alanlar basit anahtar / değer olabilir, örneğin {'name': 'David Mytton'} ancak başka belgeler de içerebilirler, örn. {'Name': {'first': David, 'last': 'Mytton'}}. Cassandra'da belgeler gerçekten tek bir anahtar ve değer olan "sütunlar" olarak bilinir. örneğin {'key': 'name', 'value': 'David Mytton'}. Ayrıca dahili çoğaltma ve tutarlılık için bir zaman damgası alanı da vardır. Değer tek bir değer olabilir ancak başka bir "sütun" da içerebilir. Bu sütunlar, daha sonra, bir anahtarla başvurulan, sütunlardaki belirli bir değere göre verileri sıralayan sütun aileleri içinde bulunur.

Ancak, en üst seviyede MongoDB veritabanına benzer bir anahtar alanı vardır.


0
  1. Anahtar-değer veritabanı modelinde, belge modelindeki belge tanımlayıcıları tipik olarak sistem tarafından oluşturulurken, kullanıcılar anahtarların ne olduğunu seçebilir.

  2. Anahtar-değer veritabanı modelindeki anahtar-değer çiftleri gruplanamazken, bir belge veritabanında, anahtar-değer çiftlerini ayrı belgeler halinde gruplayabiliriz; ayrıca, belge veri tabanlarının bazı biçimleri, bu belgeleri daha da gruplandırmamıza, yani "koleksiyonlar" veya "alanlar" olarak adlandırılanlara izin verir.

  3. Bir belge veritabanındaki belgeler, açıkça tanımlanmış (ve dolayısıyla DBMS tarafından çalıştırılabilir; örneğin indeksler oluşturmak için) dahili bir yapıya sahipken, aynı durum bir anahtar / değer çiftindeki değerler için geçerli değildir. Bu tür değerlerin herhangi bir olası dahili yapısının bir DBMS açısından opak olduğu veritabanı.

  4. Anahtar / değer modelinde, birden çok veritabanı girişine erişim (bu durumda anahtar / değer çiftleri) ayrı istekler gerektirir. Belge modelinde ise, birden çok veri tabanı girişi (bu durumda belgeler) tek bir talepte alınabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.