如何按数据属性查询(不列出)子数据库

Posted

技术标签:

【中文标题】如何按数据属性查询(不列出)子数据库【英文标题】:How To Query (Not List) Child Databases By Data Properties 【发布时间】:2019-11-02 18:00:43 【问题描述】:

有没有办法通过数据属性(即通过索引)查询子数据库?在多租户场景中,我们最终会得到大量的子数据库,能够查询它们会非常好,例如(此版本的子数据库、待关闭的子数据库等)

谢谢

【问题讨论】:

@TheGeneral 我愿意接受有关这方面的建议。如果我使用的是 RDBMS 甚至其他一些 NoSql 数据库,我不会使用多个数据库。 FaunaDB 似乎使子数据库更容易工作(它是数据),尽管管理问题仍然存在。还应该指出,安全性并不是使用子数据库的唯一原因。一个示例替代原因可能是汇总每个租户的资源使用情况。您的客户 ID 方法是如何工作的? 【参考方案1】:

与 FaunaDB 中的其他对象一样,可以使用任意用户数据创建数据库,即CreateDatabase(name: "bob", data:prop: "cool")。这个用户数据也可以像其他任何东西一样被索引。一个示例 shell 会话:

myDb> Get(Index("by_prop"))
 ref: Index("by_prop"),
  ts: 1560970634960000,
  active: true,
  partitions: 1,
  name: 'by_prop',
  source: Databases(),
  terms: [  field: [ 'data', 'prop' ]  ] 
myDb> Get(Database("bob"))
 ref: Database("bob"),
  ts: 1560970374730000,
  name: 'bob',
  data:  prop: 'cool'  
myDb> Paginate(Match(Index("by_prop"), "cool"))
 data: [ Database("bob") ] 

使用具有超过data.prop 的术语的索引,我可以匹配我感兴趣的数据库。术语/值的选择是任意的,可以是对您的应用程序有意义的任何东西。

【讨论】:

以上是关于如何按数据属性查询(不列出)子数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何减少 Django 在查询子模型属性时进行的数据库调用次数?

如何从 JSON 文件数据索引子对象属性并在 YDN DB 中编写搜索查询

SQL severa 中l数据库如何进行查询

JOINS 的大型查询中的 SQL 子查询链

如何列出列中的所有值,然后在子查询中不重复就列出?

使用子属性过滤所有父对象