我即将编写一个小工具来管理和标记我的mp3。
存储少量数据的最佳方法是什么。更重要的是,是否存在我不需要安装客户端/服务器环境的数据库,我只是包含库而且我很好?
我可以使用XML,但我担心文件大小会变得很大并且很难处理,更不用说保持内存占用空间小了。
由于
编辑:我还没有决定语言,我想让我的决定独立于平台。如果我不得不选择,很可能是.NET,第二个Java,第三个C ++。我很抱歉,这适用于Windows应用程序。
答案 0 :(得分:3)
在Windows上,您可以使用内置的esent数据库引擎。您可以在C ++中使用API
还有一个可以在C#代码中使用的托管互操作层:
答案 1 :(得分:2)
您在谈论哪种语言/平台?
在Java世界中,我更喜欢使用嵌入式数据库,例如HSQLDB,H2或JavaDB(f.k.a. Derby)。
他们不需要安装,仍然提供您从“真正的”DBMS中习惯的简单访问。
在C / Python / Unixy世界中,SQLite是该领域的热门竞争者。
答案 2 :(得分:2)
另一种选择是Berkeley数据库的各种形式(例如,db3,db4,SleepyCat。)
答案 3 :(得分:1)
看看Prevayler - 它是一个序列化持久性框架(如果你想人类阅读你的数据,请使用xstream等),这非常快,不需要注释和“只是工作”。一些基本信息:
我没有太多使用它,但它对于小项目来说太好了(坚持任何可序列化对象是如此美妙)
哦 - 至于每个人说“你在运行什么平台?”,Prevayler(java)有很多平台的端口,但我找不到一个像样的清单:(。我记得有大约5-7,但只能记住.NET。
答案 4 :(得分:1)
如果您计划在程序运行时将所有内容存储在内存中,那么使用您编写的基本load()和save()函数序列化到文件就可以了,并且比完整版更少痛苦在DB。
在Java中,可以使用标准序列化来完成(或者可以与XML串行化以使其具有人类可读性和可编辑性)。
它不应该影响你的内存占用,因为它只是保存和恢复你的对象。你不会得到交易和随机访问和查询以及所有好东西。
答案 5 :(得分:0)
SQLITE如果你想要没有服务器安装或麻烦的关系数据库的痛苦。
我会使用众多文本序列化格式之一。我个人认为YAML 1.1是最强大的(对参考对象图的内置支持)并且最容易被人阅读/修改(解析是熊,使用诸如PyYAML或{的库{3}}或JYaml)。
否则XML或JSON是适当的文件格式。
无论使用哪种格式,如果您担心磁盘使用情况,只需压缩文件即可。如果您担心内存使用情况,那么我不会看到您的序列化格式如何重要......
答案 6 :(得分:0)
你甚至可以使用xml,json,.ini文件......甚至是文本文件
答案 7 :(得分:0)
我会建议SQL之类的数据库(例如SQLLite)。今天你的要求可能会使一个完整的SQL数据库显得愚蠢。但你永远不知道这个“小项目”多年来会增长多少。当它确实增长到你必须拥有一个SQL引擎时,你会很高兴你不只是序列化一些Java对象或以JSON格式存储东西。