Saya sedang mengembangkan sistem kecil dengan dua komponen: satu jajak pendapat data dari sumber daya internet dan menerjemahkannya ke dalam data sql untuk bertahan secara lokal; yang kedua membaca data sql dari instance lokal dan menyajikannya melalui json dan api yang tenang.
Saya awalnya berencana untuk mempertahankan data dengan postgresql, tetapi karena aplikasi akan memiliki volume data yang sangat rendah untuk disimpan dan lalu lintas untuk dilayani, saya pikir itu berlebihan. Apakah SQLite siap bekerja? Saya suka ide tapak kecil dan tidak perlu lagi memelihara sql server untuk tugas yang satu ini, tetapi saya khawatir dengan concurrency.
Tampaknya dengan mengaktifkan logging ke depan, membaca dan menulis database SQLite secara bersamaan dapat terjadi tanpa mengunci salah satu proses dari database.
Bisakah satu contoh SQLite mempertahankan dua proses bersamaan mengaksesnya, jika hanya satu yang membaca dan yang lainnya menulis? Saya mulai menulis kode tetapi bertanya-tanya apakah ini salah penerapan SQLite.
Jawaban:
Anda mencari dokumentasi Penguncian File dan Konkurensi .
Proses SQLite menggunakan serangkaian kunci untuk menangani konkurensi; untuk membaca, beberapa proses dapat memperoleh
SHARED
kunci.Sebuah proses yang menulis, akan perlu untuk mendapatkan
RESERVED
kunci, dan hanya ketika benar-benar harus menyiram perubahan ke disk yang pindah kePENDING
negara. Setiap proses membaca kemudian harus membuka kunci file, setelah itu proses penulisan dapat pindah keEXCLUSIVE
untuk menulis ke file database yang sebenarnya.Karena proses penulis hanya perlu mengunci file database untuk penulisan aktual (memory flushes, commit), sebuah pengaturan dengan hanya satu pembaca dan hanya satu penulis akan tampil cukup baik. Saya berharap itu berfungsi dengan baik, jika tidak lebih baik, sebagai pengaturan dengan hanya satu proses melakukan semua membaca dan menulis.
SQLite kurang cocok ketika Anda memiliki beberapa proses yang sering menulis ke database yang sama, karena menulis memerlukan memperoleh
PENDING
kunci eksklusif untuk membuat serial perubahan.sumber
Hanya ingin menindaklanjuti dan memberi tahu semua orang bahwa penerapannya berhasil. Bekerja dengan SQLite benar-benar menyenangkan, dan dengan hanya satu proses menulisnya pada satu waktu kami tidak pernah mengalami masalah dengan penguncian ... bahkan dengan pembacaan berbarengan yang sangat cepat dari proses sekunder.
sumber