我正在创建一个C#WPF应用程序,它可以吸收RS232数据并以相对较高的速度(每秒数百个)将所有数据存储到嵌入式数据库中。该应用程序同时执行两项操作:
我认为SQLite是因为我的应用程序需要嵌入式数据库而且它是单个用户应用程序。但是存储和绘制数据(可能存储当前数据和绘制昨天的数据)需要对数据库进行并发读写。我听说SQLite在一个查询上锁定并且canot同时处理多个查询。真的吗?如果是这样,其他嵌入式数据库支持多次写入?
答案 0 :(得分:3)
Berkeley DB具有非阻塞写入,并且具有快速的声誉。
非常有趣的是,it can be used as a drop in replacement for SQLite。
写入SQLite的应用程序 版本3 API可以切换到使用 Oracle Berkeley DB没有代码 通过重新链接来改变 Berkeley DB SQLite库。该 两者的应用程序级行为 产品是相同的,但是 Berkeley DB的高级功能 提供改进的SQLite应用程序 性能,并发性,可伸缩性, 和可靠性。
这听起来很合适。
答案 1 :(得分:2)
好的,有些事情。
首先,是的SQLite是线程安全的,即使作者并不热衷于它。请在此处阅读:http://www.sqlite.org/faq.html#q6。
其次,你提到“快”是每秒数百个插入。如果在事务中包装所有内容,SQLite每秒可轻松达到30,000次插入。我说这不是因为它确实是你的问题,而是因为知道这可能有助于你的决定(因为它重新定义了被认为是“快”的东西)。
答案 2 :(得分:0)
查看RavenDB。 http://www.ravendb.net/使用它运行一些测试会很容易,看看它是否能满足你的要求。