开发者社区> 问答> 正文

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

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

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

展开
收起
保持可爱mmm 2020-05-17 20:46:42 1538 0
1 条回答
写回答
取消 提交回答
  • 在Oracle中:

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

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

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

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

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

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

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

    2020-05-17 20:53:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像