Saya akan menggunakan API massal CouchDB, meskipun Anda telah menentukan bahwa Anda perlu mengirimkannya ke db satu per satu. Misalnya, dengan menerapkan antrian sederhana yang dikirim setiap 5 - 10 detik melalui panggilan dokumen massal akan sangat meningkatkan kinerja aplikasi Anda.
Jelas ada kekhasan di dalamnya dan Anda perlu mengetahui ID dokumen yang ingin Anda dapatkan dari DB. Tapi untuk PUT itu sempurna. (tidak sepenuhnya benar, Anda bisa mendapatkan rentang dokumen menggunakan operasi massal jika ID yang Anda gunakan untuk dokumen Anda dapat diurutkan dengan baik).
Dari pengalaman saya bekerja dengan CouchDB, saya punya firasat bahwa Anda berurusan dengan dokumen Transaksional untuk mengkompilasinya menjadi semacam hasil penjumlahan dan bertindak berdasarkan data tersebut (mungkin membuat dokumen transaksional berikutnya secara seri). Untuk itu Anda bisa mengandalkan CouchDB dengan menggunakan fungsi 'reduce' pada tampilan yang Anda buat. Dibutuhkan sedikit latihan agar fungsi pengurangan berfungsi dengan baik dan sangat bergantung pada apa yang sebenarnya ingin Anda capai dan data apa yang siap Anda keluarkan dari tampilan, jadi saya tidak bisa memberi Anda detail lebih lanjut tentang itu.
Jadi pada akhirnya logika aplikasi akan menjadi seperti ini:
get _design/someDesign/_view/yourReducedView
calculate new transaction
add transaction to queue
onTimeout
send all in transaction queue
Jika saya memahami bagian pertama mengapa Anda salah menggunakan dokumen transaksional, yang benar-benar berubah adalah bagian saat Anda mendapatkan dokumen transaksional tersebut dalam logika aplikasi saya.
Selain itu, sebelum menulis fungsi 'reduce' Anda sendiri, lihat yang sudah ada di dalamnya (mereka jauh lebih cepat daripada apa pun di luar mesin db yang dapat dilakukan)
http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API
EDIT: Sejak Anda memulai, saya sangat menyarankan untuk melihat Panduan Definitif CouchDB.
CATATAN UNTUK KEMUDIAN:
Ini adalah salah satu batu tersembunyi (mungkin bukan batu tersembunyi tetapi bukan hal yang jelas harus diwaspadai bagi pendatang baru). Saat Anda menulis fungsi pengurangan, pastikan fungsi tersebut tidak menghasilkan terlalu banyak keluaran untuk kueri tanpa batas. Ini akan sangat memperlambat keseluruhan tampilan bahkan ketika Anda memberikan pengurangan=false saat mengambil sesuatu darinya.
person
Dmitry Matveev
schedule
18.09.2014