我使用存储在SQL数据库(mariadDB)中的数据来存储有关"小部件"的信息。和"产品"。
小部件具有与之关联的元数据以及一些关联的关系数据。像构建团队,构建器和图像。构建者可以在任意数量的团队中,任何团队都可以构建任何小部件。目前,此数据已标准化为单独的表和映射映射/关联表。
产品还有元数据;描述,它的用途,交付时间等。
产品和小部件表似乎非常适合NoSQL解决方案。也许不得不对建设者进行去标准化并建立团队。
数据似乎不适合NoSQL的是产品和小部件之间的关系。窗口小部件可以关联/映射到0个或更多产品。映射到产品的每个小部件提供该产品的能力(小部件A可以提供web服务,小部件B可以提供移动等)。
每隔一段时间,产品套件就会发生变化,然后小部件会重新映射到新的产品组。该数据与商业智能(BI)软件(Jaspersoft Studio)一起用于生成报告。
数据不大。这是我们内部团队的使用,并在他们请求时为其他团队生成报告。因此,我并不担心ACID合规性或写锁,垂直或水平扩展,24x7可用性以及那些类型的东西。我主要担心的是数据更改时的灵活性(捕获有关小部件和应用小部件的产品集的元数据)。
答案 0 :(得分:1)
使用set操作和关系更好的SQL,它也可以更快地过滤您正在使用的集合。 NoSQL具有更大的功能灵活性,可以更快地完成一些单行操作。
如果您需要使用NoSQL,我建议您使用两种环境,SQL用于存储所有数据,NoSQL可以为您进行计算。要将数据提供给NoSQL,最佳做法是创建表值函数或视图。