我们很快将重写一个应用程序,该应用程序将允许最终用户定义对象和这些对象上的字段。
我正在考虑使用NoSQL来完成此任务,但对它的熟悉程度还不足以知道这是最佳选择还是RDBMS。
我来自MSSQL背景,并且熟悉在RDBMS中处理此用例的选项:在表上添加“ CustomField1”类型的字段;创建一个属性表;使用ALTER语句来更改物理模式等。没有一个适合我。
为了进一步使数据复杂化,数据将被用户的站点人为地隔离。换句话说,所有数据都将存储在一个数据库中,但是字段将在站点级别上定义。
因此,我开始探索NoSQL(例如Mongo和Couch)。我喜欢存储json文档的想法。对于这样的事情,它“感觉”更自然。但这是新领域,有点吓人。确实,这将是“松散”模式。对象本身是众所周知的,但字段可能会更改。用RDBMS术语来说,我们正在谈论75个以上的表对象,包括主对象,查找表,多对多表等。
我的理解是NoSQL的主要好处与可伸缩性和持久性有更多关系,在此无需担心。这是一个内部应用程序,对用户而言不是一个超重的负载。没有微服务或类似的东西。因此,在处理用户定义的列时,是否/何时使用NoSQL,甚至表与文档方法的根本差异方面,我还没有看到太多。我读过的大多数内容都是关于性能和可伸缩性的。
关注点:
顺便说一句,我在软件推荐网站上对此几乎没有任何看法。我不知道这是人流量少的网站还是什么。但是我对此非常了解,知道这是一个问这个问题的好地方。
因此,基本上,我的问题是:考虑到上述问题,NoSQL是用户定义字段的最佳数据库选项吗?为什么或者为什么不?还是我应该坚持使用MSSQL。
致谢!
答案 0 :(得分:1)
我正在回答wrt mongodb数据库,
回答您的问题
是的,mongodb支持聚合操作,而mongodb Enterprise附带了BI连接器,使用该连接器可以连接到Tableau和excel等BI工具
如果要使用MongoDB Atlas(Mongodb的云版本),它将提供mongodb针,将您的ongb数据公开为其他api。
是的,您可以使用$ project运算符拉回json文档的一部分,它将提高您的性能
是的,您可以使用db.collection.updateMany()函数进行大规模更新,例如MSSQL。
回到最初的问题,因为没有sql数据库缺少架构,所以只要将新字段添加到集合(表)中,就无需修改架构。