วิธีจัดการฐานข้อมูลใน gem ที่มีไว้สำหรับเครื่องมือบรรทัดคำสั่งทั้งระบบ

ฉันกำลังพัฒนาอัญมณีที่ใช้โดยพื้นฐานเป็นเครื่องมือบรรทัดคำสั่งทั้งระบบ อัญมณีนี้เก็บข้อมูลที่จำเป็นสำหรับแอปไว้ในฐานข้อมูล ฉันสงสัยว่ามีวิธีการจัดการฐานข้อมูลที่เป็นมาตรฐาน defacto ในสถานการณ์นี้หรือไม่

จนถึงตอนนี้ ฉันกำลังคิดที่จะใช้ sqlite3 เพราะฉันไม่ต้องการให้ผู้ใช้ต้องผ่านกระบวนการที่ยุ่งยากเหล่านี้เพื่อติดตั้ง mysql หรือ postgress ทั่วทั้งระบบ (และใช่แล้ว ฉันกำลังใช้ฐานข้อมูลเชิงสัมพันธ์ และ sqlite ก็มากเกินพอในแง่ของประสิทธิภาพ ฯลฯ แอปของฉันเป็นเพียงแอปเล็กๆ ธรรมดาๆ เท่านั้น)

หากนี่คือการตัดสินใจที่ถูกต้อง คำถามก็คือฉันควรวางไฟล์ฐานข้อมูล sqlite3 ไว้ที่ใด แน่นอนว่าการวางสิ่งนี้ไว้ใต้ไดเร็กทอรี gem ไม่ใช่ความคิดที่ดี และจนถึงตอนนี้ฉันกำลังคิดที่จะหาตำแหน่งที่ /usr/local/MY_GEM/*

ขออภัย คำถามอาจฟังดูคลุมเครือเล็กน้อยสำหรับบางคน แต่ถ้าให้นิยามคำถามเดียว ก็คงจะเป็น "ฉันสบายดีไหม?" หรือ "พวกคุณมีความคิดที่ดีกว่านี้ไหม?"


person Ryo    schedule 18.02.2015    source แหล่งที่มา


คำตอบ (2)


ฐานข้อมูลมีความเฉพาะเจาะจงกับผู้ใช้อย่างสมบูรณ์หรือไม่? หรือเป็นข้อมูลคงที่ที่แอปของคุณต้องการ? หากเป็นผู้ใช้เฉพาะ ฉันจะใส่ไว้ใน ~/.my_gem.db หรือ ~/.my_gem/data.sqlite3 หรือคล้ายกัน

person Philip Hallstrom    schedule 18.02.2015
comment
เป็นผู้ใช้เฉพาะเจาะจง ไม่ได้คิดถึงเรื่องเครือข่ายและรวบรวมข้อมูล ฯลฯ และฉันไม่ได้คิดถึงเรื่อง ~/.my_gem และใช่แล้ว ฟังดูเหมือนเป็นความคิดที่ดี ขอบคุณ. - person Ryo; 19.02.2015

คำตอบของ @ Philip นั้นดีมาก แต่คุณอาจสนใจข้อกำหนด XDG Base Directory http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html ฉันเชื่อว่าสิ่งนี้มุ่งเป้าไปที่แอปพลิเคชันบนเดสก์ท็อป แต่มีข้อกำหนดเฉพาะสำหรับข้อมูลและการกำหนดค่าต่อผู้ใช้ ตลอดจนการกำหนดค่าทั้งระบบ แอปพลิเคชันระดับสูงเช่น Chrome และ Inkscape ดูเหมือนจะใช้ประโยชน์จากข้อกำหนดนี้

ข้อมูลจำเพาะขึ้นอยู่กับตัวแปรสภาพแวดล้อม แต่ผลลัพธ์ที่ได้จะเป็นดังนี้:

 ~/.config/mygem/myconfig.db
 ~/.local/share/mygem/mydata.db
person tribeca    schedule 19.02.2015
comment
โอ้ ดูดีมาก ฉันจะลองดู ขอบคุณสำหรับสิ่งนั้น - person Ryo; 19.02.2015