我是Cassandra的新手,我们已经开始使用它了。听起来不错。
发现paxos
中的表System
使用的空间比我们的数据多。我们将把所有数据从SQL转移到Cassandra,这将是2 TB左右。
这个表会以同样的方式增长吗?如果是的话,如何减少它或者截断它是否安全?
System.paxos::::
Table: paxos
Space used (live): 2144801786
Space used (total): 2144801786
Exdata.data::::
Table: trnsfr
Space used (live): 1742847712
Space used (total): 1742847712
答案 0 :(得分:0)
Cassandra使用system.paxos
表进行轻量级交易(IF条款,IF NOT EXISTS
)
具有线性化一致性的轻量级事务确保事务隔离级别类似于RDBMS提供的可序列化级别。它们也称为比较和设置交易
Cassandra通过扩展Paxos共识协议来实现轻量级事务,该协议基于基于仲裁的算法。使用此协议,分布式系统可以就提议的数据添加/修改达成一致,而无需主数据库或两阶段提交。
如果在CQL语句中使用IF子句,则将INSERT视为轻量级事务。
例如:
INSERT INTO customer_account (customerID, customer_email)
VALUES ('LauraS', 'lauras@gmail.com')
IF NOT EXISTS;
//or
UPDATE customer_account
SET customer_email='laurass@gmail.com'
IF customerID='LauraS';
以上两个陈述都是轻量级交易。对于这两种说法,Cassandra使用Paxos共识协议确保可线性化的一致性。它在内部使用系统system.paxos
表。
注意: Paxos确保以四次往返为代价的线性化一致性。这听起来像是一个高成本 - 可能太高,如果你有一个罕见的应用程序需要每个操作可线性化。但是对于大多数应用程序来说,只有极少数操作需要线性化,这是一个很好的工具,可以增加他们迄今为止提供的强大/最终的一致性。
资料来源:
https://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0
http://docs.datastax.com/en/cassandra/2.1/cassandra/dml/dml_ltwt_transaction_c.html