Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 卡桑德拉表格建模_Cassandra - Fatal编程技术网

Cassandra 卡桑德拉表格建模

Cassandra 卡桑德拉表格建模,cassandra,Cassandra,假设一个表有数千列,其中行记录中的大多数数据为空。其中一列是一个ID,这个ID是预先知道的 select id,SomeRandomColumn from LotsOfColumnsTable where id = 92e72b9e-7507-4c83-9207-c357df57b318; SomeRandomColumn是数千列中的一列,在大多数情况下是唯一包含数据的列。SomeRandomColumn不是包含数据的列 是否有一个CQL查询可以执行类似的操作 select {Only Co

假设一个表有数千列,其中行记录中的大多数数据为空。其中一列是一个ID,这个ID是预先知道的

select id,SomeRandomColumn 
from LotsOfColumnsTable
where id = 92e72b9e-7507-4c83-9207-c357df57b318;
SomeRandomColumn是数千列中的一列,在大多数情况下是唯一包含数据的列。SomeRandomColumn不是包含数据的列

  • 是否有一个CQL查询可以执行类似的操作

    select {Only Columns with data}  
    from LotsOfColumnsTable  
    where id = 92e72b9e-7507-4c83-9207-c357df57b318;
    
  • 我在考虑加入一个“提示”列,指向包含数据的列,但这感觉是错误的,除非有一个CQL查询看起来像这样,只有一个查询

    select ColumnHint.{DataColumnName}
    from LotsOfColumnsTable  
    where id = 92e72b9e-7507-4c83-9207-c357df57b318;
    
  • 在MongoDB中,我只有一个集合,而我得到的文档将有一个描述数据的“Type”属性。所以,也许我真正的问题是,我如何在卡桑德拉复制我可以用蒙多布做的事情。到目前为止,我的Cassandra之旅是为每个独特的文档创建UDT,然后修改表以将这个新UDT添加为列。我的起始表如下所示,其中ColumnDataName是提示

    CREATE TABLE IF NOT EXISTS WideProductInstance (
       Id uuid,
       ColumnDataName text
       PRIMARY KEY (Id)
    );
    
    谢谢

    是否有一个CQL查询可以执行类似的操作

    选择{仅包含数据的列}

    来自LotsOfColumnsTable

    其中id=92e72b9e-7507-4c83-9207-c357df57b318

    不,你不能那样做。这很容易解释。为了能够知道列包含数据,Cassandra需要读取它。如果它必须读取数据,因为工作已经花费在磁盘上,它只会将这些数据返回给客户机

    如果Cassandra能够过滤出null列,您将得到的唯一节省是在网络带宽上

    我在考虑加入一个“提示”列,指向包含数据的列,但这感觉是错误的,除非有一个CQL查询看起来像这样,只有一个查询

    您的想法就像在另一个表中存储一个包含实际数据且不为空的所有列的列表。这听起来像是一个不好的连接,不受支持。如果您需要在阅读原始表格之前阅读此参考表格,那么您必须在许多地方阅读,而且这将非常昂贵

    所以,也许我真正的问题是,我如何在卡桑德拉复制我可以用蒙多布做的事情

    不要试图将相同的功能从Mongo复制到Cassandra。这两个数据库具有根本不同的体系结构。你要做的是对你的功能用例进行推理。“我想如何从Cassandra那里获取数据?”从这一点出发,设计一个合适的数据模型。Cassandra数据模型是通过查询设计的


    最好的建议是在

    观看一些Cassandra数据模型视频(它是免费的)。如果一行中有一个空列,则该列为空。您可以执行SELECT*。Cassandra将只返回现有数据。我不明白你为什么需要更多?