Database design 将RDBMS迁移到Cassandra

Database design 将RDBMS迁移到Cassandra,database-design,cassandra,database-migration,rdbms,nosql,Database Design,Cassandra,Database Migration,Rdbms,Nosql,我有一个RDBMS数据库,其中包含以下表格: 机场(iataPK,机场、城市、州、国家、拉丁美洲、拉丁美洲) 取消\u原因(cod\u取消主键,说明) 制造商(id\u制造商主键,制造商名称) 型号(id\u型号主键,型号名称,id\u制造商FK) 航空公司(航空公司代码主键,说明) 飞机类型(id\u AirplaneTypePK,飞机类型) 发动机类型(id\u发动机主键,发动机类型) 飞机类型(id\u飞机PK,飞机类型) 飞机(尾号PK、id\U型号FK、id\U飞机FK、航空公司代码F

我有一个RDBMS数据库,其中包含以下表格:

机场(iataPK,机场、城市、州、国家、拉丁美洲、拉丁美洲)

取消\u原因(cod\u取消主键,说明)

制造商(id\u制造商主键,制造商名称)

型号(id\u型号主键,型号名称,id\u制造商FK)

航空公司(航空公司代码主键,说明)

飞机类型(id\u AirplaneTypePK,飞机类型)

发动机类型(id\u发动机主键,发动机类型)

飞机类型(id\u飞机PK,飞机类型)

飞机(尾号PK、id\U型号FK、id\U飞机FK、航空公司代码FK、id\U发动机FK、发行日期、状态、年份)

航班(id\u航班PK、cod\u取消FK、尾号FK、iata\u始发地FK、iata\u目的地FK、年、月、月日、周日、离港时间、离港时间、到达时间、离港时间、飞行次数、到达时间、离港时间、起飞时间、离港距离、滑行时间、起飞时间、取消)(已改道)

注意:PK-主键;FK-外键

我正在对RDBMS和Cassandra数据库进行比较研究。我的目标是将此数据库迁移到Cassandra,并在两者中运行一些查询,以便在类似情况下比较两者的性能

有谁能告诉我最好的方法吗?我应该如何用Cassandra对数据库建模?

Cassandra查询语言(CQL)3.3版提供了创建几乎完全相同的关系表副本的语义。这不是最规范的方法,但它肯定可以帮助您解决基于注释的紧急情况

因此,使用CQL您可以创建:

CREATE TABLE airport( id text PRIMARY KEY, airport text,  
  city text, state text, country text, lat float, long float);
然后继续创建其他类似的表

要将csv加载到表中,请使用:

COPY airport (id, airport, city, state, country, lat, long)  
FROM 'airport.csv' WITH DELIMITER = ';' AND HEADER = TRUE;
在Cassandra中,您可能不应该使用UUID并在加载值时生成这些UUID

在我看来,飞机可以非标准化,所以我会对它进行建模 作为一个条目,其中,飞机是一个超级列,引擎和类型是列。使用CQL 3.3,您可以通过这种方式建模,也可以通过为每个实体创建传统表的方式建模

请参阅此以了解详细信息

注意事项:

关于关系,您可能需要放弃基于主键(PK)、外键(FK)的关系的概念概念和相关的硬约束。要将数据迁移到Cassandra NoSQL,您将不依赖硬链接,而是依赖于这些实体被链接的信任。与从强类型语言迁移到弱类型语言一样,您将经历的唯一损失将是数据库链接。 你仍然可以拥有你的ID,你仍然可以维护基于ID的链接,但是不会有数据库强制的完整性约束。你也许可以放弃自动生成的ID。 以下是一些其他非常适用的阅读材料:

  • 来自Datastax的CQL 3.3手册

  • 本文描述了迁移关系模式设计的实践,并介绍了Cassandra中的一些通用设计概念

  • -从RDBMS到NoSQL/Cassandra

  • Datastax是卡桑德拉背后的一家商业公司,拥有大量的教育资源和实用建议

  • Cassandra查询语言(CQL)3.3版为创建几乎完全相同的关系表副本提供了语义。这不是最规范的方法,但它确实可以帮助您解决基于注释的紧急情况

    因此,使用CQL您可以创建:

    CREATE TABLE airport( id text PRIMARY KEY, airport text,  
      city text, state text, country text, lat float, long float);
    
    然后继续创建其他类似的表

    要将csv加载到表中,请使用:

    COPY airport (id, airport, city, state, country, lat, long)  
    FROM 'airport.csv' WITH DELIMITER = ';' AND HEADER = TRUE;
    
    在Cassandra中,您可能不应该使用UUID并在加载值时生成这些UUID

    在我看来,飞机可以非标准化,所以我会对它进行建模 作为一个条目,其中,飞机是一个超级列,引擎和类型是列。使用CQL 3.3,您可以通过这种方式建模,也可以通过为每个实体创建传统表的方式建模

    请参阅此以了解详细信息

    注意事项:

    关于关系,您可能需要放弃基于主键(PK)、外键(FK)的关系的概念概念和相关的硬约束。要将数据迁移到Cassandra NoSQL,您将不依赖硬链接,而是依赖于这些实体被链接的信任。与从强类型语言迁移到弱类型语言一样,您将经历的唯一损失将是数据库链接。 你仍然可以拥有你的ID,你仍然可以维护基于ID的链接,但是不会有数据库强制的完整性约束。你也许可以放弃自动生成的ID。 以下是一些其他非常适用的阅读材料:

  • 来自Datastax的CQL 3.3手册

  • 本文描述了迁移关系模式设计的实践,并介绍了Cassandra中的一些通用设计概念

  • -从RDBMS到NoSQL/Cassandra

  • Datastax是卡桑德拉背后的一家商业公司,拥有大量的教育资源和实用建议


  • 为什么你要强调PK/FK关系?在Cassandra中这对你很重要吗?你的测试用例/基准是什么?PK/FK关系与关系模型相关。我需要迁移这个sche