Cara menangani database dalam permata yang ditujukan untuk alat baris perintah seluruh sistem

Saya sedang mengembangkan permata yang pada dasarnya digunakan sebagai alat baris perintah seluruh sistem. Permata ini menyimpan data yang diperlukan untuk aplikasi dalam database. Saya bertanya-tanya apakah ada cara standar defacto untuk menangani database dalam situasi ini.

Sejauh ini, saya berpikir untuk menggunakan sqlite3 karena saya tidak ingin pengguna melalui proses yang sulit untuk menginstal mysql atau postgress di seluruh sistem. (dan ya, saya menggunakan database relasional dan sqlite lebih dari cukup dalam hal kinerja dll, aplikasi saya hanya aplikasi kecil yang sederhana)

Jika ini adalah keputusan yang tepat, pertanyaannya adalah di mana saya harus meletakkan file database sqlite3. Jelas menempatkan ini di bawah direktori permata bukanlah ide yang baik, dan sejauh ini saya berpikir untuk mencari lokasi di /usr/local/MY_GEM/*.

Maaf pertanyaannya mungkin terdengar agak kabur bagi sebagian orang, tetapi jika saya harus mendefinisikan satu pertanyaan, itu adalah "Apakah saya baik-baik saja?" atau "Kalian punya ide yang lebih baik?".


person Ryo    schedule 18.02.2015    source sumber


Jawaban (2)


Apakah database benar-benar spesifik untuk pengguna? Atau apakah itu data statis yang dibutuhkan aplikasi Anda? Jika itu khusus pengguna, saya akan memasukkannya ke ~/.my_gem.db atau ~/.my_gem/data.sqlite3 atau serupa.

person Philip Hallstrom    schedule 18.02.2015
comment
Ini khusus untuk pengguna, tidak memikirkan hal-hal jaringan dan mengumpulkan data, dll. Dan saya tidak memikirkan hal ~/.my_gem, dan sepertinya itu ide yang bagus. Terima kasih. - person Ryo; 19.02.2015

Jawaban @ Philip bagus tetapi Anda mungkin juga tertarik dengan Spesifikasi Direktori Dasar XDG http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html Saya yakin ini ditujukan untuk aplikasi desktop tetapi memberikan spesifikasi untuk data dan konfigurasi per pengguna serta konfigurasi seluruh sistem. Aplikasi profil tinggi seperti Chrome dan Inkscape tampaknya memanfaatkan spesifikasi ini.

Spesifikasinya didasarkan pada variabel lingkungan tetapi hasilnya kemungkinan besar seperti ini:

 ~/.config/mygem/myconfig.db
 ~/.local/share/mygem/mydata.db
person tribeca    schedule 19.02.2015
comment
oh kelihatannya bagus, aku akan memeriksanya. Terima kasih untuk itu. - person Ryo; 19.02.2015