【问题标题】:Cassandra migrate int to bigintCassandra 将 int 迁移到 bigint
【发布时间】:2017-02-19 18:25:09
【问题描述】:

在 Cassandra 中将 int 迁移到 bigint 的最简单方法是什么?我想创建一个 bigint 类型的新列,然后运行一个脚本来基本上设置该列的值 = 所有行的 int 列的值,然后删除原始列并重命名新列。但是,我想知道是否有人有更好的选择,因为这种方法不太适合我。

【问题讨论】:

    标签: cassandra cql


    【解决方案1】:

    您可以ALTER 您的表并将您的int 列更改为varint 类型。检查the documentation 关于ALTER TABLEdata types compatibility 矩阵。

    唯一的另一种选择就是您所说的:添加一个新列并逐行填充它。删除第一列可以完全是可选的:如果您在执行插入时不分配值,所有内容都将保持原样,并且新记录不会占用空间。

    【讨论】:

    • 我正在查看 varint 类型,但我无法弄清楚它与 bigint 之间的确切区别。我想既然 varint 映射到 java BigInteger,那应该就足够了,因为我真正关心的是它足够大,而且我认为 BigInteger 在技术上没有上限。就Cassandra而言,在空间等方面还有其他区别吗?
    【解决方案2】:

    您可以使用varint ALTER 将 bigint 存储在 cassandra 中。看例子-

    cassandra@cqlsh:demo> CREATE TABLE int_test (id int, name text, primary key(id));
    cassandra@cqlsh:demo> SELECT * FROM int_test;
    
     id | name
    ----+------
    
    (0 rows)
    cassandra@cqlsh:demo> INSERT INTO int_test (id, name) VALUES ( 215478936541111, 'abc');
    cassandra@cqlsh:demo> SELECT * FROM int_test ;
    
     id                  | name
    ---------------------+--------- 
         215478936541111 |  abc
    
    (1 rows)
    cassandra@cqlsh:demo> ALTER TABLE demo.int_test ALTER id TYPE varint;
    cassandra@cqlsh:demo> INSERT INTO int_test (id, name) VALUES ( 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 'abcd');
    cassandra@cqlsh:demo> SELECT * FROM int_test ;
    
     id                                                                                                                           | name
    ------------------------------------------------------------------------------------------------------------------------------+---------
                                                                                                                  215478936541111 |  abc                                                                                                     
     9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 | abcd
    
    (2 rows)
    cassandra@cqlsh:demo>
    

    【讨论】:

      猜你喜欢
      • 2015-11-14
      • 2020-02-13
      • 2013-11-28
      • 2018-08-04
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 2023-03-10
      • 2016-06-20
      相关资源
      最近更新 更多