2008-12-22 89 views
2

我即將寫一個小工具來組織和標記我的mp3。輕量級商店機制

什麼是存儲少量數據的最佳方式。更重要的是,有沒有數據庫存在,我不需要安裝客戶端/服務器環境,我只是包括圖書館,我很好?

我可以使用XML,但恐怕文件大小會變得很大並且很難處理,更不用說保持內存佔用小了。

感謝

編輯:我還沒有決定的語言,我想使獨立於平臺的我的決定。如果我不得不選擇,最有可能的是.NET,第二個Java,第三個C++。

我的歉意,這是一個Windows應用程序。

+0

與XML的主要問題可能不會文件大小,但是XML並不適合搜索和隨機訪問(特別是在編寫時)。 – 2008-12-22 22:42:28

+0

在你說出你正在使用的操作系統和語言之前,沒有人可以回答這個問題。 – 2008-12-22 22:44:01

+0

因此,既然.NET和Java是你的兩個主要選擇,我認爲「輕量級」意味着大致「不希望服務器正在運行」而不是「每一個位都很重要!」。 – 2008-12-23 22:04:23

回答

2

你在說哪種語言/平臺?

在Java世界中,我更喜歡使用嵌入式數據庫,例如HSQLDBH2JavaDB(f.k.a.德比)。

他們不需要安裝,仍然提供您習慣於從「真正的」DBMS進行訪問的簡單訪問。

在C/Python/Unixy世界SQLite是該領域的熱門競爭者。

0

SQLITE如果你想關係數據庫的痛苦沒有服務器安裝或麻煩。

我會使用許多文本序列化格式之一。我個人認爲YAML 1.1是最強大的(對引用對象圖的內置支持)並且最容易被人讀取/修改(解析是一個熊,使用庫如PyYAMLJYamlsome .NET libaray)。

否則XML或JSON是足夠的文件格式。

無論您使用哪種格式,只要您關心磁盤使用情況就壓縮文件。如果你擔心內存使用情況,然後我怎麼沒看到你的序列化格式的問題...

0

你甚至可以使用XML,JSON,.ini文件...一個文本文件,甚至

2

另一種選擇是各種形式的Berkeley數據庫(例如,DB3,DB4,SleepyCat。)

1

看一看Prevayler的 - 這是一個序列化的持久性框架(使用XStream的等等,如果你想人閱讀你的數據),這真的很快,不需要註釋和「正常工作」。一些基本信息:

  • 它強加更嚴格的交易模式,因爲它不會給你自動回滾:
    • 確保交易能成功(與系統的當前狀態) - 例如它現在有意義嗎?
    • [交易被添加到隊列中]並被存儲(用於電源重置等)
    • 交易被執行並被應用到對象結構。
  • 寫入交易/秒
  • 讀取10萬的交易/秒

我沒有用它很多1000年代,但它的sooo好得多用於小項目(持續任何序列化的對象是太好)

哦 - 「?你運行的是什麼平臺」爲每一個說法,Prevayler(JAVA)有/有端口,相當多的平臺,但我不能找到一個體面的名單:(我記得有大約5-7,但是隻能記住.NET。

1

如果您打算在您的程序確實能夠在內存中存儲所有內容,那麼使用您編寫的基本load()和save()函數序列化文件將會很好,完整的數據庫。

在Java中,可以使用標準的序列化(或可以序列化XML和XML,使它有點人類可讀和可編輯)。

它不應該影響你的記憶足跡,因爲它只是保存和恢復你的對象。你不會得到交易和隨機訪問和查詢以及所有好東西。

0

我會建議一個類似於SQL的數據庫(如SQLLite)。今天你的需求可能會讓一個完整的SQL數據庫看起來很傻。但是你永遠不知道這個「小項目」多年來會增長多少。當它發展到必須擁有SQL引擎的地步時,你會很高興你不只是序列化一些Java對象或以JSON格式存儲東西。