Cassandra
Cassandra - 保存文件
我是 Cassandra 的新手,甚至更多 - 對於 MariaDB 或 Oracle 等習慣性 RDMS 系統,我從來沒有這樣的任務。
那麼,如何將文件儲存到 Cassandra 的表中呢?最好使用 Python 驅動程序,但也很少使用原始 CQL(cqlengine?)的範例。
我們有大量小於 10MB 的小文件,目前儲存在 Cassandra 中,我想了解它是如何完成的。
例如 - 使用下一個表:
cqlsh:testkeyspace> desc table files_uuids; CREATE TABLE files_uuids ( id uuid, file blob, PRIMARY KEY ((id)) ) WITH bloom_filter_fp_chance=0.010000 AND caching='KEYS_ONLY' AND comment='' AND dclocal_read_repair_chance=0.100000 AND gc_grace_seconds=864000 AND index_interval=128 AND read_repair_chance=0.000000 AND replicate_on_write='true' AND populate_io_cache_on_flush='false' AND default_time_to_live=0 AND speculative_retry='99.0PERCENTILE' AND memtable_flush_period_in_ms=0 AND compaction={'class': 'SizeTieredCompactionStrategy'} AND compression={'sstable_compression': 'LZ4Compressor'};
您(和其他未來的讀者)也可以嘗試
COPY
使用cqlsh
.例如,如果您有一個名為“filedata.csv”的本地文件,其中包含例如:
123-45-678-9,some file data here abc-de-fgh-1,some other file data here
其中 CSV 欄位對應於表中的列
file_uuids
,那麼您應該能夠使用:cqlsh> COPY file_uuids FROM 'filedata.csv';
希望這可以幫助!
接下來是我的實施。
創建用於數據的表:
cqlsh:testkeyspace> CREATE TABLE files_uuids (id uuid, file blob, PRIMARY KEY ((id)));
hello
接下來 - 一些使用 Python Cassandra 驅動程序上傳文件的 Python 程式碼:>>> from cassandra.cluster import Cluster >>> cluster = Cluster() >>> session = cluster.connect('testkeyspace') >>> import os, uuid >>> file = os.path.join(os.getcwd(), 'hello') >>> fid = uuid.uuid4() >>> with open(file, 'rb') as f: ... data = f.read() ... res = bytearray(data) ... session.execute("INSERT INTO files_uuids (id, file) VALUES (%s, %s)", (fid, res)) ... >>>
檢查:
cqlsh:testkeyspace> select id from files_uuids; id -------------------------------------- 83dc3905-437c-4bd7-896f-d092827f01dd
file
以及來自該領域的確切數據:cqlsh:testkeyspace> select file from files_uuids where id=83dc3905-437c-4bd7-896f-d092827f01dd; ... e35005f6564617461005f66696e69005f5f6c6962635f73746172745f6d61696e4040474c4942435f322e322e35005f5f646174615f7374617274005f5f676d6f6e5f73746172745f5f005f5f64736f5f68616e646c65005f494f5f737464696e5f75736564005f5f6c6962635f6373755f696e6974005f656e64005f7374617274005f5f6273735f7374617274006d61696e005f4a765f5265676973746572436c6173736573005f5f544d435f454e445f5f005f49544d5f7265676973746572544d436c6f6e655461626c65005f696e697400 (1 rows)