我有一项任务是为我的时间序列cassandra db创建一个元数据表。此元数据表希望存储超过500个pdf文件。每个pdf文件包含5-10 MB数据。
我曾想过将它们存储为Blob。卡桑德拉能够做到吗?
答案 0 :(得分:1)
Cassandra并不适合这种blob,至少datastax建议将它们保持在小于1MB以获得最佳性能。
但是 - 试试自己并做一些测试。当分区变大并且存在更新时会出现问题,因此协调员在加入分区时需要做很多工作。
一个简单的方法是,将blob作为uuid键值对分开存储在自己的表中,并仅将uuid存储在您的数据中。更新blob时 - 使用新的uuid插入新的blob并更新您的记录。有了这个技巧,你就永远不会有不同的(也许是大的)blob版本,并且不会受到性能的影响。我想我读到沃尔玛成功地使用了部分大约10MB以及更小的图像。
试试吧 - 如果你已经拥有Cassandra了。
如果没有,你可能会看看Ceph或类似的东西 - 但这需要它自己的部署。
答案 1 :(得分:0)
您可以序列化文件并将其存储为blob。在读取文件时,成本是反序列化。有许多高效的序列化/反序列化库可以有效地完成这项工作。另一种方法是做@jasim waheed所建议的。但是,这将导致网络io。因此,您可以决定在哪里支付费用。