我只是在为一个需要本地化支持的新项目建模PostgreSQL数据库。我想知道 hstore 是否可能是本地化某些数据字段的好方法。
举例来说:让我们用一个包含字段post_title
和post_content
的博客帖子的简化表。使用键-值类型 hstore,可以向这些字段添加几个翻译,并将语言代码标识为键:
id | post_title (hstore) | post_content (hstore)
---|-----------------------|------------------------------
1 | "en" => "Hello World",| "en" => "Content in english",
| "de" => "Hallo Welt" | "de" => "Inhalt auf deutsch"
---|-----------------------|------------------------------
2 | ... | ...
字符串
有没有人在这方面有经验?它似乎是非常灵活和易于使用,但也许我错过了一些显着的缺点在这里?
2条答案
按热度按时间zed5wv101#
我在一个项目中也使用了这种方法,我相信这是一个很好的决定,因为我可以很容易地向我的项目中添加一种新的语言,而不需要编写代码或更新数据库模式
我也可以很容易地添加回退到这样的查询:
字符串
另外,还有很多强大的sql函数供您使用。
rjjhvcjd2#
是的,这是一个非常好的方法,可以非常有效地使用索引进行搜索。不久前,我研究了如何为产品数据库创建一个易于搜索的多语言数据模型。最后得到了这样的schema:
x1c 0d1x的数据
缺点是必须为每种支持的语言创建索引
字符串
但结果是你得到了一个非常有效的执行计划:
型
它甚至可以很容易地与Java JPA/Hibernate中的ORM集成。
您可以查看我关于该主题的完整文章,其中包含以下代码示例:https://walczak.it/blog/performant-internationalization-in-postgresql-hibernate-jpa-hstore-column-with-translations