问题点引用:
1、试图在数据存储schema的特定部分上定义访问控制,是非常具有挑战性的。
2、半结构化和非结构化数据存储没有schema。
问题解答:
问题1解答:schema是个很宽泛的概念,针对问题1的schema概念应该理解为是在数据库中的元素: 表、约束、视图、存储过程和数据类型等都可以被称为schema,因为他们都是数据库中实现存储的方式。 其他schema相关概念请阅读下文引申。
问题2解答:对应关系型数据库(以表结构(行和列)存储定义的),有非关系型数据库(比如redis的key-value定义、mongdb的文档型等)。有些结构的数据储存在这些非关系型数据库里效果较好,这些没有使用表结构定义存储的数据我们都可以称作半结构化数据(非结构化数据),根据问题1描述,不用表结构存储的数据自然也没有schema了 。
比如半结构化数据就有json和xml、非结构化数据就有文档、视频、图片等。
引申——Schema的概念
数据库中的schema有多种不同含义和实现:
- 数据库中的数据模型(data model)
- 数据库中的整个数据结构(data structure)和程序(program)
- 命名空间(namespace)是SQL的一个元素
1. Data Model
数据库schema的含义之一是数据库中表之间的结构 ,具体来说有表、数据类型、主键和唯一键以及外键约束。
2.数据库实现
更抽象的概念上,数据库schema指的是整个数据库元素:表、约束、视图、存储过程和数据类型等。
3.Namespace(element of SQL)
schema的另一个含义是大多数关系型数据库引擎用于对对象分组的特定元素。
可以把schema认为是一个命名空间(namespace)或容器(container),其中包含有表、视图和函数等。
数据库(database)的所有者就是schema的所有者,一个schema一般属于一个database而一个database可以有多个schema。
不同的schema中的name可以重复。
数据库学的不行,如有错误请指正~
参考文章: