【发布时间】:2014-12-05 23:48:37
【问题描述】:
我正在考虑构建一个图像数据库,该数据库由具有 UUID 字段和其他图像属性(例如 EXIF 数据)的节点组成。我将始终通过具有索引的 UUID 字段搜索图像节点。
匹配(img:图像{id:“ea191df3-f5e5-4a29-ae93-f850866f90d1”})返回img;
在 Neo4j 中这样做有什么性能劣势吗?
【问题讨论】:
我正在考虑构建一个图像数据库,该数据库由具有 UUID 字段和其他图像属性(例如 EXIF 数据)的节点组成。我将始终通过具有索引的 UUID 字段搜索图像节点。
匹配(img:图像{id:“ea191df3-f5e5-4a29-ae93-f850866f90d1”})返回img;
在 Neo4j 中这样做有什么性能劣势吗?
【问题讨论】:
假设您通过 CREATE CONSTRAINT ON (image:Image) ASSERT image.id IS UNIQUE 创建了唯一性约束,那么您提出的建议非常有意义。
这样的约束不仅强制了id的唯一性,还自动创建了id索引。
每次添加Image(或更改图像id)时都会产生更新索引的成本,但除非您的更新比搜索次数多,否则搜索时会节省成本一张图片的成本应该远远超过这个成本。
【讨论】:
CREATE CONSTRAINT ON (image:Image) ASEERT image.id IS UNIQUE
assert 中发现了我的错字。 ;-)