我有这样的数据库架构:
- ELEMENT(uuid [string],name [string],status [integer],...)
- APPLICATION(uuid [string],name [string],config [string],status [integer],parent [自我上的外键或ELEMENT上的外键],...)
- ATTRIBUTE(uuid [string],name [string],type [string],parent [APPLICATION上的外键],...)
- VALUES(创建[datetime],data [varchar | text | integer | float | boolean | datetime])
我有这个限制:
- 申请必须在ELEMENT或SELF
上有fk
- 属性可以增长到250000个值
- 对于每个属性,我有20.000个值
- 值数据列可以有不同的类型
- 根据用户请求,我需要提供与特定元素匹配的所有应用程序
- 根据用户请求,我需要提供与特定应用程序匹配的所有属性及其最后一个值
- 根据用户请求,我需要在任意日期时间范围内为特定属性的所有值提供服务
- 定期(x分钟)添加新值并删除最旧值
- 添加新值时,我可能需要访问属性的最后X值
- 当有人修改ELEMENT,APPLICATION或ATTRIBUTE项目时,我需要锁定该项目
- 当用户提出一些请求时,我需要持久的数据存储和良好的性能
醇>
由于约束4,我无法使用经典的RDBMS,我认为关系数据库在任何情况下都不是最佳解决方案。我认为最好的解决方案是使用NOSQL数据库,但哪一个?有许多解决方案有利有弊,但我不知道哪种方法能更好地满足我的需求。
由于