Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
Collections 卡桑德拉墓碑集_Collections_Cassandra - Fatal编程技术网

Collections 卡桑德拉墓碑集

Collections 卡桑德拉墓碑集,collections,cassandra,Collections,Cassandra,我已经创建了一个包含集合的表。插入一条记录并获取它的sstabledump,并查看sstable中有它的范围墓碑。这个墓碑曾经被移除过吗?另外,当我在唯一的sstable上运行sstablemetadata时,它将“估计的可删除墓碑”显示为0.5”,类似地,它显示了一条记录,其中历元时间作为插入时间-“估计的墓碑删除时间:1548384720:1”“。这是否意味着,当我在具有集合的表上执行sstablemetadata时,由于集合/列表范围的逻辑删除,估计的可删除逻辑删除比率和删除时间值不是真实

我已经创建了一个包含集合的表。插入一条记录并获取它的sstabledump,并查看sstable中有它的范围墓碑。这个墓碑曾经被移除过吗?另外,当我在唯一的sstable上运行sstablemetadata时,它将“估计的可删除墓碑”显示为0.5”,类似地,它显示了一条记录,其中历元时间作为插入时间-“估计的墓碑删除时间:1548384720:1”“。这是否意味着,当我在具有集合的表上执行sstablemetadata时,由于集合/列表范围的逻辑删除,估计的可删除逻辑删除比率和删除时间值不是真实且可靠的值

CREATE TABLE ks.nmtest (
    reservation_id text,
    order_id text,
    c1 int,
    order_details map<text, text>,
    PRIMARY KEY (reservation_id, order_id)
) WITH CLUSTERING ORDER BY (order_id ASC)

user@cqlsh:ks> insert into nmtest (reservation_id , order_id , c1, order_details ) values('3','3',3,{'key':'value'});
user@cqlsh:ks> select * from nmtest ;
 reservation_id | order_id | c1 | order_details
----------------+----------+----+------------------
              3 |        3 |  3 | {'key': 'value'}
(1 rows)

[root@localhost nmtest-e1302500201d11e983bb693c02c04c62]# sstabledump mc-5-big-Data.db 
WARN  02:52:19,596 memtable_cleanup_threshold has been deprecated and should be removed from cassandra.yaml
[
  {
    "partition" : {
      "key" : [ "3" ],
      "position" : 0
    },
    "rows" : [
      {
        "type" : "row",
        "position" : 41,
        "clustering" : [ "3" ],
        "liveness_info" : { "tstamp" : "2019-01-25T02:51:13.574409Z" },
        "cells" : [
          { "name" : "c1", "value" : 3 },
          { "name" : "order_details", "deletion_info" : { "marked_deleted" : "2019-01-25T02:51:13.574408Z", "local_delete_time" : "2019-01-25T02:51:13Z" } },
          { "name" : "order_details", "path" : [ "key" ], "value" : "value" }
        ]
      }
    ]
  }

SSTable: /data/data/ks/nmtest-e1302500201d11e983bb693c02c04c62/mc-5-big
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Bloom Filter FP chance: 0.010000
Minimum timestamp: 1548384673574408
Maximum timestamp: 1548384673574409
SSTable min local deletion time: 1548384673
SSTable max local deletion time: 2147483647
Compressor: org.apache.cassandra.io.compress.LZ4Compressor
Compression ratio: 1.0714285714285714
TTL min: 0
TTL max: 0
First token: -155496620801056360 (key=3)
Last token: -155496620801056360 (key=3)
minClustringValues: [3]
maxClustringValues: [3]
Estimated droppable tombstones: 0.5
SSTable Level: 0
Repaired at: 0
Replay positions covered: {CommitLogPosition(segmentId=1548382769966, position=6243201)=CommitLogPosition(segmentId=1548382769966, position=6433666)}
totalColumnsSet: 2
totalRows: 1
Estimated tombstone drop times:
1548384720:         1

sstablemetadata不包含不在sstable中的关于表的信息,因为它不能保证在运行Cassandra的系统上运行,即使知道如何从中提取架构信息非常复杂

由于
gc\u grace\u seconds
是一个表参数,不在元数据中,因此它默认假定
0
gc grace,因此该直方图中列出的可拖放时间在默认情况下更像是墓碑创建时间的直方图。如果您知道您的gc grace,您可以将其作为
-g
参数添加到sstablemetadata调用中。比如:

sstablemetadata -g 864000 mc-5-big-Data.db
有关工具输出的信息,请参见


对于收藏品来说,它只是一个普通范围的墓碑,以及它所需要的一切。它们用于防止重写多单元集合的值时要求先读后写。

逻辑删除阈值是否取决于sstablemetadata阈值?如果是这样的话,那么对于具有集合的表,这不是一个真正的阈值,对吧?出于某种原因,我看到了与和w/o gc_grace_seconds相同的值<代码>[root@ip-xxx xxx xxx xxx nmtest-e1302500201d11e983bb693c02c04c62]#sstablemetadata mc-11-big-Data.db | grep“预计墓碑删除次数”-A3预计墓碑删除次数:1548577440:1计数行大小单元计数[root@ip-xxx xxx xxx nmtest-e1302500201d11e983bb693c02c04c62]#sstablemetadata--gc_grace_seconds 86400 mc-11-big-Data.db|grep“估计墓碑删除时间”-A4估计的逻辑删除时间:1548577440:1计数行大小单元格计数我进行了主要压缩,所有逻辑删除都消失了,现在当我运行上述sstablemetadata命令时,它不会显示任何逻辑删除。这是否意味着在多个SSTABLE中存在重叠记录之前,无法依赖此命令的输出?可能适用于LCS表,而不适用于大小压缩,因为它们跨越多个SSS表。查看元数据中保存的墓碑直方图是墓碑创建日期的直接柱状图。只需获取直方图并基于now+gc\U grace进行切片,即可计算丢弃时间。元数据查看器的输出只是显示TombstoneHistogram。如果您想知道墓碑的可购买时间,请将10天或您的gc宽限期添加到该输出中。该工具只打印文件中的内容,但应该重命名为估计的墓碑时间,这是否意味着在多个SSTable中出现重叠记录之前,无法依赖此命令的输出?我不知道您的意思。sstables重叠可以防止清除墓碑,除非这两个sstables都参与到压缩中——除此之外,这是无关的。
sstablemetadata -g 864000 mc-5-big-Data.db