处理动态字段通过多个(现有)字段引用其他类型的消息

wd2eg0qa  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(251)

让我们考虑一个提供送货服务的零售商/餐饮连锁店:
每个仓库/餐厅都会发送状态消息,报告不同的事件(这种类型的消息很可能并不总是包含相同的字段),例如:

type: restaurant.status 
msg_timestamp 
restaurant_id 
number_of_orders_last_30_min
number_of_orders_last_60_min

type: restaurant.status 
msg_timestamp 
restaurant_id 
offer_of_the_day

顾客订购与餐厅相关的某些产品:

type: order.status 
msg_timestamp 
product.type: product.status 
product.info 
order_id 
order_timestamp 
restaurant_id
``` `product.type` 以及 `product.info` 参考另一条描述产品的信息(价格、库存等),但也要有 `restaurant_id` .
或

type: order.status
msg_timestamp
completion_degree
order_id # only unique for open orders of a restaurant
order_timestamp
restaurant_id

所以呢 `order_id` ,  `order_timestamp` 以及 `restaurant_id` 唯一定义订单,但不唯一定义初始订单消息。
当然,可能有更多的状态类型,例如客户、实际交货、a.s.o。
我无法更改原始消息。但我可以在Kafka内部做一些预处理。
kafka中的状态消息可能没有正确的时间戳顺序,例如,在发出新订单之前不久更新的产品可能比订单更晚被接收。
订单时间戳和实际交付之间的时间范围可能太大,无法指望这两条消息都在kafka中。
问:哪些图形数据库适合这种数据?我该如何处理这些信息?充其量,边缘将由数据库本身中的某些逻辑生成(即使消息时间戳之间的时间帧更大),如(建议):
从订单到产品:获取该类型的所有消息 `product.status` 同样的 `restaurant_id` . 选择之前最近的一个 `order_timestamp` (由于价格或库存变化)。
从交货到订购:接收该类型的所有邮件 `order.status` 同样的 `restaurant_id` ,  `order_timestamp` 以及 `order_id` 然后选择一个 `product.info` 现场。
我担心由于性能影响,通过更新文档将一个订单的消息合并在一起是不可行的?那么 `order_id` ,  `order_timestamp` 以及 `restaurant_id` 将为文档定义唯一的id。
谢谢你的帮助!谢谢您!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题