我正在使用xml文件作为当前正在开发的数据库。
xml文件将由网络上的多个用户修改。(不是在服务器上,而是在我的计算机上,他们可以通过网络访问)
我知道为此使用xml是一个坏主意,但xml的结构更好/更清洁/我喜欢的东西。
想知道,我的选择是什么?因为我可以继续使用一些奇怪的背景自定义连接xml? (这将验证所有必要的细节,以允许我从xml写入/读取没有问题)
还是我坚持使用一些SQL类型的数据库?如果我坚持使用它会有某种类似于XML的数据库......
编辑:喜欢xml的原因。 为眼睛轻松分组。
<SomeDocument name="Something">
<URL>bbbb</URL>
<Something>2342</Soemthing>
<Something_That_would_of_been_in_another_database>derp</...>
而不是将3-4张桌子连在一起......
答案 0 :(得分:2)
有一些基于XML的数据库的例子支持多用户环境。一个是Microsoft OneNote使用的OneNote修订文件格式。虽然有一个非常详细的文档,但支持多个用户编辑单个文件非常复杂。基本上可以说,当您需要多用户支持时,基于XML的存储不是可行的选择。
如果您坚持使用XML文件,您可以查看OneNote文件格式,但它不是传统的XML格式,因为它还使用“二进制包装器”,这意味着实际内容是在XML数据中定义的在二进制文件中,但事务/修订/空闲块表示为二进制。这是必要的,因为您必须分配文件的特定部分供用户写入,同时打开文件。
如果您不想使用专用服务器软件,可以使用各种基于文件的数据库,如SQL CE或SQLite。
答案 1 :(得分:1)
如果您使用了多个用户可以访问的文件,则需要处理并发问题。需要保证一个用户不会覆盖同一时间内其他用户的更改。
我的建议是使用适当的数据库(例如SQL Server)来处理这些问题。
答案 2 :(得分:1)
我不熟悉C#soultions,但是对于我们的java应用程序,我们使用eXist-db并使用xquery进行查询。我对它不太熟悉,但有些人使用markLogic。还有更多使用Berkley db。
答案 3 :(得分:1)
是否使用本机XML数据库,支持XML的数据库,所谓的NoSQL数据库或任何更传统的方法的问题可以依赖于多种因素。仅举两个:
至于并发性:任何数据库都应该本地处理它。
已经提到了许多数据库。为了说明一些,MarkLogic Server(www.marklogic.com)可以扩展和执行高达太字节(甚至更高),并且具有Java和.Net等连接器。 28毫秒(基于Zorba的www.28msec.com)的解决方案在云端运行,也应该扩展。
但最值得一提的是这些数据库通常通过HTTP / REST接口使用。这允许从任何编程语言轻松集成,并使交换更容易。