SQLite与SQL Server

Bre*_*ead 58 sql-server sqlite

请问任何人可以区分什么是最好使用SQLite或SQL Server?我使用XML文件作为数据存储ADD,删除,更新..有人建议使用SQLite进行快速操作,但我不熟悉SQLite,我知道SQL Server.

Sam*_*eff 97

SQLite是一个很棒的嵌入式数据库,可以与应用程序一起部署.如果您正在编写客户将安装的分布式应用程序,那么SQLite具有无需任何单独的安装程序或维护的巨大优势 - 它只是与您的应用程序的其余部分一起部署的单个dll.

SQLite也在进行中运行,减少了数据库带来的大量开销 - 所有数据都在进程中进行缓存和查询.

SQLite比SQL服务器更好地集成了.NET应用程序.您可以在任何.NET语言中编写自定义函数,该语言在SQLite引擎内部运行但仍在应用程序的调用进程和空间内,因此可以调用应用程序来集成其他数据或在执行查询时执行操作.这种非常不寻常的能力使某些行动变得更加容

SQLite通常比SQL Server快很多.

但是,SQLite一次只支持一个编写器(意味着执行单个事务).SQLite在需要锁定(读取或写入)时锁定整个数据库,并且一次只有一个写入程序可以保持写入锁定.由于它的速度,这对于低到中等大小的应用程序来说实际上不是问题,但如果你有更高的写入量(每秒数百个),那么它可能成为瓶颈.有许多可能的解决方案,例如将数据库数据分成不同的数据库,并将写入缓存到队列并异步写入.但是,如果您的应用程序可能遇到这些使用要求并且还没有为SQLite编写,那么最好使用其他类似SQL Server的其他东西,它具有更精细的锁定.

更新: SQLite 3.7.0添加了一个名为Write Ahead Locking的新日志模式,支持写入时的并发读取.在我们的内部多价格竞争测试中,对于完全相同的有争议的读/写序列,时间从110秒到8秒.

  • @BipinVayalu,不,SQLite不支持SQL Server的所有功能.SQLite是一个更基本的实现.它支持我所需要的一切.:-) (6认同)
  • 我只是质疑"SQLite与.NET应用程序集成*比SQL服务器更好*"的观点.[强调补充]两者都可以通过不同的方式与.NET应用程序集成.您可以在SQL Server中定义CLR类,并在客户端和服务器之间发送这些类的实例.在SQlite中,您可以使用.NET语言创建自定义UDF,可以将其导入SQLite.此外,像"低到中等大小的应用程序"这样的短语实际上毫无意义."大小"是什么意思? (3认同)
  • @Tim,我特别指出低到中等需要最多*每秒数百次写入*。超过这个数量,争用就会变得很成问题。 (2认同)
  • 你好塞缪尔,sqlite是否支持sql的所有功能?或者不是因为轻量级架构限制了功能使用。 (2认同)

Pra*_*eep 5

两者都在不同的联赛中.一个用于企业级数据管理,另一个用于移动设备(嵌入式或服务器较少环境).虽然SQLite部署可以容纳数百GB的数据,但这不是它的内容.

更新:反映更新的问题:请阅读SQLite上的这篇博文.我希望这会帮助您,让您通过重定向到资源来访问它,以编程方式从.net访问SQLite.

  • 博客文章的链接已失效。 (6认同)