2008-12-22 44 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格式存储东西。