按照此处提到的 DataStax 的“每个查询模式大致使用一个表”的建议,我已经设置了同一个表两次,但键入不同的键以优化读取时间。
-- This table supports queries that filter on specific first_ids and a gt/lt filter on time
CREATE TABLE IF NOT EXISTS table_by_first_Id
(
first_id INT,
time TIMESTAMP,
second_id INT,
value FLOAT,
PRIMARY KEY (first_id, time, second_id)
);
-- Same table, but rearranged to filter on specific second_ids and the same gt/lt time filter
CREATE TABLE IF NOT EXISTS table_by_second_Id
(
second_id INT,
time TIMESTAMP,
first_id INT,
value FLOAT,
PRIMARY KEY (second_id, time, first_id)
);
然后,我使用 DataStax 的 Python 驱动程序创建了 2 个模型,每个表一个。
class ModelByFirstId (...)
class ModelBySecondId (...)
问题
我似乎无法弄清楚如何在插入其中一个表以也插入另一个表时完全确保原子性。我唯一能想到的是
def insert_some_data(...):
ModelByFirstId.create(...)
ModelBySecondId.create(...)
我正在寻找是否有另一种方法来确保插入一个表被反映到另一个表中 - 可能在模型或表定义中,以便希望防止错误插入到其中一个模型中。
如果需要,我也愿意完全重组或重新制作我的表格以适应这种情况。