【问题标题】:SQL schema vs NoSQL namespaceSQL 模式与 NoSQL 命名空间
【发布时间】:2020-08-27 07:35:09
【问题描述】:
我是 NoSQL 的新手,想完全理解命名空间的概念以及它与 SQL 模式的比较。
我已经看到了表、行……和它们的 NoSQL 对应物之间的大量有用的类比。
您能帮我理解命名空间吗?
特别是,我想知道如何利用它们分离我的十几个客户的数据?我想防止两者之间的意外信息泄漏,同时仍然使用单个数据库。
【问题讨论】:
标签:
javascript
sql
database
mongodb
nosql
【解决方案1】:
这真的取决于你使用的数据库引擎,很难给出一个通用的答案。
理想情况下,如果您真的想隔离数据,您可以使用多个数据库(在 Redis、Redis Enterprise、MongoDB 中)。在这种情况下,您可以确定数据是分开的。但是您说您想使用单个数据库。 (为什么?)
如果您想坚持使用单个数据库,您有多种选择,同样取决于您使用的数据库引擎。
如果您使用的是 Redis:
- 您可以根据密钥模式使用特定的
namespace,例如app:cust-001:orders,并根据密钥名称/模式控制对数据的访问。在 Redis 6.0 中,添加了 ACL(访问控制列表)的概念,允许您基于密钥模式为连接的用户限制对数据的操作/访问。这将使您能够很好地控制数据以及谁可以查看/操作它们
如果您使用的是 MongoDB:
- 您可以使用多个集合(表),例如,在集合名称前加上上下文。
- 或者您可以使用复合键,其中一个字段将是您的上下文
在这两种情况下,对于 Redis 和 MongoDB,您都在使用业务逻辑创建“数据库”的概念。
如果您提供更多详细信息/示例,社区可能会给您更详细的答案。