將視頻、音頻等大文件直接作為 KV 的 Value 存儲存在多重缺陷:
// 寫入流程
String objectKey = "video/" + UUID.randomUUID() + ".mp4";
ossClient.putObject(bucket, objectKey, videoFile);
kvStore.set("video:" + videoId, objectKey); // Value 僅存儲路徑/Key
// 讀取流程
String objectKey = kvStore.get("video:" + videoId);
InputStream stream = ossClient.getObject(bucket, objectKey).getObjectContent();
| 方案 | KV 存大文件 | 對象存儲 + KV 索引 |
|---|---|---|
| 擴展性 | 差,單值不可分片 | 優,對象存儲天然分布式 |
| 性能 | 佔用大量內存/帶寬 | 流式傳輸,不阻塞 KV 實例 |
| 成本 | 高(內存/SSD 昂貴) | 低(對象存儲極廉價) |
| 功能 | 無斷點續傳、CDN | 原生支持簽名URL、CDN加速 |
KV 數據庫擅長**元數據、會話、計數器、索引**等小值高頻場景。大文件請交給專業的對象存儲(S3、OSS、MinIO、HDFS),KV 僅保存定位信息(Key/路徑/簽名URL),實現職責分離與架構彈性。