我即将编写一个小实用程序来组织和标记我的 mp3。
存储少量数据的最佳方法是什么。更重要的是,是否存在不需要安装客户端/服务器环境的数据库,我只包含库就可以了吗?
我可以使用 XML,但我担心文件会变得很大且难以处理,更不用说保持较小的内存占用了。
谢谢
编辑:我还没有决定语言,我想让我的决定独立于平台。如果我必须选择,最有可能的是 .NET,第二个 Java,第三个 C++。
抱歉,这是针对 Windows 应用程序的。
我即将编写一个小实用程序来组织和标记我的 mp3。
存储少量数据的最佳方法是什么。更重要的是,是否存在不需要安装客户端/服务器环境的数据库,我只包含库就可以了吗?
我可以使用 XML,但我担心文件会变得很大且难以处理,更不用说保持较小的内存占用了。
谢谢
编辑:我还没有决定语言,我想让我的决定独立于平台。如果我必须选择,最有可能的是 .NET,第二个 Java,第三个 C++。
抱歉,这是针对 Windows 应用程序的。
在 Windows 上,您可以使用内置的 esent 数据库引擎。有一个可以从 C++ 使用的 API
还有一个托管互操作层,您可以从 C# 代码中使用它:
另一种选择是各种形式的伯克利数据库(例如,db3、db4、SleepyCat。)
SQLITE如果您想在没有服务器安装或麻烦的情况下享受关系数据库的痛苦。
我会使用许多文本序列化格式中的一种。我个人认为YAML 1.1是最强大的(对引用对象图的内置支持)并且最容易被人类阅读/修改(解析是熊,使用诸如PyYAML或JYaml或一些 .NET libaray之类的库)。
否则 XML 或 JSON 是足够的文件格式。
无论您使用哪种格式,如果您担心磁盘使用情况,只需压缩文件即可。如果您担心内存使用情况,那么我看不出您的序列化格式有多重要......
看看Prevayler - 它是一个序列化持久性框架(如果您想人工读取数据,请使用 xstream 等),它非常快,不需要注释并且“正常工作”。一些基本信息:
我没怎么用过,但是用在小项目上要好得多(持久化任何可序列化的对象都很好)
哦 - 至于每个人说“你在什么平台上运行?”,Prevayler(java)有/有很多平台的端口,但我找不到一个像样的列表:(。我记得大约有 5- 7,但只能记住.NET。
如果您计划在程序运行时将所有内容存储在内存中,那么使用您编写的基本 load() 和 save() 函数将其序列化到文件会很好,并且比完整的 DB 更少痛苦。
在 Java 中,可以使用标准序列化来完成(或者可以序列化到 XML 或从 XML 序列化以使其在某种程度上具有人类可读性和可编辑性)。
它根本不应该影响您的内存占用,因为它只是保存和恢复您的对象。你只是不会得到交易、随机访问和查询以及所有这些好东西。
你甚至可以使用 xml、json、.ini 文件……甚至是文本文件
我建议使用类似 SQL 的数据库(例如 SQLLite)。今天,您的要求可能会使完整的 SQL 数据库看起来很愚蠢。但你永远不知道这个“小项目”多年来会增长多少。当它确实发展到您必须拥有 SQL 引擎时,您会很高兴您不只是序列化一些 Java 对象或以 JSON 格式存储内容。