ฉันใช้พวกเขาดังต่อไปนี้:
ข้อความธรรมดา
หากหมวดหมู่นั้นมีรูปแบบที่ซับซ้อนกว่าเล็กน้อยเช่น YAML หรือไฟล์คุณสมบัตินั่นเป็นตัวเลือกที่ดีที่สุดสำหรับทุกสิ่งที่คุณคาดหวังให้คนอ่านและแก้ไขด้วยมือ ข้อดีอีกอย่างคือความเรียบง่ายของการแก้ไขผ่านสคริปต์ขนาดเล็ก (เช่น sed)
ไม่มีอะไรเต้นความเรียบง่ายและใช้งานง่าย เมื่อทีมสนับสนุนต้องกำหนดค่าบางอย่างบนเครื่องระยะไกล (เช่นแก้ปัญหาของลูกค้า) หรือฝ่ายไอทีต้องกำหนดค่าเซิร์ฟเวอร์จำนวนมากที่ใช้งานซอฟต์แวร์ของคุณพวกเขาจะขอบคุณสำหรับการเลือกรูปแบบนี้ นอกจากนี้ยังช่วยให้คุณประหยัดจากการเขียนซอฟต์แวร์แบบครั้งเดียวที่ทำเพื่อพวกเขา
XML
ฉันเห็นด้วยกับ @Ingo ที่นี่ - ซึ่งแตกต่างจาก XML ข้อความธรรมดายากที่จะดำเนินการผ่านการเขียนสคริปต์และฝันร้ายที่จะแก้ไขด้วยมือ IMO
อย่างไรก็ตามหากคุณมีข้อมูลที่มีโครงสร้างที่ซับซ้อนซึ่ง YAML ไม่สามารถถอดรหัสได้และยังต้องการให้มนุษย์อ่านและแก้ไขได้ XML อาจเป็นตัวเลือกที่ดีที่สุด
ฐานข้อมูลเชิงสัมพันธ์
ทางเลือกที่ยอดเยี่ยมสำหรับเมื่อคุณมีข้อมูลจำนวนมาก (ซึ่งจะทำให้ข้อความธรรมดาและ XML ยุ่งยาก) ซึ่งคุณอาจต้องการอนุญาตให้บุคคลที่สามแก้ไขด้วยตนเองผ่านคำสั่ง SQL และ GUI
ข้อดีอีกอย่างคือรหัสของคุณที่จัดการเนื้อหานั้นสามารถอ่านได้มาก @ Richard-Harrison ให้รายการข้อดีอื่น ๆ ไว้ในคำตอบที่ยอดเยี่ยมของเขา
ฐานข้อมูล NoSQL
ข้อดีอย่างหนึ่งของ RDBMS ก็คือความสามารถในการขยายผ่านการกระจายซึ่งอาจไม่เกี่ยวข้องกับคำถามของคุณ ข้อดีที่น่าจะเกี่ยวข้องมากกว่านั้นก็คือความเรียบง่ายของที่เก็บคีย์ - ค่าและความยืดหยุ่นของ schemalessness (นี่คือคำหรือไม่) เมื่อคุณพบว่าตัวเองขัดขืนกระบวนทัศน์เชิงสัมพันธ์: เพียงเก็บ blobs ไปยังฐานข้อมูลเข้าถึงพวกมันด้วยกุญแจและประมวลผลพวกมันผ่านโค้ดจากนั้นพิจารณาตัวเลือกนี้ ตัวเลือกบางอย่าง (เช่น CouchDB) เป็นแบบพกพามีรอยขนาดเล็กและยังสามารถปรับขนาดได้เพื่อเสนอทางเลือกที่ไม่สัมพันธ์กับ MySQL และ SQLite
ไบนารี่
ข้อดีของไบนารีคือมันเร็วและกะทัดรัด เมื่อสิ่งเดียวที่ต้องอ่านและแก้ไขไฟล์ของคุณคือโปรแกรมและข้อมูลไม่เหมาะกับกระบวนทัศน์เชิงความสัมพันธ์หรือความเร็วเป็นสิ่งสำคัญจริง ๆ นี่อาจเป็นทางเลือกที่ดี อาจเป็นแบบที่ดีที่สุดสำหรับไฟล์สื่อ
ฉันควรชี้ให้เห็นว่าฉันยังไม่เคยเจอกรณีที่การเข้าถึงข้อมูลโปรแกรมอย่างง่ายไม่จำเป็นในบางจุดด้วยเหตุผลที่ไม่ได้รับการพิจารณาในระหว่างการออกแบบเริ่มต้น ทุกวันนี้ฉันไปที่ตัวเลือกฐานข้อมูลสำหรับสิ่งอื่น ๆ จากนั้นไฟล์ที่มีรูปแบบมาตรฐานและต้องมีการเข้ารหัส / ถอดรหัสโดยซอฟต์แวร์อื่น ๆ (เช่นเสียงวิดีโอ)
หมายเหตุ: มีความเข้าใจผิดว่าไบนารีนั้นทึบแสงและทำให้ปลอดภัยยิ่งขึ้น หากไม่มีการป้องกันเพิ่มเติมจะไม่มี - หากมีคนต้องการแฮ็คซอฟต์แวร์ของคุณเพียงแค่จัดเก็บการกำหนดค่าของคุณหรืออะไรก็ตามที่อยู่ในไบนารีจะไม่หยุดพวกเขา
บีบอัดไฟล์เก่า
ไม่ใช่ทางเลือกที่กล่าวมาข้างต้น แต่เป็นมาตรการเพิ่มเติม
ได้เปรียบเมื่อคุณต้องการส่งข้อมูลผ่านเครือข่ายหรือเมื่อคุณเก็บข้อมูลจำนวนมากและต้องการประหยัดพื้นที่ โปรดทราบว่าพื้นที่เก็บข้อมูลมักมีอยู่มากมายในวันนี้ดังนั้นให้พิจารณาแพลตฟอร์มเป้าหมายของคุณ
ดำเนินการอย่างรวดเร็วเกือบทุกอย่างในวันนี้ (กฎแห่งการกระทำของมัวร์ที่รัก) ดังนั้นเหตุผลเดียวที่จะไม่ใช้มันคือมันเพิ่มความซับซ้อนให้กับโค้ดของคุณ ไม่ซับซ้อนมากนัก แต่ก็ยังเป็นการละเมิดหลักการ KISS ยุ่งยากโดยเฉพาะอย่างยิ่งสำหรับไฟล์การกำหนดค่าที่จำเป็นต้องแก้ไขด้วยตนเองหรือผ่านการเขียนสคริปต์ - และถ้าคุณต้องการประหยัดพื้นที่ที่นั่นจริงๆคุณควรใช้ตัวเลือกฐานข้อมูล