Try to use a single connection. Try to fetch data in a single query.
So try to strore all dependent fields in a document.
Beware! I made typos, always. This is a multilingual blog, contains Turkish and English posts. Here my homepage without typos : hasantayyar.net - Blog moved to medium.com/@htayyar. Old posts will remain here.
Monday, November 21, 2011
Friday, November 18, 2011
MongoDb : Delete from capped collections?
MongoDb'de harika bir özellik olan "Capped Collections"[1] stream benzeri yapılar için birebir.
Capped Collections belirlenen boyutların dışına çıkıldığında otomatik olarak FIFO mantığıyla maximum boyutu koruyor, eski kayıtları atıyor.
Ancak bir sorun var; capped collection içerisinde silme ve güncellemem yapamıyorsunuz (boyut sabit kalırsa güncelleme yapılabiliyor aslında).
Silmek için ben de boyutu sabit tutarak dokumanın "flag" adında bir değirini "1" den "0" a değiştiriyorum.
Ancak dikkat etmeniz gereken değerin integer olmaması. Çünkü integer değer değişimi dokumanın boyutunu değiştiriyor. Ancak string "1" ile "0" dokumanda herhangi bir boyut değişimine neden olmaz.
Php ile güncelleme yapıyorsanız (string) ile cast edin.Eğer konsoldan deniyorsanız da tırnaklara dikkat edin. Tırnak ile güncelleyin.
db.stream.update({"_id" : ObjectId("4ec62adfc469885f7e000026")},{$set : {flag: "1"}})
Capped collectionlarda silme özelliğinin gelecek versiyonlar olabileceğini düşünüyorum aslında. Issue listte kabul edilmiş bir madde var ve duruyor [2].
1. Capped Collections : http://www.mongodb.org/display/DOCS/Capped+Collections
2. Issue : https://jira.mongodb.org/browse/SERVER-751
Thursday, November 17, 2011
mongo statistics tool : mongostat
Şunu da not edeyim mongodb /bin dizininde "mongostat" aracını kullanarak anlık olarak mongo istatistiklerini takip edebilirsiniz.
Size şu değerleri verecektir.
insert - # of inserts per second (* means replicated op)
query - # of queries per second
update - # of updates per second
delete - # of deletes per second
getmore - # of get mores (cursor batch) per second
command - # of commands per second (on a slave, it's local|replicated)
flushes - # of fsync flushes per second
mapped - amount of data mmaped (total data size) megabytes
vsize - virtual size of process in megabytes
res - resident size of process in megabytes
faults - # of pages faults/sec (linux only)
locked - percent of time in global write lock
idx miss - percent of btree page misses (sampled)
qr | qw - queue lengths for clients waiting (read|write)
ar | aw - active clients (read|write)
netIn - network traffic in - bits
netOut - network traffic out - bits
conn - number of open connections
set - replica set name
repl - replication type
M - master
SEC - secondary
REC - recovering
UNK - unknown
SLV - slave
RTR - router
http://www.mongodb.org/display/DOCS/mongostat
Saturday, November 5, 2011
sphinx get's dirty
Sphinx özellike main+delta seklinde calismalarda bazen indexlemeyi durdurabiliyor. Sonra baktığınızda index data dosyalarınız yerine sonuna '.new ve '.tmp'' eklenmiş hallerini gorebilirsiniz.
Tekrar indekslediğinizde başarılı bitebilir ama buyuk ihtimal ./search e query atayamayacaksiniz atsanizda eski gelecek.
Burada konuyla ilgili bug girilmiş
http://sphinxsearch.com/bugs/view.php?id=302
Bu durumla sık karsılasir oldum, ve karsilastigim zaman once searchd'yi kapatiyorum.
./searchd --stop
/opt/sphinx/var/log/searchd.pid dosyasini siliyorum. Bu sizde baska bir yerde olabilir veya olmayabilir, zira searcd kapanınca bu da silinmeli.
Ardından '.new' ve '.tmp' dosyalarini silip searchd yi tekrar baslatiyorum. Hepsi bu ancak can sıkıcı.
Tekrar indekslediğinizde başarılı bitebilir ama buyuk ihtimal ./search e query atayamayacaksiniz atsanizda eski gelecek.
Burada konuyla ilgili bug girilmiş
http://sphinxsearch.com/bugs/view.php?id=302
Bu durumla sık karsılasir oldum, ve karsilastigim zaman once searchd'yi kapatiyorum.
./searchd --stop
/opt/sphinx/var/log/searchd.pid dosyasini siliyorum. Bu sizde baska bir yerde olabilir veya olmayabilir, zira searcd kapanınca bu da silinmeli.
Ardından '.new' ve '.tmp' dosyalarini silip searchd yi tekrar baslatiyorum. Hepsi bu ancak can sıkıcı.
Thursday, November 3, 2011
bazen olur 'pecl.php.net is using a unsupported protocol error'
mongo pecl eklentisi kurarken aldım bu hatayı
“pecl.php.net is using a unsupported protocol” .
“pecl.php.net is using a unsupported protocol” .
Aklıma ilk gelen pecl update-channels yapmak oldu ama işe yaramadı.
Fakat sonra biraz arayınca /usr/lib/php/.channels daki dosyaları silip tekrar pecl update-channels yapınca düzeldi.
Fakat sonra biraz arayınca /usr/lib/php/.channels daki dosyaları silip tekrar pecl update-channels yapınca düzeldi.
Subscribe to:
Posts (Atom)