gpt4 book ai didi

algorithm - 如何在考虑性能的情况下在 Cassandra 3.0 中对多对多关系进行建模

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:30 24 4
gpt4 key购买 nike

我正在尝试为以下问题定义 cassandra 表。
我有以下关系:
一个用户(user_id)可以看到多个添加(add_id)。
一个add(add_id)可以被多个用户看到。

我想在 cassandra 中进行以下查询:

  1. 给定一个用户 (user_id) 给我该用户看到的所有添加 (add_id)
  2. 给定一个添加 (add_id) 给我所有看到该添加的用户 (user_id)

我采取的方法是创建两个关系表

CREATE TABLE adds_by_user (
user_id text,
add_id text,
PRIMARY KEY (user_id, add_id)
);

CREATE TABLE user_by_add (
add_id text,
user_id text,
PRIMARY KEY (add_id, user_id)
);

我的算法执行以下操作
给定一个 user_id:

  1. 给我所有用户观看过的 add_id
  2. 对于每个 add_id,给我所有观看过该 add_id
  3. user_id
  4. 对于每个user_id,给我每个用户观看的所有add_id

查看它的另一种图形方式是:

(一个) user_id -> (多个) add_id -> (多个+) user_id -> (多个++) add_id

当我有很多关系并且算法花费大量时间进行所有查询时就会出现问题(尽管每个单独的查询都在 0.5 毫秒或更短的时间内完成,但是有很多他们)

我已经在使用异步查询了

有没有可以加快查询速度的模型?

是否有模型可以使算法减少查询并遵守 Cassandra 标准?

谢谢!!

最佳答案

数据模型示例:

CREATE TABLE user_address_user(
user_id text,
address_id text,
user_level2 text,
address_level2 text,
PRIMARY KEY((user_id), address_id, user_level2, address_level2)
);

这个表结构可以看成

Map<user_id, SortedMap<address_id, SortedMap<user_level2, SortedSet<address_level2>>>>

关于algorithm - 如何在考虑性能的情况下在 Cassandra 3.0 中对多对多关系进行建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36452505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com