SQL Server CE 或 Access 用于使用 c# 的可移植数据库?

Posted

技术标签:

【中文标题】SQL Server CE 或 Access 用于使用 c# 的可移植数据库?【英文标题】:SQL Server CE or Access for a portable database with c#? 【发布时间】:2009-08-30 15:52:19 【问题描述】:

我正在开发一个需要存储大量数据的应用程序。

我不能使用 SQL Server Express 版本,因为它需要单独安装,而且我们的目标客户已经向我们投诉了我们之前的 SQL Server Express 版本。

现在我的选择是在 SQL Server compact 和 Access 之间。

我们存储大量报告数据(每周 300 万)。我可以使用哪个数据库?

该应用程序是可移植的并且是基于产品的应用程序。

我们公司要求我们以这样一种方式提供该应用程序,以便任何人都可以从我们的网站下载和使用它。请帮忙。

谢谢。

编辑:一小时内的 40,000 条记录是其存储的大致速率。存储的数据只是普通的 varchar、datetime、nvarchar 等。没有图像,也没有二进制或特殊的东西。

【问题讨论】:

【参考方案1】:

什么是“300 万数据”/300 万张大图? 300 万字节?那里可能有很大的不同。

无论如何,如果实际数据大小不会超过 SQL CE 支持的大小 (4GB),我可能会选择 SQL CE 而不是 Access。我已经将 SQL CE 用于一周内收集几十万条记录而没有问题的应用程序。该数据库是单个文件,可移植,并具有巨大的优势,即完整的 SQL Server 可以附加到它并将其用作数据源,即使在复制方案中也是如此。

【讨论】:

不...只有 300 万行(不是图像或数据),例如“sno,name,time received,message,username”。 一小时内 40,000 条记录是其存储的大致速率。 听起来你已经使用 sql ce 记录了几十万条记录......我希望它对我有用。但是现在我需要将现有数据库从 sql server 移植到 sql ce。 :( 我认为存储过程到位是一项艰巨的任务【参考方案2】:

每小时 40,000 条记录等于每秒 10 条记录。我建议创建两者都需要的各种表和索引并首先进行测试。让测试运行 8 个小时,看看会发生什么。

很可能前 x 条记录可以很好地插入,但它们变得越来越慢。 x 是 10K 到 1M 之间的某个数字。越来越慢是相当主观的,取决于应用程序。在 Access 中,我建议定期进行压缩,即可能在 100K 记录之后清理索引。但是,如果应用程序想要连续插入 8 小时的记录而不中断,那么显然这对您来说效果不佳。

或者您可以尝试删除索引、插入记录并重新创建索引。但是,如果用户想在插入记录时查询数据,那么这也行不通。

如果不共享数据库,Access 的运行速度也会显着提高。同样,这可能不切实际。

最后,如果您仍然没有获得不错的性能,或者即使您做到了,请考虑让用户安装固态磁盘驱动器并将您的数据库文件放在上面。几百美元的 32 Gb SSD 驱动器可以让开发人员花费大量时间来处理事情。

【讨论】:

【参考方案3】:

如果您与 .Net 紧密耦合:sql server compact 将是更好的选择。

如果没有,请考虑使用:sqlite

【讨论】:

我认为...但是这篇博文说 sqlce 更容易...ayende.com/Blog/archive/2008/01/22/SQLite-vs.-SQL-CE.aspx SQL Server Compact 和 SQL Server CE 不是一回事吗? en.wikipedia.org/wiki/SQL_Server_Compact 表明他们是。

以上是关于SQL Server CE 或 Access 用于使用 c# 的可移植数据库?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 到 SQL CE:如何读取 SQL 或 Access 数据库并将其写为 SQL CE 数据库?

SQL Server CE 4.0 插件不适用于 VS2013

用于多个应用程序中的 C# 类库的 SQL Server CE 私有部署

在 Sql Server CE 中缩小或压缩?

使用 SQL Server 将子查询结果重用于其他计算

用于 Access 的 SQL Server 迁移助手:日期数据类型