Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML文件可以用作高效的VB.NET后端吗?_Xml_Database_Vb.net_Backend_Processing Efficiency - Fatal编程技术网

XML文件可以用作高效的VB.NET后端吗?

XML文件可以用作高效的VB.NET后端吗?,xml,database,vb.net,backend,processing-efficiency,Xml,Database,Vb.net,Backend,Processing Efficiency,XML文件能否有效地用作VB.NET应用程序的数据库 我已经这样编码了,应用程序正在成功运行 问题是:当存储/数据大小增加时,程序是否会以与现在相同的方式运行?(即响应时间相同等)将数据存储在Xml文件中会遇到许多可伸缩性问题。我建议您考虑将Xml分解成有意义的文档,并将其存储在数据库中,既可以是传统的RDBMS,也可以是XMLNoSQL数据库 多用户争用。由于您已经标记了vb.net,在遇到与数据库大小相关的任何其他性能问题之前,您的第一个问题可能是文件系统上Xml文件的并发性和争用性。尽管多

XML文件能否有效地用作VB.NET应用程序的数据库

我已经这样编码了,应用程序正在成功运行


问题是:当存储/数据大小增加时,程序是否会以与现在相同的方式运行?(即响应时间相同等)

将数据存储在Xml文件中会遇到许多可伸缩性问题。我建议您考虑将Xml分解成有意义的文档,并将其存储在数据库中,既可以是传统的RDBMS,也可以是XMLNoSQL数据库

  • 多用户争用。由于您已经标记了
    vb.net
    ,在遇到与数据库大小相关的任何其他性能问题之前,您的第一个问题可能是文件系统上Xml文件的并发性和争用性。尽管多个用户可以同时读取文件,但只要有一个或多个并发写入程序,您就会发生争用

  • 缺少随机访问/索引搜索-如果需要在数据中搜索,使用Xml通常需要连续扫描整个Xml文件。这将是IO密集型的。专用数据库将能够使用数据索引来减少IO

  • 内存-如果访问Xml数据的主要性质是只读的(例如,如果它主要包含用于填充屏幕等的静态数据,但不用于读/写数据存储),则可能倾向于将其缓存在内存中,以补偿#2导致的对数据的快速随机访问不足。这种方法显然有局限性

  • 将文件转换为数据库

    您没有详细说明在Xml文件中存储的内容,但是,如果Xml是最合适的存储格式,我建议您将文件分解为适合您的域的逻辑存储单元(聚合根/文档)


    这些文档的存储可以使用专用的数据库来完成,或者许多传统的Sql数据库也对存储Xml文档(例如)有很好的支持。

    对于数据库Xml来说非常棒,仅用于数据

    它也是闪电般的快

    我创建了一个模块,可以让我超级快速地存储数据。。。 在配备2.67 GHz 4核Intel i5 CPU的7200 RPM驱动器上

    它发布了以下性能

    在0.18秒内写入50000条条目

    在0.17秒内从数据库中提取20000个条目

    速度不受数据库大小的影响,您可以存储无限量的数据(例如TB),但是,您对数据所做的操作会降低您实际发布数据的速度,因此,如果您正在执行类似于构建字符串的操作,那么如果您只是发布数据,则该函数将降低数据发布的速度,那是一个不同的故事

    对你来说够快吗

    问题是,建立这样一个高效的数据库相当困难,很抱歉我不能泄露我的秘密,因为我花了一段时间才想到如何高效地存储/提取/删除/更新数据,从而将SQL从可怕的水中吹走

    话虽如此,你应该知道这是可以做到的,但困难的是,你愿意自己那么努力地创造它吗?

    给我们看看数字

    我们有一个内部应用程序,它使用一个10Mb的XML文件作为数据库,工作得非常好。但是它每天只做10个事务,所以每次将整个10Mb写回磁盘是完全可行的。如果是每秒10笔交易,情况就完全不同了


    对于更高的数据大小和事务速率,考虑XML数据库,它将数据库的可伸缩性与XML的便利性和灵活性结合起来。

    不,除了只读(相对较小)的数据之外,这是一个非常糟糕的选择。要知道你的应用程序将如何处理更多数据,你只能做一件事:用更多数据测试它。我们不知道你的应用程序是如何工作的。不确定你使用的是什么格式(winforms/web),但文件(包括XML文件)要么是用于输出目的(用户的结果),要么是临时/不理想的替代方案。通常,理想的替代方案是内存,当大小增加到超出内存所能处理的范围时,则是数据库。一切都是相对的:这取决于确切的条件、约束等。;但是,原则上,如果您可以选择,最好是一个数据库。@varocabas:winforms是指任何支持树结构的数据库,它由vb.net支持,如果是免费的,那就太好了(因为使用付费版本的数据库会让用户付更多的钱)。有很多免费的数据库,而且就.NET是最流行的编程环境之一而言,不太可能找到一个不使用的。净。进行一些研究。该应用程序是一个医院管理软件。由于xml是免费的,我认为成本可以降低。现在如果我改变后端-我必须改变一些模块(这很好..没问题)。问题是:1)我安装到用户pc上的db的大小将超过xml。xml的大小以KBs为单位。2) 成本。3) 该编码更适合于目前数据集的树状结构。是否有支持树结构(节点)和bro.的数据库。。考虑到索引的问题-我使用父节点名称作为索引:dt这里有一个类似的问题。像SqlLite或SqlCE这样的进程内数据库可能是一个选项,尽管您需要使用SqlCE提升SEEK的索引行列的键,因为它失去了更大兄弟的Xml支持。Sql Express支持Xml,但会增加应用程序的安装占用空间。如果在计算机网络中共享Xml,则并发性是我面临的唯一问题(剩下的问题都解决了。)vb.net支持通过导入system.xml来处理xml现在xml文件的大小非常小,大约为50KBs。应用程序在添加数据、检索