NoSQL(Cassandra,MongoDB..)视图和更改主数据
NoSQL (Cassandra, MongoDB..) views and changing masterdata
我目前正在尝试在 Cassandra 中设计一个 "table" 模型(但问题也属于其他 NoSql 数据库,例如 MongoDB)。
以下场景:
- 从车辆到商店的 gps 位置非常多
- 一辆车属于一个公司
- 一辆车可以属于一个或多个车组(在一个公司)
- 一个用户属于一个公司
- 一个用户可以拥有一个或多个车组(在他的公司)
我尝试将"tables"设计成用户查询数据的方式,例如:
gpsposition_by_company:
公司|车辆组 |车辆 |经度 |纬度
现在我的问题是:
如果车辆或用户更改了他的组成员资格,我该怎么办?
目前我看到了几个选项:
- 不要在实体化视图中保存车辆组,而是使用关系 "table"。所以我必须先查询用户允许的车辆,然后再查询每辆车 gpspositions
- 也使用关系 table,但查询公司的所有 gps 位置并在服务器端过滤允许的车辆。
这两个选项都不适合我。你怎么看待这件事?有没有什么模式可以解决非关系数据库中的这个问题?
问候
马库斯
您的问题的解决方案取决于您对多语言持久性的适应程度。在处理类似的用例时,我们将关系数据库中的所有关系数据和指标(在您的情况下是 gps 位置)作为时间序列保存在 Cassandra 中。这使我们可以灵活地更新关系数据(将车辆从一组移动到另一组,更新其参数等),而且还可以保存和稍后分析数据(车辆运动,从 A 到 B 花费的时间等)。
您可以只使用 Cassandra,但这会花费您很多时间,并且您将不得不解决很多问题。
我目前正在尝试在 Cassandra 中设计一个 "table" 模型(但问题也属于其他 NoSql 数据库,例如 MongoDB)。
以下场景:
- 从车辆到商店的 gps 位置非常多
- 一辆车属于一个公司
- 一辆车可以属于一个或多个车组(在一个公司)
- 一个用户属于一个公司
- 一个用户可以拥有一个或多个车组(在他的公司)
我尝试将"tables"设计成用户查询数据的方式,例如: gpsposition_by_company: 公司|车辆组 |车辆 |经度 |纬度
现在我的问题是: 如果车辆或用户更改了他的组成员资格,我该怎么办?
目前我看到了几个选项:
- 不要在实体化视图中保存车辆组,而是使用关系 "table"。所以我必须先查询用户允许的车辆,然后再查询每辆车 gpspositions
- 也使用关系 table,但查询公司的所有 gps 位置并在服务器端过滤允许的车辆。
这两个选项都不适合我。你怎么看待这件事?有没有什么模式可以解决非关系数据库中的这个问题?
问候 马库斯
您的问题的解决方案取决于您对多语言持久性的适应程度。在处理类似的用例时,我们将关系数据库中的所有关系数据和指标(在您的情况下是 gps 位置)作为时间序列保存在 Cassandra 中。这使我们可以灵活地更新关系数据(将车辆从一组移动到另一组,更新其参数等),而且还可以保存和稍后分析数据(车辆运动,从 A 到 B 花费的时间等)。 您可以只使用 Cassandra,但这会花费您很多时间,并且您将不得不解决很多问题。