SORU
22 AĞUSTOS 2011, PAZARTESİ


MongoDB ASİT değil uyumlu olmak gerçekten ne anlama geliyor?

Bir veritabanı uzmanı değilim ve hiçbir resmi bilgisayar bilimi arka plan var, bu yüzden biraz sabredin. Tür bilmek istiyorumgerçek dünyaeğer ACID uyumlu olmayan MongoDB, kullanırsanız olabilir olumsuz şeyler. Bu herhangi bir ASİT uyumsuz veritabanı için geçerlidir.

MongoDB Atomic Operations, yapabilir, ama istemiyorlar anladığım kadarıyla "kilitleme ve karmaşık geleneksel işlem desteği", çoğunlukla performansı artırmak için. Ben de önemini anlar veritabanı işlemleri ve örnek zaman veritabanı için bir banka ve birkaç güncelleme kayıtları tüm ihtiyacınız olacak sync, istediğiniz işlem için geri dönmek için ilk durum olursa, bir elektrik kesintisi bu yüzden kredi eşittir satın alma, vb.

Ama MongoDB hakkında konuşmaları içine girdiğimde, veritabanları gerçekte nasıl uygulandığını teknik detayları bilmiyorum bizler gibi ifadeler atıp tutmaya başlar:

MongoDB şekilde MySQL ve PostgreSQL daha hızlı, ama küçük bir şans var, gibi 1 milyon, bu "doğru kurtaramaz".

"Kurtaramaz doğru" parçasıdır yönlendiren bu anlayış: Eğer bir elektrik kesintisi değil de anlık yazıyorsun MongoDB için bir şans için bir özel kayıt (izleme sayfa belge ile 10 öznitelikleri her biri), bu belgeler sadece kayıtlı 5 özniteliklerini demek ki zaman içinde kendi sayfa görüntüleme sayaçları olacağız "biraz". Asla ne kadar anlarsın, 99.999% doğru olacak bilirsin, ama 0 değil. Bu, özellikle, bu ettirmiş mongodb atomic operation operasyon atom olduğu garanti değil çünkü.

Benim sorum, MongoDB zaman doğru yorumu nedir "doğru" kaydedilsin mi? Ne parçaları ASİT, hangi şartlar altında ve ne kadar veri 0,001% kapalı olduğunu ne zaman biliyor musunuz, sizi tatmin ediyor mu? Bu şekilde düzeltilebilir mi? Bu bir rekor kurtarabilir çünkü MongoDB users tablo gibi mağaza şeyler yapmamalısın anlamına görünüyor. Ama sonra tekrar, 1/1,000,000 kullanıcı sadece gerekebilir "oturum açmayı yeniden deneyin", değil mi?

Ben sadece belki bir listenin ne zaman/neden olumsuz şeyler ile bir ASİT uyumsuz veritabanı MongoDB ve ideal varsa standart geçici (çalıştırmak gibi bir arka plan iş için temizleme, veri, ya da sadece kullanmak için bu SQL, vb.).

CEVAP
22 AĞUSTOS 2011, PAZARTESİ


MongoDB ile kaybedeceğin tek şey multi-koleksiyon (tablo) işlemleri. MongoDB atom değiştiriciler sadece tek bir belge karşı çalışabilir.

Eğer envanter bir öğeyi kaldırmak ve birinin sipariş eklemek için gerekiyorsa, aynı zamanda erkeklerin. Bu iki şey olmadığı sürece - stok ve siparişleri aynı belgede muhtemelen değil) var.

Çalışıyorum ve iki olası çözümleri mevcut bir uygulama bu çok sorunla karşılaştım:

1) belgeleri elinden geldiğince Yapısı ve elinizde tutmak için en iyi şekilde atom değiştiricileri kullanın ve bit, senkronizasyon dışında olabilir temizleme kayıtları için bir arka plan işlemi kullanın. Örneğin, envanter öğeleri kaldırmak ve aynı belge atom değiştiricileri kullanarak reservedİnventory bir dizi ekleyin.

Bu beni öğeleri stokta mevcut OLMAYAN bir müşteri tarafından ayrılmış olduğundan () her zaman haber verir. Müşteri onay çıktı, ben o zaman reservedİnventory öğeleri kaldırın. Bir standart işlem ve müşteri arabasını terk olabilir bu yana, bazı arka plan sürecinden geçmesi ve terk edilmiş arabaları bulup ayrılmış geri stok mevcut stok havuza taşımak için ihtiyacım var.

Bu ideal daha az belli ki, ama büyük bir uygulama burada sadece bir bölümü olan mongodb gerek mükemmel uymuyor. Ayrıca, bugüne kadar kusursuz bir şekilde çalışıyor. Bu çok senaryoları için mümkün olmayabilir, ama kullanıyorum belge yapısı nedeniyle, iyi uyuyor.

2) MongoDB ile birlikte işlem bir veritabanını Kullanmak. Ortak MySQL MongoDB (veya başka bir NoSQL) en iyi yaptığı şeyi yapmasına izin verirken, kesinlikle onların ihtiyacı olan şeyler için işlem sağlamak için kullanın.

Eğer #1 Benim çözüm uzun vadede işe yarıyor mu yoksa daha da MySQL MongoDB ile birleştirerek içine araştıracağım ama şimdilik #1 iyi benim ihtiyaçlarına uygun.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DragsterMC Gaming

    DragsterMC G

    30 HAZİRAN 2013
  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009