让我们考虑一个提供送货服务的零售商/餐饮连锁店:
每个仓库/餐厅都会发送状态消息,报告不同的事件(这种类型的消息很可能并不总是包含相同的字段),例如:
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。
谢谢你的帮助!谢谢您!
暂无答案!
目前还没有任何答案,快来回答吧!