我想使用 Postgres(CloudSQL 中的 11)作为高效的键值存储。我有大约 200GB 的字典(平均大小为 10kB,结构可以不同并且可以嵌套)。我正在考虑利用改进的哈希索引。这是架构:
\n\n CREATE EXTENSION IF NOT EXISTS "uuid-ossp";\n\n CREATE TABLE IF NOT EXISTS key_val (\n id uuid DEFAULT uuid_generate_v4(),\n value jsonb,\n EXCLUDE using hash (id with =)\n );\n\n CREATE INDEX IF NOT EXISTS idx_key_val ON key_val USING hash (id);\n
Run Code Online (Sandbox Code Playgroud)\n\n获取、更新和插入非常简单,但我不知道如何实现高效的更新插入。
\n\nINSERT INTO key_val VALUES ($1, $2) ON CONFLICT ON CONSTRAINT key_val_id_excl DO UPDATE SET value = ($2)\n
Run Code Online (Sandbox Code Playgroud)\n\n结果是WrongObjectTypeError ON CONFLICT DO UPDATE not supported with exclusion constraints
可能的解决方案:
\n\n …