簡體   English   中英

如何刪除Cassandra Keyspace中的所有行

[英]How to delete all rows in Cassandra Keyspace

我需要刪除 Cassandra 中的所有行,但使用 Amazon Keyspace 無法執行TRUNCATE tbl_name因為尚不支持 TRUNCATE api。

現在我想到的幾個想法有點棘手:

方案一

  • 選擇所有行
  • 循環所有行並刪除(逐行或批量刪除)

方案B

  • DROP TABLE
  • 使用舊表的結構CREATE TABLE

你有什么想法讓這個過程保持最簡單嗎?

提前交易

如果不需要數據。 選項 B - 刪除表並重新創建。 您可以使用自定義表屬性在 create table 語句中傳遞容量。

CREATE TABLE my_keyspace.my_table (
     id text,
     division text,
     project text,
     role text,
     manager_id text,
     PRIMARY KEY (id,division))
      WITH CUSTOM_PROPERTIES=
              {'capacity_mode':
                     {'throughput_mode'       : 'PROVISIONED', 
                      'read_capacity_units'   : 10, 
                      'write_capacity_units'  : 20},
               'point_in_time_recovery': {'status': 'enabled'}}
            AND TAGS={'pii' :'true', 
                      'prod':'true'
                     };

選項 C。如果您需要數據,您還可以利用按需容量模式,即按請求付費模式。 無需請求,您只需支付存儲費用。 您可以每天更改一次模式。

ALTER TABLE my_keyspace.my_table
WITH CUSTOM_PROPERTIES=
              {'capacity_mode': {'throughput_mode': 'PAY_PER_REQUEST'}} 

在沒有 TRUNCATE 的情況下,解決方案 B 應該沒問題。 在 Cassandra 的舊版本(2.1 之前的版本)中,重新創建同名表是一個問題。 請參閱文章Datastax 常見問題博客 但此后問題已通過CASSANDRA-5202解決。

如果不再需要表中的數據,最好刪除該表並重新創建它。 此外,如果表包含大量數據,這將是非常繁瑣的任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM