2008-12-17 13 views
11

, bu RDBM tablosuna (Entity-attribute-value_model) sahip olduğumu varsayalım:Hbase şeması nasıl tasarlanır?

col1: entityID 
col2: attributeName 
col3: value 

ve ölçekleme sorunları nedeniyle HBase kullanmak istiyorum.

Hbase tablosuna erişmenin tek yolunun birincil anahtar (imleç) olduğunu biliyorum. Belirli bir anahtar için imleci alabilir ve satırları tek tek yineleyin.

Sorun şu ki, benim durumumda, 3 sütunun her birinde yinelemek istiyorum. örneğin:

  • için belirli bir entityID tüm değerlerini ve değerlerini almak istiyorum
  • için bir verimdosyasıName ve değer istiyorum ben tüm xxxx xzx sahip olduğum tek bir fikir, verileri (birincil Dizin olarak entityID ile tablo VERİ, tablo DATA) ve birincil anahtar olarak attributeName ve diğeri

    olan bir "2" dizin "tablosu oluşturacak bir Hbase tablosu oluşturmaktır. her dizin tablosu DATA tablosu için bir işaretçi listesi (entityIDs) tutacaktır.

    Makul bir yaklaşım mı? veya Hbase kavramlarının 'kötüye kullanımı' mıdır?

    Bu blogauthor'de:

    HBase, birincil anahtarıyla işlem yapılmasına izin verir ve aralıkları üzerinden tarama (düşün: imleç) verir. (Eğer hem ikincil hem de ikincil indekslere ihtiyaç duyarsanız, - kurtarmaya Lucene için endişelenmeyin! Ama bu başka bir mesajdır.) Xzx71

    Lucene'nin nasıl yardımcı olabileceğini biliyor musunuz?

    - Yonatan

  • cevap

    5

    İkincil endeksleri gerçekten Hbase birçok potansiyel uygulamalar için faydalı olacaktır ve ben geliştiriciler bakarak aslında olduğuna inanıyoruz. Ödeme http://www.mail-archive.com/[email protected]/msg04801.html. Başvurunuz veri depolama bir yıldız şema olarak modellenebilir eğer arada

    olsa da, sahip tavsiye ihtiyacı Eğer Hypertable ikincil indeks-türü için önerdiği çözüm ödeme isteyebilirsiniz http://markmail.org/message/rphm4q6cbar2ycgp

    0

    (http://en.wikipedia.org/wiki/Star_schema bakınız) iki farklı düz tablo: öznitelik + değerleri entityID verilen ve öznitelik verilen öznitelik + değerleri ararken bir tanesi.

    Tablo 1 şu şekilde görünecektir:

    entityID1 { 
        attribute1: value1; 
        attribute2: value2; 
        ... 
    } 
    

    ve Tablo 2:

    attribute1_value1 { 
        entityID1; 
    } 
    attribute2_value2 { 
        entityID1; 
    }