我在Cassandra中有两个结构相同的柱族:
CREATE TABLE keyspace.table (
id bigint,
firstname text,
lastname text,
countryId bigint,
cityId bigint,
solr_query text,
PRIMARY KEY (id)
) ;
在第二个表中,行数是第一个表的三倍。例如,在第一个表中,我会有一行(firstname,lastname,countryId):
John, Doe, 100, 8
在第二个表中,我将有行(firstname、lastname、countryId):
John, Doe, 222, 1
John, Doe, 100, 8
John, Doe, 333, 9
我只需要使用集合创建一个列系列,这样我就只有一行与主 countryId (100) 的 John Doe,而其他列的集合。我添加了一个用户定义的data_type:
CREATE TYPE hints_info (
countryId bigint,
cityId bigint
);
并在我的第一列系列中添加了一个集合:
ALTER TABLE table1 ADD hints map<int, frozen <hints_info>>;
因此,对于上面的示例,我的行看起来像这样:
John, Doe, 100, "{1: {countryId :222, cityId :1}, 2: {countryId :333, cityId :9}}"
我能从卡珊德拉那里得到这个吗?利用CQL?要从第一列族中取出每一行,将其与第二列族中的一行进行匹配,并在集合中添加第一列族中不存在的缺失信息?我所有的数据都是在Cassandra中导入的。例如,如果我使用C#,用第二个列族的数据更新现有列族的集合的语法是什么?
谢谢大家!
Cassandra不支持从一个表读取并插入另一个表的情况。CQL适合简单的读/写操作,并且不像关系世界那样具有复杂的查询支持。
我建议用所需的结构制作第三个表,并从两个原始表中缓慢复制数据,直到您满意为止。这样做的原因是,您可以让应用程序使用现有的表结构,在后台进行迁移,如果出现问题,您可以在原始表中保存html" target="_blank">数据。在您满意之后,只需更改应用程序逻辑以从新表中读取。
至于迁移,您有几种选择:
选项2。因为您必须安装并理解全新的工具(Spark ),所以我们为这种小型ETL任务创建了C#、Java和Scala的迁移工具。备选方案1。是最简单的,如果你的代码中有做后台工作的基础设施,那就去做吧。
我阅读了cassandra数据建模,除了非规范化数据可能会发生变化之外,一切都很清楚。我如何同步它?当用户电子邮件更改时,更新的方法是什么: < code>groupname是组的一部分,数据模型中的用户可能不知道任何组,因此在用户更改后无法更新电子邮件。 下面描述的解决方案是否合适? 向用户模型中添加一列(类型
我目前正在进行一个新的项目,并选择了Cassandra作为我们的数据存储。我有一个用例,我存储材料的价格,为了实现它,我创建了用户定义类型(UDT)列表。但不幸的是,在使用datastax驱动程序进行反序列化时。在查询所需数据之后,我发现list对象为null,而在数据库中有它的值。这是Cassandra java驱动程序的当前限制还是我遗漏了什么? 这就是我的UDT的样子: 在Cassandra
我试图在Cassandra CLI版本1.1.6中创建一个列族,我不确定如何将主键指定为MovieID。
我正在用现有的卡桑德拉数据库进行一个项目。架构如下所示: 我的问题是:在json字符串中存储数据有什么好处吗?它会节省一些空间吗? 到目前为止,我只发现了缺点: 您不能(轻松)在运行时添加/删除列,因为应用程序可以覆盖 json 字符串列。 解析 json 字符串目前是性能方面的瓶颈。