postgresql EF Core + Postgres - Hashset?

tktrz96b  于 2023-05-06  发布在  PostgreSQL
关注(0)|答案(1)|浏览(97)

我目前正在将一些代码从Redis翻译到Postgres,有一件事我不确定如何处理集/散列集。
我需要提取“标签”并将它们存储为某种形式的集合。唯一标签应当在每组中仅存在一次。
对于Redis,这是内置的,有集合类型。但是对于Postgres,我可以在这里使用什么?将每个标记作为行/记录的表,然后不断地检查该标记是否存在,如果不插入它,对于这个特定的用例来说太慢了。用例是服务可观察性/跟踪/度量/日志,因此将有大量数据以高频率到达
我有什么选择?
当然,我可以在内存中保留一个缓存,并忽略那里现有的标记。以避免检查数据库。
但我希望在Postgres中有一些很好的内置方法来处理这个问题。例如某种集合状的table。
如果有与EF Core兼容的东西就更好了。

new9mtju

new9mtju1#

如果我理解正确的话,你需要的是关系数据库中的一个 * 唯一键 *。这将在重复标记的情况下引发异常(当尝试插入已经存在的标记时)
如果你使用的是Nhibernate,它会为你处理这个问题,但我认为EF也会。
PostgreSQL也提供了upsert的概念。标签:https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-upsert/
如果你不能使用EF自定义插入,你可以创建一个使用Upsert的StoredProc并从EF调用它。

相关问题