哪位给推荐一个嵌入式数据库啊?要求并发性好(最好说出并发机制)、体积小、有例子;

HackerJLY 2011-12-09 09:39:17
哪位给推荐一个嵌入式数据库啊?要求并发性好(最好说出并发机制)、体积小、有例子;如:20 - 30 个辅助线程同时读写、主线程读,而不会产生“读饥饿”,把主线程卡死

Firebird、Sqlite、Birkeley DB... 之类的

ps: SQLite 我试过了,并发性不好,10 个线程读写、主线程读,会产生读饥饿,主界面经常被卡死,可能是由于它采用的锁机制是文件锁,所以效率低

主界面,我采用的是虚拟列表,来时时显示数据库里的数据,所以会经常读数据

有没有好的列表推荐啊?比如我读数据的时候,如果时间过长,不会卡死主线程,异步的最好。
...全文
466 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
northcan 2012-02-03
  • 打赏
  • 举报
回复
SQlite并发性是不好。
canglangysu 2012-02-03
  • 打赏
  • 举报
回复
sqlite3也挺好用的,教程、例子网上多的是
HackerJLY 2011-12-13
  • 打赏
  • 举报
回复
发现了一个让 SQLite 并发好些的方法:设置 模式为 WAL(Write-Ahead Logging)

PRAGMA journal_mode;
PRAGMA database.journal_mode;
PRAGMA journal_mode = DELETE | TRUNCATE | PERSIST | MEMORY | WAL | OFF
PRAGMA database.journal_mode = DELETE | TRUNCATE | PERSIST | MEMORY | WAL | OFF

SQLite 默认模式是 DELETE,读和写互斥,但是 WAL 模式 时,写的时候可以读

设置方法就是执行语句:PRAGMA journal_mode=WAL;
如:m_CppSQLite3DB.execDML("PRAGMA journal_mode=WAL;");

WAL 资料:http://www.sqlite.org/wal.html
iihero_ 2011-12-13
  • 打赏
  • 举报
回复
sqlite并发性非常差。
要想得到更好的并发性,BDB和firebird应该都不错。MySQL体积有点大。也应该可以。
ACMAIN_CHM 2011-12-12
  • 打赏
  • 举报
回复
SQLite 比较常见。其它的比如MYSQL也有,但应用的比较少。
wwwwb 2011-12-12
  • 打赏
  • 举报
回复
推荐使用Firebird的嵌入版
 有如下特色:
  1、数据库文件与Firebird网络版本完全兼容,差别仅在于连接方式不同,可以实现零成本迁移。
  2、数据库文件仅受操作系统的限制,且支持将一个数据库分割成不同文件,突破了操作系统最大文件的限制,提高了IO吞吐量。
  3、完全支持SQL92标准,支持大部分SQL-99标准功能。
  4、丰富的开发工具支持,绝大部分基于Interbase的组件,可以直接使用于Firebird。
  5、支持事务、存储过程、触发器等关系数据库的所有特性。
  6、可自己编写扩展函数(UDF)。

对网络的支持比较好
HackerJLY 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]

SQLite 比较常见。其它的比如MYSQL也有,但应用的比较少。
[/Quote]

你有木有试过用 20 - 30 个线程操作 SQLite 啊?
每个线程 估计 10 秒操作一次,读写
HackerJLY 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwwwb 的回复:]

推荐使用Firebird的嵌入版
有如下特色:
1、数据库文件与Firebird网络版本完全兼容,差别仅在于连接方式不同,可以实现零成本迁移。
2、数据库文件仅受操作系统的限制,且支持将一个数据库分割成不同文件,突破了操作系统最大文件的限制,提高了IO吞吐量。
3、完全支持SQL92标准,支持大部分SQL-99标准功能。
4、丰富的开发工具支持,绝大部分基于Interbase的……
[/Quote]
有木有例子给我一个啊?IBPP 不支持 Unicode,我的程序是 Unicode 的,
我用 IBPP 多线程写数据库时,多个连接,还出错了,好像是在 GetProcAddress 的时候,重复了
HackerJLY 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rucypli 的回复:]

貌似都用splite
[/Quote]

我到目前也就用过SQLite,但是它的并发性好像不好,并发效率低,其实我也就是 20 - 30个并发
rucypli 2011-12-10
  • 打赏
  • 举报
回复
貌似都用splite
HackerJLY 2011-12-10
  • 打赏
  • 举报
回复
没人理呢。。。

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧