当前位置: 首页 > 面试题库 >

目录,架构,用户和数据库实例之间的关系

颜瀚漠
2023-03-14
问题内容

为了比较不同供应商(Oracle,SQL
Server,DB2,MySQL和PostgreSQL)的数据库,我如何唯一地标识任何对象,我是否需要目录?例如,在Java的DatabaseMetadata中,我至少应指定目录和模式fooPattern。

目录仅仅是数据存储的抽象吗?


问题答案:

在Oracle中:

  • 服务器实例==数据库==目录==所有数据均由同一执行引擎管理
  • 模式==数据库中的名称空间,与用户帐户相同
  • 用户==模式所有者==命名帐户,与模式相同,谁可以连接到数据库,谁拥有该模式并可能在其他模式中使用对象
  • 标识正在运行的服务器中的任何对象,您需要(模式名称+对象名称)

在PostgreSQL中:

  • 服务器实例==数据库集群==由同一执行引擎管理的所有数据
  • 数据库==目录==数据库集群中的单个数据库,与同一数据库集群中的其他数据库隔离
  • 数据库中的架构==命名空间
  • 用户==命名帐户,可以连接数据库,分别拥有和使用每个允许的数据库中的对象
  • 标识正在运行的服务器中的任何对象,您需要(数据库名称+模式名称+对象名称)

在MySQL中:

  • 服务器实例==未用目录标识,只是一组数据库
  • 数据库==模式==目录==服务器内的名称空间。
  • 用户==命名帐户,该帐户可以连接到服务器并在一个或多个数据库中使用(但不能 拥有 -没有所有权的概念)对象
  • 标识正在运行的服务器中的任何对象,您需要(数据库名称+对象名称)

在Microsoft SQL Server中:

  • 服务器实例==托管数据库集
  • 服务器中的数据库==名称空间限定符,很少称为目录
  • 模式==所有者==数据库中的名称空间,与数据库角色相关联,默认情况下仅dbo使用
  • 用户==命名帐户,该帐户可以连接到服务器并在一个或多个数据库中使用(但不能 拥有 -模式作为所有者)对象
  • 标识正在运行的服务器中的任何对象,您需要(数据库名称+所有者+对象名称)

因此,我认为您的问题的答案是:

  1. 取决于实现,是否需要目录名称来标识对象。“目录”,“模式”和“数据库”的含义因一种实现方式而异。

  2. 是的,目录是数据存储的抽象。我认为也应该将其定义为一个独立的隔离名称空间,但并非所有SQL引擎都可以做到这一点。

  3. __所有供应商都很好地定义了 数据库架构目录 有时与“数据库”(至少在Oracle和Postgres中)同义,有时与“ schema”同义,有时又与两者同义。术语 目录 通常还表示元数据收集(又名系统表)。



 类似资料:
  • 问题内容: MySQL中的模式和数据库之间有区别吗?在SQL Server中,数据库是相对于架构的更高级别的容器。 我读的和做的基本上是在MySQL同样的事情,我相信这线索,架构和数据库是同一对象的不同的词。 问题答案: 如MySQL词汇表中所定义: 实际上,在MySQL中, 模式 与 数据库 是同义词。您可以用MySQL SQL语法代替关键字,例如使用代替。 其他一些数据库产品也有区别。例如,在

  • 我读过官方文件 为了澄清我的问题,假设这是我的项目结构: 常见的原型 app.proto,它引用common.proto(在另一个单独的目录中)和util.proto(在子目录中) util。原型 在做了几次试验后,结果表明,如果我在根目录下运行protoc命令,使用以下命令: 然后导入正常工作,每个原始文件都被编译为没有错误。但是,假设我不是在根目录下运行协议,而是在子目录项目中使用类似的命令:

  • 数据模型架构和实例 在特定时刻存储在数据库中的数据称为数据库的实例。 数据库的整体设计称为模式。 数据库模式是数据库的骨架结构。它表示整个数据库的逻辑视图。 模式(schema)包含模式对象,如表,外键,主键,视图,列,数据类型,存储过程等。 可以使用可视化图表来表示数据库模式。 该图显示了数据库对象以及彼此之间的关系。 数据库设计者设计数据库模式以帮助软件开发与数据库交互的程序员。数据库创建过程

  • 问题内容: 根据本文,您可以使用Spring Framework中的AbstractRoutingDataSource来动态更改应用程序使用的数据源。 但是,使用的数据源是通过配置定义的,而不是通过编程定义的。有没有一种方法可以配置要在运行时使用的数据源? 该解决方案的可扩展性如何,即数据源数量上的限制是什么? 谢谢! 问题答案: 我已经为30个数据源实现了这种方法,并且它们当前正在生产环境中运行

  • 问题内容: 用户和Oracle中的架构之间的区别? 问题答案: 您应该将模式视为用户帐户,并将其中的所有对象作为所有意图和目的的模式的集合。 SCOTT是一种架构,包括具有各种授权和其他内容的EMP,DEPT和BONUS表。 SYS是一个包含大量表,视图,授权等的模式。 SYSTEM是一个架构..... 从技术上讲-模式是数据库使用的一组元数据(数据字典),通常使用DDL生成。模式定义数据库的属性

  • 我想知道如何为每个租户提供定制。我想提供在租户想要的每种形式中添加新字段的设施,包括字段名、数据类型等。现在我的问题是如何为这种类型的场景设计数据库表?正如我所想的那样,我们必须给每个表单赋予表单id,每当租户在表单中创建新字段时,应该在数据库表中创建一个新的行,该行应该具有租户id、表单id、字段名称、数据类型等... 现在请给我真正的解决方案的朋友......我需要这个数据库表设计解决方案立即