benchANT compares MongoDB and ScyllaDB architectures, with a focus on what the differences mean for performance and scalability Bir NoSQL veritabanı seçerken, seçenekler aşırı olabilir. En popüler seçeneklerden biri, kullanımı kolay olduğu için bilinen MongoDB'dir. Rapor, her iki veritabanına daha yakından bir teknik bakış açısı sunar - onların mimarilerini bağımsız, teknik bir açıdan karşılaştırır. benchant MongoDB ve ScyllaDB hem yüksek kullanılabilirlik, performans ve genişletilebilir bir mimari vaat ediyor. Ama bu hedeflere ulaşmanın yolları, ilk bakışta düşündüğünüzden çok daha farklı. Örneğin, bir deneyim raporu, ScyllaDB'nin dağıtılmış mimarisi sayesinde AWS EC2 spot örneğinde nasıl kolayca çalışabileceğini gösteriyor, MongoDB'nin dağıtılmış mimarisi ise bunu çok zor bir görev yapıyor. Bu farklılıkları vurgulamak için, iç depolama mimarisi ve dağıtılmış mimariler hakkında derinlemesine bir tartışma sunuyoruz, bu da yüksek kullanılabilirlik ve horizontal ölçeklenebilirlik sağlar. Ayrıca, bu farklılıkların etkisini ölçen bir benchmark yayınladık. Note: DynamoDB vs MongoDB Benchmark Özetini Oku Bu karşılaştırma raporunu indirin Read the DynamoDB vs MongoDB Benchmark Summary DynamoDB vs MongoDB Benchmark Özetini Oku Download this Comparison Report Bu karşılaştırma raporunu indirin MongoDB vs ScyllaDB'nin depolama mimarisi hakkında bir performans görüşü Her iki veritabanı da C++'da uygulanır ve XFS dosya sistemini kullanmanızı önerir. , ScyllaDB terminolojisinde Commit Log ve MongoDB terminolojisinde Oplog. yazma öncesi-logging ile, tüm işlemler işlemi gerçekleştirmeden önce bir log tablosuna yazılır. yazma öncesi-log, verileri diğer düğümlere kopyalamak için bir kaynaktır ve başarısızlık durumunda verileri kurtarmak için kullanılır, çünkü verileri kurtarmak için işlemleri yeniden oynatmak mümkündür. Önceki YazıSonraki YazıSonraki Yazı MongoDB, varsayılan depolama motoru olarak verileri depolamak ve bulmak için bir B+-Tree indeksini (Wired Tiger) kullanır. B+-Tree indeksleri, verileri sıralı bir şekilde depolayan dengeli ağaç veritabanlarıdır. MongoDB, bir koleksiyonda bileşik indeksleri, metin indeksleri ve coğrafi endeksleri de dahil olmak üzere çeşitli endeksleri desteklemektedir. Array unsurlarının ve yerleştirilmiş alanların endekslenmesi, karmaşık veri yapıları üzerinde verileri verimli bir şekilde sorgulamaya olanak sağlar. Ayrıca, MongoDB'nin kurumsal sürümü, düşük gecikme iş yükleri için bir bellek depolama motoru desteklemektedir. ScyllaDB, ilgili bellek (RAM) ve kalıcı depolama (NVMe SSD gibi) ile birlikte belirli bir CPU'ya bir node toplam verilerinin bir parçası atarak verileri parçalara ayırır. ScyllaDB'nin iç depolama motoru, diskte kalıcı komut logunu, zamanla disk'ya dökülen bellek tabanlı hatırlatıcılarla birlikte uygulayarak yazma-öğrenme-logging kavramını takip eder. ScyllaDB, bir node başına hem de bir kümede yerel, ikincil ve kompozit endeksleri destekler. Birincil endeks, hashed anahtarın ve ilgili bölünmenin depolandığı bir hashing yüzüğünden oluşur. Ve bölünmenin içinde, ScyllaDB, ikinci anahtarın ve sağ anahtarın ardından ikinci anahtarın Bu farklı depolama mimarileri, çalışma yükünü ele almak için mevcut donanımın farklı bir kullanımı ile sonuçlanır. MongoDB, mevcut CPU çekirdeklerine iç çekirdekleri bağlamaz, ancak dağıtılmış çekirdeklere bağımsız bir yaklaşım uygular. CPU mimarileri, bu, özellikle büyük sunucular için performans bozulmasına neden olabilir, çünkü iplikler farklı bellek düğmeleri olan farklı soketlerde dinamik olarak çekirdeklere atıfta bulunabilir. Bu sayede sorumluluğu taşıyan iplikleri belirli çekirdeklere bağlar ve farklı çekirdekler ve bellek alanları arasında geçiş yapmaktan kaçınır. sonuç olarak, parçacık anahtarı, parçacıklar arasındaki eşit veri dağılımını sağlamak ve sıcak parçacıkların önlenmesini sağlamak için dikkatle seçilmelidir. Bu, gecikme duyarlı ve duyarlı olmayan sorgular için yerleşik öncelikli sınıflar sağlar ve disk performansını en üst düzeye çıkarmak için tek bir düzeyde parçalar arasında koordine edilmiş I/O programlaması sağlar. Son olarak, ScyllaDB'nin yükleme senkronları, mevcut kaynaklara dayanan optimum veri tabanı yapılandırmasını uygulayarak performans otomatik ayarlama aşaması ile birlikte gelir. Numara tabanlı Shard Per Core Yöntemleri I/O Programı ScyllaDB, kullanıcının verilerin DB cache'de kalması veya nadiren erişilemeyen bölümler için bunları kaçırması gerektiğini kontrol etmesine izin verir. ScyllaDB, istemciye verileri sahip olan düğmeye ve CPU çekirdeğine (shard) erişmesine izin verir. Bu, daha düşük gecikme, tutarlı performans ve mükemmel yük dengesi sağlar. ScyllaDB ayrıca belirli, kritik iş yükleri için daha düşük gecikme garanti etmek için kullanıcının farklı iş yükleri için farklı SLA'ları sağlayan "iş yükü öncelikleştirme" sağlar. MongoDB dağıtılmış mimarisi – Yüksek kullanılabilirlik ve ölçeklenebilirlik için iki çalışma modu MongoDB veritabanı mimarisi, aşağıdaki bölümlerde açıklanan iki kümelenme modunu sunar: bir replika kümesi yüksek kullanılabilirliği hedeflerken, bölünmüş bir kümelenme, yatay ölçeklenebilirlik ve yüksek kullanılabilirlik hedefler. Replica Set Cluster: Sınırlı ölçeklenebilirlikle Yüksek Kullanılabilirlik MongoDB replik setleri kavramı ile yüksek kullanılabilirlik sağlar. MongoDB replik setleri, yalnızca ana yazma işlemlerini ele alırken, Primary-Secondary düğmeleri kavramını takip eder. İkinci düğmeler verilerin bir kopyasını tutar ve READ işlemlerini yalnızca işlemek için etkinleştirilebilir. Ortak bir replik set dağıtımı iki ikincilden oluşur, ancak kullanılabilirliği artırmak veya okuma ağır iş yüklerini ölçmek için ek ikincil düğmeleri eklenebilir. MongoDB, bir replik setinde 50'e kadar ikincil düğmeleri destekler. İkinci düğmeleri önceki birincilde bir başarısızlık durumunda birincil olarak seçilecektir. Coğrafi dağıtım açısından, MongoDB, veri merkezi başarısızlıkları durumunda yüksek kullanılabilirlik sağlamak için replika setleri için coğrafi dağıtımları destekler.Bu bağlamda, ikincil varsayımlar, aşağıdaki resimde gösterildiği gibi, birden fazla veri merkezi arasında dağıtılabilir.Ayrıca, sınırlı kaynaklar veya ağ kısıtlamaları olan ikincil varsayımlar, başarısızlık durumunda seçilebilirliklerini birincil olarak kontrol etmek için bir öncelik ile yapılandırılabilir. Sharded Cluster: Horizontal ölçeklenebilirlik ve operasyonel karmaşıklık ile yüksek kullanılabilirlik MongoDB, yazma yoğun çalışma yüklerini ve büyüyen veri boyutlarını karşılamak için birden fazla birincil örneğin verileri bölünerek yatay ölçeklendirmeyi destekler. Bölünmüş bir kümede, birincil ve çok sayıda ikincilden oluşan her bir replika setinin bir bölünme olduğunu gösterir. Sharding'i etkinleştirmek için, ek MongoDB düğme türleri gereklidir: Bir mongos örneği bir sorgu yönlendiricisi olarak hareket eder ve müşteri uygulamaları ile bölünmüş kümeler arasında bir arayüz sağlar. Sonuç olarak, müşteri hiçbir zaman bölünmelerle doğrudan iletişim kurmaz, ancak her zaman sorgu yönlendiricisi aracılığıyla iletişim kurar. sorgu yönlendiricileri özel kaynaklarda veya müşteri uygulamaları ile birlikte çalıştırılabilecek devletsiz ve hafif bileşenlerdir. Soruşturma Routerleri (Mongos) Sorgu yönlendiricilerinin müşteri sürücüleri için doğrudan arayüzüdür. Sorgu yönlendiricilerinin sayısına sınır yoktur, ancak sık sık config sunucuları ile iletişim kurdukları için, çok fazla sorgu yönlendiricinin config sunucularını aşırı yükleyebileceği belirtilmelidir. Config sunucuları, tüm verilerin ve bileşenlerin durumunu ve organizasyonunu da dahil olmak üzere, bir bölünmüş kümenin metadata depolamaktadır. Metadata, her bölünme üzerinde bulunan parçaların listesini ve parçaları tanımlayan aralıkları içerir. MongoDB'de veriler toplama düzeyinde parçalanır ve bir koleksiyon bir parçalanma anahtarı temelinde parçalanabilir. MongoDB, hangi belgelerin hangi parçalanmaya ait olduğunu belirlemek için bir parçalanma anahtarını kullanır. Yaygın parçalanma anahtar seçenekleri _id alanı ve yüksek kardinaliteye sahip bir alan, örneğin bir zaman çubuğu veya kullanıcı kimliği içerir. MongoDB, üç parçalanma stratejisini destekler: aralığa dayalı, hash tabanlı ve bölge tabanlı. Shard anahtar değerine göre bölünmüş bölünmüş belgeler, bölünmüş bölünmüş belgelerdir. Bu, bölünmüş anahtar değerleri olan belgeleri birbirine yakın tutar ve aralıksal sorgular için iyi çalışır, örneğin zaman serisi verilerinde. Hashed sharding, bölünmüş bölünmüş belgelerin yazma iş yüklerini tercih eden eşit bir dağılımını sağlar. Bölünmüş bölünmüş bölünmüş belgeler, geliştiricilerin en ilgili verilerin uygulama sunucularına coğrafi açıdan en yakın bölünmüş belgelerde bulunmasını sağlamak için, örneğin, özelleştirilmiş bölünmüş belgeler kurallarını tanımlamalarını sağlar. Ayrıca, aşağıdaki resimde gösterildiği gibi, veri merkezi başarısızlıklarını aşmak için bölünmüş kümeler, coğrafi olarak dağıtılmış bir yapılandırmada kullanılabilir. ScyllaDB mimarisi - yüksek kullanılabilirlik ve yatay ölçeklenebilirlik için çok öncelikli MongoDB’den farklı olarak, ScyllaDB, klasik RDBMS mimarilerini birincil düğüm ve çok sayıda ikincil düğümle takip etmez, ancak tüm verilerin birden çok düğüm oluşturan bir kümeden sistematik olarak dağıtıldığı ve çoğaltıldığı bir merkezlenmiş yapıyı kullanır. Bir grup, verilerin dağıtıldığı sanal bir yüzük mimarisi olarak örgütlenmiş birbirine bağlanan düğümlerin bir koleksiyonudur. Yüzük, fiziksel bir düğmeye atanan bir dizi token temsil eden ve anahtar alanı için ayarlanan replika faktörüne göre fiziksel düğümlerde tekrarlanan vNodes'lere bölünür. Tüm düğümler eşit olarak, çok öncelikli bir anlamda kabul edilir. Belirlenen bir lider olmadan, kümenin tek bir başarısızlık noktası yoktur. Düğümler, daha büyük bir fiziksel sunucu üzerinde bir donanım alt kümesinden oluşan bireysel yerel sunucular veya sanal bulut örneği olabilir. Her düğümde veriler daha da bölünür. Ayrıntılar, çoğunlukla bağımsız olarak çalışan birimler olarak çalışırlar, " Tüm bağlantılar birbirleriyle iletişim kurarak Bu protokol hangi bölüme hangi veriler yazıldığına karar verir ve indeksleri kullanarak doğru bölüme ait veri kayıtlarını arar. Gossip Protokolü ScyllaDB'nin arka planı, çok sayıda sunucu ve bölge üzerinde kolay yatay bölünme için tasarlanmıştır. ScyllaDB'de bölünme, tablo seviyesinde yapılır ve bir tablo bölünme anahtarına göre bölünebilir. Bölünme anahtarı tek bir sütun veya çoklu sütunlardan oluşan bir bileşen olabilir. ScyllaDB ayrıca, satırların bölünme anahtarı değer aralığına göre bölünme üzerine dağıtıldığı ve verileri eşit şekilde dağıtmak ve sıcak noktalardan kaçınmak için hash tabanlı bölünmeyi de destekler. Buna ek olarak, ScyllaDB, verilerin daha yüksek erişilebilirlik ve daha düşük gecikmeler için birden fazla veri merkezinde tekrarlanmasına izin verir.In this multi-data-center or multi-region setting, the data between data centres is asynchronously replicated. Müşteri tarafında, uygulamalar birden fazla veri merkezi dağıtımını bilebilir veya bilmez olabilir ve uygulama geliştiricisi, birden fazla veri merkezi kurulumunda yük dengelemesi, belirli bir veri merkezi veya tüm veri merkezi üzerindeki sorguların yürütüldüğünü belirleyen okuma ve yazma tutarlılık seçenekleri aracılığıyla yapılandırılabilir. MongoDB ve ScyllaDB'nin dağıtılmış mimarisi hakkında karşılaştırmalı ölçeklenebilirlik görüşü Ölçülebilirlik söz konusu olduğunda, ScyllaDB ve MongoDB'nin önemli ölçüde farklı dağıtım yaklaşımları dikkate alınmalıdır, özellikle de yerel veya IaaS üzerinde çalışan kendi kendine yönetilen kümeler için. Bununla birlikte, önemli yazma oranı olan çalışma yüklerini genişletmek için, replika setleri parçalanmış bir replika setine dönüştürülmelidir ve bu birkaç zorlukla birlikte gelir. Birincisi, iki ek MongoDB hizmetleri gereklidir: n sorgulama yönlendiricileri (mongos) ve yüksek kullanılabilirlik sağlamak için bir replika sunucu setidir. Sonuç olarak, ilk olarak parçalanmayı etkinleştirmek için önemli ölçüde daha fazla kaynak gereklidir. Buna ek olarak, operasyonel karmaşıklık açıkça artar. Örneğin, üç parçalı parçalı bir kümelenme üç mongos örneğinin bir replika setini, üç konfig sunucusunun bir replika setini ve üç parçayı gerektirir – her bir parçadan birincisi birincil ve en az iki ikincil. İkinci zorluk, bölünmüş kümede verilerin bölünmesidir. Burada, MongoDB, bölünmüş kümede verilerin yeniden dağıtılmasını otomatik olarak tetikleyen sürekli çalışan bir arka plan görevini uygular. Bölünme, yeni bir bölünme eklendiğinde değil, belirli iç praglara ulaştığında gerçekleşir. Sonuç olarak, bölünmelerin sayısını arttırmak hemen bölünmeyi boyutlandırır, ancak gecikmiş bir ölçeklendirme etkisine sahip olabilir. MongoDB Sürüm 5.0'e kadar, MongoDB mühendisleri kendileri bölünmeyi değil, mümkünse daha büyük makinelerle dikey olarak ölçeklendirmeyi önerirler. ScyllaDB'nin çok öncelikli mimarisi sayesinde bir ScyllaDB kümesinin boyutlandırılması kullanıcı için oldukça kolay ve şeffafdır. Burada her düğüm eşittir ve kümenin yüzlerce düğümle boyutlandırılması için herhangi bir ek hizmet gerekmez. Buna ek olarak, yeni bir düğüm eklendiğinde veri bölünmesi tetiklenir. Bu bağlamda, ScyllaDB, MongoDB'ye kıyasla net avantajlar sunar. Birincisi, tutarlı hashing yaklaşımı sayesinde, veriler bütün düğümle bölünmeye gerek yoktur, sadece bir alt düğümler arasında. İkincisi, bölünme, büyüme eyleminin zamanlamasını kolaylaştıran yeni bir düğüm eklemekle başlar. Ana ölçeklenebilirlik farklılıkları aşağıdaki tabloda özetlenir: Sonuç ve Outlook İki bölümü karşılaştırdığınızda Her zaman bazı paraleller keşfedeceksiniz, ama aynı zamanda çok sayıda önemli farklılık. . Her iki veritabanı da benzer kullanım durumlarını ele alır ve benzer bir ürün ve topluluk stratejisine sahiptir. Ama teknik tarafta, farklı yaklaşımları ve odakları görebilirsiniz. Her iki veritabanı da dağıtılmış bir mimari aracılığıyla yüksek kullanılabilirlik sağlamak için inşa edilmiştir. Ama hedef çalışma yüklerine gelince, MongoDB, tek düzeyde veya küçük ve orta düzeyde çalışma yüklerine uygun tek düğme veya replika set dağıtımları ile kolayca başlamanızı sağlarken, büyük çalışma yüklerini ve veri setlerini ele almak teknik mimari nedeniyle bir zorluk haline gelir. Nükleer ScyllaDB vs MongoDB Hakkında ScyllaDB, kolay ve yüksek ölçeklenebilirlik, yüksek geçiş, düşük ve istikrarlı gecikme, ve bir çok veri merkezi dağıtımında her şeyi gerektiren performans kritik çalışma yüklerini açıkça ele alır. Ve ilgili performans yeteneklerine daha fazla bilgi vermek için, MongoDB Atlas ve ScyllaDB Cloud için performans, ölçeklenebilirlik ve maliyetleri araştıran ayrı bir benchmark raporunda şeffaf ve tekrarlanabilir bir performans karşılaştırması sunuyoruz. Ekstra ScyllaDB vs. MongoDB Karşılaştırma Detayları Tamamını gör Bu teknik karşılaştırmanın genişletilmiş bir versiyonu için, karşılaştırma ayrıntıları da dahil olmak üzere: BenchANT MongoDB vs ScyllaDB karşılaştırması Bilgi Modeli dil istiyor Kullanım Örnekleri ve Müşteri Örnekleri Veri tutarlılığı seçenekleri İlk el iş tecrübesi