C# 具有快速多次写入功能的嵌入式数据库

C# 具有快速多次写入功能的嵌入式数据库,c#,wpf,database,sqlite,C#,Wpf,Database,Sqlite,我正在创建一个C#WPF应用程序,它接收RS232数据,并以相对较高的速度(每秒数百次)将所有数据存储到嵌入式数据库中。应用程序同时做两件事: 获取RS232数据并存储到数据库中 绘制数据库中的数据 我考虑SQLite,因为我的应用程序需要嵌入式数据库,它是一个单用户应用程序。但是存储和绘制数据(可能是存储当前数据和绘制昨天的数据)需要对数据库进行并发读写。我听说SQLite锁定了一个查询,不能同时处理多个查询。这是真的吗?如果是这样的话,还有哪些嵌入式数据库支持多次写入?请查看RavenDB。

我正在创建一个C#WPF应用程序,它接收RS232数据,并以相对较高的速度(每秒数百次)将所有数据存储到嵌入式数据库中。应用程序同时做两件事:

  • 获取RS232数据并存储到数据库中
  • 绘制数据库中的数据

    我考虑SQLite,因为我的应用程序需要嵌入式数据库,它是一个单用户应用程序。但是存储和绘制数据(可能是存储当前数据和绘制昨天的数据)需要对数据库进行并发读写。我听说SQLite锁定了一个查询,不能同时处理多个查询。这是真的吗?如果是这样的话,还有哪些嵌入式数据库支持多次写入?

    请查看RavenDB。使用它运行一些测试,看看它是否能满足您的需求,这将是相当容易的。

    查看RavenDB。使用它运行一些测试并查看它是否能满足您的需求将是相当容易的。

    具有非阻塞写入功能,并且以速度快著称

    很有意思

    写入SQLite的应用程序 版本3 API可以切换到使用 没有代码的Oracle Berkeley DB 更改,通过针对 Berkeley DB SQLite库。这个 两者的应用程序级行为 产品是相同的,但是 Berkeley DB的高级功能 提供改进的SQLite应用程序 性能、并发性、可扩展性、, 和可靠性

    这听起来很符合要求。

    具有非阻塞写入功能,并且以速度快著称

    很有意思

    写入SQLite的应用程序 版本3 API可以切换到使用 没有代码的Oracle Berkeley DB 更改,通过针对 Berkeley DB SQLite库。这个 两者的应用程序级行为 产品是相同的,但是 Berkeley DB的高级功能 提供改进的SQLite应用程序 性能、并发性、可扩展性、, 和可靠性

    这听起来很合算。

    好的,有几件事

    首先,是的,SQLite是线程安全的,尽管作者对此并不热心。请在此处阅读:

    第二,您提到“快”是指每秒数百次插入。如果在事务中封装所有内容,SQLite每秒可以轻松达到30000次插入。我这样说并不是因为这真的是你的问题,而是因为了解这一点可能有助于你的决定(因为它重新定义了什么是“快速”)。

    好的,有几件事

    首先,是的,SQLite是线程安全的,尽管作者对此并不热心。请在此处阅读:


    第二,您提到“快”是指每秒数百次插入。如果在事务中封装所有内容,SQLite每秒可以轻松达到30000次插入。我这样说并不是因为这确实是您的问题,而是因为了解这一点可能有助于您的决策(因为它重新定义了所谓的“快速”)。

    我确信在SQLite中不可能进行多次写入。但“线程安全”是否意味着它至少可以有一次写入和多次读取?@KMC-Sqlite支持事务,因此这就是您的并发控制手段(我怀疑这就是您所说的线程安全)。只要不跨线程共享连接,Sqlite是线程安全的。还要注意的是,Sqlite只支持数据库级锁定,有效地限制了您在一个计时器中只能有一个写入程序,而不管连接的数量如何。但“线程安全”是否意味着它至少可以有一次写入和多次读取?@KMC-Sqlite支持事务,因此这就是您的并发控制手段(我怀疑这就是您所说的线程安全)。只要不跨线程共享连接,Sqlite是线程安全的。还要注意的是,Sqlite只支持数据库级锁定,有效地限制了您在一个计时器中只能有一个写入程序,而不管连接的数量如何。谢谢我不知道替代品的数量减少了。谢谢