Sqlite数据库在基于Linux 的Media NAS系统中的应用
http://tech.ddvip.com 2007年10月26日 社区交流
内容摘要:本文阐述在一个基于 Linux 的 Media NAS 系统中,如何使用了 Sqlite 数据库作为 NAS 系统中 Media 数据的存储数据库,来完成 Media 文件的共享,从而能使 Digital Media Player 播放设备通过 UPnP AV Server 服务对NAS 上的 Media 文件进行播放。
3、在需要一次得到某种媒体类型的记录的全部条数的地方,需要进行优化,可以使用类似下面的语句:
select count(*) from AudioTable;
它会直接返回全部的 audio 类型的记录的总条数。这样查询的速度,和对系统资源的占用率会有较大改善。
4、在对 audio 的流派,专辑,歌唱者进行查询时,需要使用类似如下的命令:select artist from AudioTabel group by artist order by artist;
这样得到的记录内容就是经过排序了的 artist 类型。
5、数据的动态改变
在应用中,将涉及到需要在系统运行期间动态扫描新添加的媒体,这个时候就需要将已有的数据库文件拷贝一份,并将新添加的媒体文件使用拷贝后新的数据库做为扫描时使用的数据库文件。扫描完成后,再将旧的数据库文件用新的文件替换,从而保证在系统运行期间,旧的数据依然是能被访问到的。在这个过程中,需要对数据库进行同步,使用 sem_t 即可,涉及到的操作函数包括 sem_init,sem_destroy,sem_wait,sem_post。在需要对数据库进行替换前,使用 sem_wait,替换后使用 sem_post 进行释放。从而可以防止多个线程对数据库的操作所引起的错误。
Sqlite 与应用的结合
Sqlite 的特点决定了它与应用结合时将会是非常便捷的。作为数据的存储介质,Sqlite 文件将被保存成一个普通的文本文件,它无须一个 server 进程来提供服务,对 Sqlite 数据文件的直接操作即可以完成我们想要的工作。
在应用层,编写了一个对 Sqlite 操作的简单的封装。而且在这个过程中,可以体会到对 Sqlite 的操作是如此的便捷。
如:
DBInitial; 定义 Sqlite 操作时的回调函数
DBRelease; 释放 Sqlite 数据文件
DBOpen; 调用 sqlite_open 打开数据库文件
DBClose; 调用 sqlite_close 来关闭数据库
DBExecute; 执行 SQL 命令
DBRecordsetInit; 执行 select,得到记录集
DBRecordsetRelease; 调用 sqlite_free_table 来释放结果集
DBGetCharacterField 得到记录集中的一个域
在应用层,使用上面的包装,即可以完成对 Sqlite 数据库的操作,使用简洁,执行效率高。
总结
在整个系统开发过程中,感觉到用 Sqlite 数据库来开发,系统性能高,充分地体现了展示了轻量型数据库在开发应用中的便捷。
你在自己的项目中使用哪种类型的数据库呢,不防也将这个小巧的数据库应用到自己的项目中,你会体会到它给你带来的巨大优势。
来源:ibm 作者:余涛 责编:豆豆技术应用