[英]Storing data with a stand-alone C++ application
我使用Apache,PHP和MySQL進行Web開發和本地應用程序。 在過去的幾年里,我慢慢學習C ++,並希望在今年夏天建立一個應用程序。 具體來說,我想創建一個“庫”應用程序,在其中我可以存儲有關我擁有的書籍,CD和記錄的信息。 我知道這種類型的應用程序存在,但我想學習C ++,這似乎是一個很好的方法來實現它。
以下是一些問題:
是否可以創建一個不需要數據庫來存儲數據的獨立應用程序?
如果上面#1的答案是“是”,那么對於可能需要管理大量數據的應用程序來說,這樣做是否是個好主意?
您建議將哪些數據存儲選項用於C ++應用程序?
謝謝!
更新嗯,有很多很好的答案。 這是一個很棒的網站,有這么多的貢獻者。 事實證明,我現在可能不需要去C ++路線。 than I want to pursue C++. 我現在意識到,我最感興趣的是寫作,可以作為一個“圖書館”的組織體系比我想追求C ++函數的應用程序。 感謝大家的回答!
是否可以創建一個不需要數據庫來存儲數據的獨立應用程序?
是的,您可以使用某種自定義文件格式來存儲數據。
如果上面#1的答案是“是”,那么對於可能需要管理大量數據的應用程序來說,這樣做是否是個好主意?
這不是一個好主意,除非你真的想學習在結構化文件中存儲數據。
您建議將哪些數據存儲選項用於C ++應用程序?
我會看看SQLite 。 它是一個數據庫,但它不需要單獨的引擎。
如果您不想使用數據庫,則可能需要將數據保存到文件(或多個文件)。 如果是這樣,問題可能是:哪種文件格式最好? 答案取決於各種因素:
1)訪問速度快,體積小,易於解析? 答案是“二進制數據”。 只需使用fwrite將數據直接寫入輸出文件即可。 有兩個缺點:文件不是人類可讀的,維護不同版本很麻煩。 如果您閱讀的數據並不完全符合您的預期,那么您很快就會遇到麻煩。
2)人性化,易於維護? 這就是XML的用途。 現在可以使用像tinyXML這樣的解析器,它們是將數據寫入文件的絕佳工具。 缺點是編寫加載/保存例程需要更多時間(很多情況下很多)。
3)為您完成工作的圖書館。 MFC提供了CArchive類,但還有其他可能更好的工具。
鑒於你(顯然)主要是為了自我教育,而不是真正的使用,在沒有數據庫管理器的情況下編寫代碼來處理存儲可能是有意義的。 自己編寫所有代碼(稍加注意)通常會導致稍高的速度,但需要花費相當多的額外工作並且通常會失去靈活性。 從學習的角度來看,最大的問題是你學到的很多東西只會在相當狹窄的情況下應用(也就是說,對於大多數典型的應用程序,你會想要使用數據庫管理器,所以學習做的事情很少有很多收獲)。
有點還取決於您的預期用途/觀眾。 如果你想一次支持多個用戶,事情幾乎立即變得更加困難(至少這樣做有效)。 如果您只對一個用戶能夠一次訪問數據庫感興趣,那么事情會變得更加簡單。
嗯...
當然,你可以做到這一點。
您正在談論的是回到RDBMS成功之前的時間段。 這並不難,但你可能會學到一些經驗教訓:
這應該做到這一點。
請注意,使用現代計算機硬件管理的數據量不太可能成為性能或空間問題,因此不必擔心節省幾個字節 - 這不值得麻煩。
祝你好運,享受騎行。
我也推薦SQLite 。
從他們的網頁:
“SQLite是一個實現自包含,無服務器,零配置,事務性SQL數據庫引擎的軟件庫.SQLite是世界上部署最廣泛的SQL數據庫引擎.SQLite的源代碼屬於公共領域。”
“認為SQLite不是Oracle的替代品,而是替代fopen()”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.