【发布时间】:2016-08-18 13:40:49
【问题描述】:
给定以下表格:
CREATE TABLE videos (
video_id UUID,
added_date TIMESTAMP,
description TEXT,
title TEXT,
user_id UUID,
PRIMARY KEY (video_id)
);
CREATE TABLE videos_by_title_year (
title TEXT,
added_year INT,
added_date TIMESTAMP,
description TEXT,
user_id UUID,
video_id UUID,
PRIMARY KEY ((title, added_year))
);
创建新视频时,必须将其添加到这两个表中。 video_id需要在两者中相同。在应用程序方面,您将以编程方式解决此问题。
我正在为测试环境设置数据编写一些 cql dml 脚本。所以基本上是一长串INSERT 声明。
INSERT (video_id, ... , user_id) INTO videos VALUES (uuid(), ...);
INSERT (title, ... , video_id) INTO videos_by_title_year VALUES ('Forrest Gump', ... , uuid());
在这种情况下,video_id 会有所不同。我可以以某种方式在 cql 脚本中重用生成的UUID 吗?还是像下面这样在我的脚本中手动设置 id 的唯一可能解决方案?
INSERT (video_id, ... , user_id) INTO videos VALUES (7bd6e4ae-0ef2-11e5-9de3-8438355b7e3a, ...);
INSERT (title, ... , video_id) INTO videos_by_title_year VALUES ('Forrest Gump', ... , 7bd6e4ae-0ef2-11e5-9de3-8438355b7e3a);
【问题讨论】:
-
你使用的是哪个 cassandra 版本?
-
目前我卡在 2.1
-
你能在应用程序端管理 UUID 吗?喜欢:生成一个UUID,然后插入视频,然后用相同的uuid插入videos_by_title_year
-
这个问题有多种解决方案,但我希望能够只运行一个脚本来填充数据库。我可以在应用程序端管理 UUID,但我必须编写该代码。或者我必须完全开发我的应用程序并使用该应用程序使 de db 处于首选状态,而不是导出到 *.csv。
标签: scripting cassandra cql dml