nasıl hesaplanır CouchDB'nin belge için revizyon kimliğini nasıl hesapladığını anlamaya çalışıyorum. Buranın bu kod bit yoluyla hesaplanır o kaynaktan dikkat edin:CouchDB, Revizyon numarası
couch_util:md5(term_to_binary([Deleted, OldStart, OldRev, Body, Atts2]))
Ve ben hiçbir ekleri ile yeni bir boş belge oluşturursanız, CouchDB hep o 1-967a00dff5e02add41819138abb3284d gözden geçirilmesini sağladığını biliyor ki, içinde ondalık, < < 150,122,0,223,245,224,42,221,65,129,145,56,171,179,40,77 >>. Ben yazarsanız
Ancak erlang istemine aşağıdaki (silindi için sahte, 0 OldStart, OldRev için 0, boş bir gövde ve hiçbir ekleri):
erlang:md5(term_to_binary([false, 0, 0, [], []])).
Hep almak
<<26,196,244,40,211,149,193,185,214,6,230,61,54,138,62,132>>
geri.
Peki burada yanlış yapıyorum - nasıl kanepe üreten gerçek revizyon egzersiz yapabilirler?
Neden önleme amaçlı olarak _rev sayısını belirlemek gerekiyor? Herhangi bir yazma işleminden sonra oluşturulan sayıyı sunucudan yanıt olarak alırsınız. –
Bunun nedeni, couchdb ile farklı bir veri deposu senkronizasyonu yapmakla ilgiliyim, ve her iki tarafın düzgün bir şekilde senkronize edilmesi için revizyon kimliğini aynı şekilde hesaplamalıdır. – kybernetikos