rur*_*kyi 57 mysql sql-server oracle db2 postgresql
要比较不同供应商(Oracle,SQL Server,DB2,MySQL和PostgreSQL)的数据库,如何唯一地识别任何对象,我是否需要目录?例如,在Java的DatabaseMetadata中,我应该至少指定目录和模式fooPattern.
目录只是数据存储的抽象是真的吗?
fil*_*rem 113
在Oracle中:
在PostgreSQL中:
在MySQL中:
在Microsoft SQL Server中:
dbo使用所以我认为回答你的问题是:
这取决于实现,是否需要目录名来标识对象."目录","模式"和"数据库"的含义因实现而异.
是的,目录是数据存储的抽象.我认为它也应该被定义为一个自包含的孤立命名空间,但并非所有SQL引擎都这样做.
所有供应商都很好地定义了数据库和模式.目录有时是"数据库"的同义词(至少在Oracle和Postgres中),有时与"schema"同义,有时也是两者的同义词.术语目录通常也意味着元数据收集(也称为系统表).
小智 5
对于DB2,schema用作名称空间.因此,如果您想要唯一地标识数据库中的对象,您可以说*schema.object_name*.这是实现多租户的一种非常方便的方式.您可以为数据库中的每个租户设置单独的架构.这提供了安全性和管理方面的关注点的良好分离.您可以在单个DB2数据库中拥有32K模式.
DB2中的目录只是包含有关数据库元数据的系统表的集合.通常,直接访问目录对象被认为是一种不好的做法.最好使用API提供的工具(例如JDBC)来浏览目录及其包含的元数据.
DB2还有其他抽象层.您可以在同一台计算机上运行多个DB2实例.每个实例可以管理256个单独的数据库(每个数据库具有32K模式).服务器上的DB2实例数仅受可用内存量的限制.在某个时间点,我们在Amazon EC2 m1.large上运行了120个DB2实例(每个实例有一个数据库和10个连接).您还可以在单个服务器上安装多个DB2.在测试您计划迁移到的新版本时,它非常有用.虽然经常忘记切换到正确的安装,但我确实感到困惑.
| 归档时间: |
|
| 查看次数: |
39667 次 |
| 最近记录: |