数据库结构/引擎选择指南
本文关键字:选择 引擎 结构 数据库 | 更新日期: 2023-09-27 18:26:57
在我的工作场所,我们偶然发现了一个问题,即我们需要创建一种库存应用程序,为每个对象存储不同类型的属性,并能够动态处理属性/列,即,我们不想每次为现有对象创建新属性时(比如,现在我们需要考虑蓝牙硬件!)或每次出现新对象时(现在我们需要需要考虑游戏板!)都必须修改应用程序。当然,这些对象必须是可读的,也必须是可编辑的。
尽管我们是传统的以SQL为中心的(Oracle、MySQL、MSSQL),但我并不反对以任何其他方式(比如NoSQL)来做这件事,因为我们从未处理过,也有点忘记了这一点。然而,我们需要使用ASP.NET MVC进行开发。
任何指导都将不胜感激。:)
实际上,您描述的问题可以通过关系型dbms完全解决,但这对您的团队来说需要更多的时间。我认为文档数据库是您更好的选择。RavenDB是一个很棒的文档数据库,它结合了关系数据库和文档数据库的优点。它完全符合ACID,有一个出色的Linq提供程序,速度非常快,尤其是最新版本。
所以我的建议是,在你尝试之前,你永远不会确切知道。到目前为止,我对ravendb唯一的问题是掌握索引。文件中缺少一些重要的注释,我希望Ayende能很快解决这个问题,否则,就去做吧
顺便说一句,你也可以试试MongoDB。它不符合ACID,也没有Linq提供程序,正如你所猜测的,编写查询比在RavenDB中更难,但它是用C++编写的,具有原子I/O操作,速度非常快。
如果您的需求是存储和处理结构化数据(或者可能是声音文件、图像等),并且您已经习惯了Oracle,我建议您研究LOB和XMLType。Oracle内置了对XML技术的支持(模式验证、xslt转换、二进制存储、xpath索引可能是您感兴趣的领域)。