SORU
9 Temmuz 2011, CUMARTESİ


Nasıl iş için MongoDB işlemler eksikliği?

Burada benzer sorular var biliyorum ama eğer hareketleri ihtiyacım var eğer düzenli bir İLİŞKİSEL geri anahtar sistemleri veya atomic operations two-phase commit telling me onlar da. İkinci çözüm en iyi seçim gibi görünüyor. Bilmiyorum bu üçüncü pek çok şey yanlış gidebilir gibi görünüyor, çünkü takip etmek isteyen ve her açıdan test edemem. Zor zamanlar benim atomaltı işlemleri gerçekleştirmek için yeniden düzenleme yaşıyorum. Bu benim sınırlı bakış açısı (sadece SQL veritabanı ile bugüne kadar çalıştım) geliyor ya da gerçekten yapılabilir mi bilmiyorum.

Şirketimizde MongoDB test pilotu ediyoruz. Nispeten basit bir proje - SMS ağ geçidi seçtik. Bizim yazılım hücresel şebeke için SMS mesajları göndermek için izin verir ve ağ geçidi pis işleri yapar: aslında haberleşme protokolleri ile farklı. sağlayıcıları ile iletişim Ağ geçidi de mesajlarının fatura yönetir. Hizmet için başvuran her müşteri kredi almak için vardır. Sistem otomatik olarak bir mesaj Eğer bakiye yetersiz ise ve erişim gönderdi inkar edildiğinde dengesi azalır. Ayrıca üçüncü parti SMS sağlayıcılarının müşterilerine olduğumuz için, aynı zamanda onları kendi dengeleri var. Bu parça da devam etmeliyiz.

Eğer bir karmaşıklık (harici fatura, SMS gönderme kuyrukta) kesersem MongoDB ile gerekli verileri saklamak yapabileceğim hakkında düşünmeye başladım. SQL dünyaya gelen, kullanıcılar için ayrı bir tablo, SMS mesajları için bir tane, ve işlem kullanıcıları ile ilgili saklamak' denge için, bir oluşturmak istiyorum Hadi MongoDB olanların hepsi için ayrı koleksiyon oluşturmak demek.

Bu basitleştirilmiş sistem aşağıdaki adımları ile SMS göndermeyi bir görev düşünün

  1. eğer kullanıcı yeterli bakiye olup olmadığını kontrol edin; eğer yeterli kredi varsa oraya erişimi engellemek

  2. göndermek ve saklamak mesaj SMS koleksiyonu ile detayları ve maliyet (canlı sistem mesajı diye bir status öznitelik ve bir görev olacaktır pick up için teslimat ve set fiyat SMS göre bugünkü durum)

  3. gönderilen mesajın maliyet ile kullanıcıları dengesini azaltır

  4. işlem toplama işlem günlüğü

Şimdi bunda ne sorun var? MongoDB atom güncellemeleri tek bir belge var. Önceki akışında hata falan belirir ve mesaj veritabanında saklanan alır ancak kullanıcının denge güncelleştirilmiş olabilir ve/veya İşlem kaydedilir.

İki fikir geldi:

  • Kullanıcılar için tek bir koleksiyon oluşturmak ve alan, bir kullanıcı olarak denge deposu kullanıcının belgedeki alt belgeleri ile ilgili işlemler ve mesajlar. Belgeler atomik güncelleme yapabiliriz, çünkü aslında bu işlem sorunu çözer. Dezavantajları: kullanıcı birçok SMS mesajları gönderirse, belgenin boyutunu büyük hale gelebilir ve 4 MB belge sınırına olabilir. Belki bu senaryolarda tarihi belgeler oluşturabilirsiniz, ama bu iyi bir fikir olacağını sanmıyorum. Ayrıca sistem eğer aynı büyük belge için daha fazla ve daha fazla veri çekersem nasıl olacağını bilmiyorum.

  • Kullanıcılar ve işlemler için bir koleksiyon oluşturun. İşlemler iki tür vardır:kredi satın almakdengesini değiştirmek olumlu vemesajlar gönderdinegatif denge değişti. İşlem bir belgeyi; örneğin olabilirmesajlar gönderdiSMS ayrıntılarını hareket içinde gömülü olabilir. Dezavantajları: kullanıcı eğer mesaj devam ederse söyle bir mesaj göndermeye çalışır ya da değil, her zaman ve h kadar geçerli kullanıcı dengesi saklamak istemiyorum. Bu hesaplama girilmiş işlem sayısı arttıkça yavaş oldu maalesef.

Biraz hangisini seçeceğimi anlamadım. Başka çözümler var mı? Herhangi bir en iyi uygulamalar bu tür sorunları gidermek için nasıl online bulamadım. NoSQL dünyayı tanımak isteyen birçok programcı başında benzer sorunlar ile karşı karşıya sanırım.

CEVAP
14 EKİM 2013, PAZARTESİ


this, Tokutek bir göz atın. Sadece işlemler aynı zamanda performans artırma bir vaat Mongo için bir eklenti geliştirmek.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • makemebad35

    makemebad35

    17 NİSAN 2006
  • PlugResearch

    PlugResearch

    22 Mart 2006
  • UlyssesForever's channel

    UlyssesForev

    28 ŞUBAT 2012