SORU
15 Kasım 2010, PAZARTESİ


MongoDB yollarını veriler sürüm uygulamak için

Düşüncelerinizi nasıl pay veri uygulamak istiyorsunuz MongoDB sürüm içinde olabilir. (similar question regarding Cassandra sordum. Eğer herhangi bir isteğiniz varsa, db için daha iyi paylaşın lütfen)

Basit bir adres defteri kayıtları sürüme ihtiyacım olduğunu varsayalım. (Adres defteri kayıtları düz json nesneleri) olarak saklanır. Bu tarihi bekliyorum:

  • seyrek olarak kullanılacaktır
  • tek seferde bir "moda . makine" zamanında sunmak için kullanılacaktır
  • birkaç'den fazla sürümleri tek bir kayıt yüze olmayacak. tarih sona olmayacak.

Aşağıdaki yaklaşımlardan düşünüyorum:

  • Yeni nesne bir koleksiyon kayıtları için kayıt veya değişiklik geçmişini saklamak için oluşturun. Adresine başvuru sürüm başına bir nesne defteri girdisi mağaza. Bu kayıtları ister aşağıdaki gibi görünüyor

    {
     '_id': 'new id',
     'user': user_id,
     'timestamp': timestamp,
     'address_book_id': 'id of the address book record' 
     'old_record': {'first_name': 'Jon', 'last_name':'Doe' ...}
    }
    

    Bu yaklaşım, belge başına sürümleri bir dizi depolamak için değiştirilebilir. Ama bu herhangi bir avantajı olmadan daha yavaş bir yaklaşım gibi görünüyor.

  • Seri olarak saklamak sürümleri (JSON) adres defteri girişlerini eklenmiş nesne. MongoDB belgeler gibi nesneleri eklemek için nasıl emin değilim. Belki de bir dize dizisi gibi. (Modelled after Simple Document Versioning with CouchDB)

CEVAP
15 Kasım 2010, PAZARTESİ


Bunun için dalış yaparken ilk büyük soru< . em ^"nasıl kümeleri kaydetmek istiyor musunuz"?

  1. Farklar?
  2. Bütün kayıt kopyaları?

Benim kişisel yaklaşım farklar saklamak olacaktır. Bu farklar ekran gerçekten özel bir eylem olduğu için, farklı bir "" koleksiyonu. tarihi farklar koyardım

Farklı koleksiyon bellek alanından tasarruf etmek için kullanıyorum. Genellikle basit bir sorgu için tam bir tarih istemiyorum. Yani nesnenin dışında geçmişi tutarak aynı zamanda veri sorgulandığında sık erişilen bellek dışında tutabilirsiniz.

Hayatımı kolaylaştırmak için, bir tarihi bir belge Sözlük içerir zaman damgalı farklar olur. Şöyle bir şey:

{
    _id : "id of address book record",
    changes : { 
                1234567 : { "city" : "Omaha", "state" : "Nebraska" },
                1234568 : { "city" : "Kansas City", "state" : "Missouri" }
               }
}

Hayatımı çok daha kolay hale getirmek için, benim veri erişim için kullandığım bu benim DataObjects bir parçası olur (EntityWrapper, her neyse). Genellikle bu nesneler kolayca save() yöntem aynı zamanda bu değişikliği yapmak için geçersiz kılabilirsiniz, böylece tarih bir çeşit.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Friday Night Cranks

    Friday Night

    27 Mayıs 2007
  • HowToBasic

    HowToBasic

    8 Aralık 2011
  • ShoSho

    ShoSho

    20 Ocak 2010