node.js ve mongodb kullanarak yeni bir proje başlattım ve yaklaşık 2 gün sonra MongoDB'de yaklaşık 600 bin nesne topladım. Performans üzerinde çok büyük (olumsuz) bir etki farkettim ve eğer bir başka DB'ye olabildiğince geçmem gerekirse veya Mongo'yla devam edip bazı (daha fazla) optimizasyon yapsam endişelenmeye başlıyorum. BöyleMongoDB, 600k nesnelere alternatif DB uygular mı? optimizasyonlar?
Temelde ben depolamak ediyorum koordinatları:
[x1] => 687
[y1] => 167
[x2] => 686
[y2] => 167
[c] => 0
[s] => 0
[m] => 1299430700312
[_id] => MongoId Object (
[$id] => 4d73bd2c82bb5926780001ec
)
değil daha ... ve benim sorguları şuna benzer: Ben her biri için endeksini ayarlama denedim
{'$or': [ { x1: {'$gte' : 0, '$lt' : 1000 }, y1: {'$gte' : 0, '$lt' : 1000 } , { x2: {'$gte' : 0, '$lt' : 1000 }, y2: {'$gte' : 0, '$lt' : 1000 } } ] }
alanları: x1, y1, y1, y1 yanı sıra: {x1:1,y1:1},{x2:1,y2:1}
. Ayrıca, yalnızca gerekli olan alanları da getirdim ... ama yine de, ~ 40k satırlık bir sonuç kümesiyle bir sorgulama yapmak, 2-8 sn'lik bir çalışma zamanında sona eriyor. Btw: PHP'de aynı sorguyu gerçekleştirirken Bellek Dışı Mesajıyla (256MB RAM) öldü.) Gerçekten fikirlerin tükeniyor
;
makine, bu rafa en tozlu bir tane değil 8 GB RAM ile 2.67GHz @ bir Intel (R) Core (TM) i7 CPU 920 olduğunu ve önümüzdeki haftalar için milyonlarca ve milyonlarca satırın geldiğini görüyorum. Muhtemelen fark ettiğiniz gibi sıralar nispeten küçüktür. Bölümleme ile MySQL daha iyi performans gösterir mi? Başka bir NoSQL DB?
Ve "2-8secs yavaş değil" hakkında trolling lütfen - bu zaten bir sorun haline geliyor. Birkaç önbelleğe alınmış istek aynı anda makineye çarptığında, yük 4'e ve 10'dan az kullanıcıya erişir.
Hangi dizinlerde kurulum var? Sorgunuzu kabukta çalıştırmayı deneyin ve sonunda sorgu planını ve hangi dizinlerin vurulduğunu göstermesi için .explain() öğesini ekleyin. –
Bu sorgu ile neyi başarmaya çalıştığınızdan emin değilim ama jeo-uzamsal indeksleri kullanarak daha iyi şansınız olabilir. http://www.mongodb.org/display/DOCS/Geospatial+Indexing –
Bu koordinatların göründüğü gibi dikdörtgenlerin köşeleri olduğunu varsayalım, MongoDB'nin jeo-uzamsal dizinlerini kullanmalısınız: http://www.mongodb.org/ display/DOCS/Geospatial + Indexing –