SQLite与SQL Server

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

SQLite是一个很好的embedded式数据库,您可以随应用程序一起部署。 如果你正在编写一个客户将要安装的分布式应用程序,那么SQLite有一个很大的优势,就是没有任何单独的安装程序或维护 – 这只是一个单独的dll,与你的其他应用程序一起部署。

SQLite也在运行,并减less了数据库带来的大量开销 – 所有数据都被caching和查询进程中。

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

SQLite通常比SQL Server快很多。

但是,SQLite一次只支持一个writer(意味着执行一个单独的事务)。 SQLitelocking整个数据库,当它需要一个锁(读或写),并且只有一个写者可以一次持有一个写锁。 由于速度的原因,对于低到中等大小的应用程序来说,这实际上不成问题,但是如果写入量较高(每秒几百个),则可能会成为瓶颈。 有许多可能的解决scheme,如将数据库数据分隔到不同的数据库中,并将写入caching到队列中,并将其写入asynchronous。 但是,如果您的应用程序可能会遇到这些使用要求,并且尚未针对SQLite编写,那么最好使用其他类似SQL Server的更细粒度的locking。

更新: SQLite 3.7.0添加了一个新的日志模式,称为写前进locking,支持写入时的并发读取。 在我们的内部多价格竞争testing中,对于有争议的读/写序列完全相同的序列,时序从110秒变为8秒。

两人都在不同的联赛。 一个用于企业级数据pipe理,另一个用于移动设备(embedded式或服务器less的环境)。 虽然SQLite部署可以保存数百GB的数据,但这不是它的目的。

更新:反映更新的问题:请阅读SQLite的这篇博文 。 我希望这将帮助你,让你从redirect到资源访问它以编程方式从.net访问SQLite。