需要为我的应用程序保存大量记录...我应该使用本地数据库instad吗?
我即将开始为Windows开发“time machine”。我需要在表格中存储很多记录。每次执行备份时,我都会写入大约50,000条记录,因为这是我的计算机中有多少个文件(每个记录与存储文件无关,记录将包含每个文件所在的路径)反正我不' t知道我是否可以使用XML来存储我的记录,因为我的查询不会很复杂,而且更容易部署与创建本地数据库,因为我不知道它是否会更有效,因为即使查询将会变得简单我将要处理大量的数据。此外,我不知道本地数据库是否可以大于2GB,并且我估计如果经常使用一年,数据库将大约为3GB。需要为我的应用程序保存大量记录...我应该使用本地数据库instad吗?
我更喜欢使用XML并使用Xpath来执行查询,以便更容易地部署我的应用程序。但是,如果创建本地数据库变得更加高效,并且XML将减慢我的应用程序,因为我有这么多记录,那么我将创建一个本地数据库。任何其他建议将有所帮助,也许我需要做别的。
SQL Server 2008 R2 Express允许数据库最大容量为10GB - 所以根据您的估计空间要求,这可能是值得考虑的。
将数据存储在某种形式的数据库而不是XML中会更好 - 因为后者将快速增长到查询速度变得非常缓慢和内存密集的程度。
放大:XML可用于数据交换或人类可读性XML的一块不是数据库,它只是一个xml的blob,是用于存储机器访问数据的最不实用的方法之一,查询。 – msw 2011-05-28 04:57:41
当您尝试访问数据时,使用XML存储大量数据将需要大量的内存使用量。它在存储空间使用方面效率也不高。我会推荐使用SQL的一个版本。您可以使用Microsoft SQL的某个Express版本,也可以使用开源SQL语气,如MySQL。
当您正在查看存储大量信息时,您需要查看关系数据库。如果您真的不想走这条路线,您可以考虑将每个备份存储在它自己的XML文件中。这将允许更多的可移植性,并且在访问存档数据时它会减少您的内存占用量。
+1我还没有使用过SQLite--但是占用空间小,体面API和良好性能的任何东西都是一个好主意。 – 2011-05-28 04:58:21
我认为一个指向C#绑定的指针会有帮助(因为我对C#一无所知,我只能猜测这是正确的:http://system.data.sqlite.org/index.html/doc/trunk/www /index.wiki – msw 2011-05-28 05:02:36