【发布时间】:2018-02-09 03:19:18
【问题描述】:
我知道 Redis 允许您以优化的方式存储复杂的数据结构。但我想知道是否有任何数据库或设计模式允许您指定数据库块的优化版本。
例如,要通过文本快速查找内容,您必须使用 solr 进行搜索,这是它自己的数据库,专门用于优化通过字符串查找。
另一个例子是,如果您想为用户返回一个易于导航的角色对象,您可能希望这样:
var user = { roles: { admin: true, principal: true, ... } }
但在数据库中,您可能有一个 roles 表和一个 users 表,因此您进行连接并取回它们并最终在您的代码中手动构建该数据结构。
问题是,是否有任何东西可以让您直接在数据库中指定数据的数据结构/形式,以便更快地查找。数据库允许您拥有索引,这是一种原始解决方案。想知道是否有更复杂的例子。例如,检查项目是否有标签的好方法是:
user.tags[tagName]
这意味着你的标签是这样的:
{ tagA: true, tagB: true, ... }
但您可能会像这样从数据库中获取它们:
[ { name: tagA }, { name: tagB } ]
所以想知道是否有办法告诉数据库,以这种“x”格式创建数据集的“优化版本”,而不必在应用程序层手动执行此操作。想知道是否有任何工具或设计模式。
【问题讨论】:
-
你的意思是materialized views?
-
您要解决的问题是什么?
标签: database optimization design-patterns