精华内容
下载资源
问答
  • 严格地说,在MySql中,DatabaseSchema之间的区别是不存在的。但是,在其他数据库引擎(如SQL Server)中并非如此。 在SQL server:中,每个表都属于数据库中称为数据库模式的一组对象。 它是容器或命名空间(查询...

    严格地说,在MySql中,Database和Schema之间的区别是不存在的。

    但是,在其他数据库引擎(如SQL Server)中并非如此。 在SQL server:中,

    每个表都属于数据库中称为数据库模式的一组对象。 它是容器或命名空间(查询Microsoft SQL Server 2012)

    默认情况下,SQL Server中的所有表都属于名为dbo的默认架构。 查询尚未分配给任何特定模式的表时,可以执行以下操作:

    SELECT *

    FROM your_table

    这相当于:

    SELECT *

    FROM dbo.your_table

    现在,SQL Server允许创建不同的模式,这使您可以对具有类似用途的表进行分组。 这有助于组织数据库。

    例如,您可以创建一个名为sales的模式,包括发票,债权人(以及与销售相关的任何其他)等表,以及另一个名为lookup的模式,其中包含国家,货币,订阅类(以及用作外观的任何其他表) 上表)。

    分配给特定域的表显示在SQL Server Studio Manager中,其架构名称前缀为表名(与属于默认dbo架构的表完全相同)。

    SQL Server中有特殊的模式。 引用同一本书:

    有几个内置的数据库模式,不能删除或更改它们:

    1)dbo,默认架构。

    2)guest包含guest用户可用的对象(“guest用户”是SQL Server术语中的特殊角色,具有一些默认和高度限制的权限)。 很少用。

    3)INFORMATION_SCHEMA,由信息模式视图使用

    4)sys,专为SQL Server内部使用而保留

    模式不仅适用于分组。 实际上,可以为每个模式赋予不同用户不同的权限,如MSDN所述。

    这样,上面提到的模式查找可以供数据库中的任何标准用户使用(例如,仅限SELECT权限),而名为supplierbankaccountdetails的表可以在称为财务的不同模式中分配,并且仅提供对用户的访问权限 在小组accounts(只是一个例子,你明白了)。

    最后,再次引用同一本书:

    它与数据库架构和表架构不同。 前者是表的名称空间,而后者是表定义

    展开全文
  • 在建立Oracle数据库的时候,应该会在数据库建立助手向导上面看到这么一个选项,就是数据库的连接模式采用什么方式。在Oracle9i或者10g中,可以看到有2种连接模式,一种叫做专用服务器连接(dedicated server) ,...
    
    

    在建立Oracle数据库的时候,应该会在数据库建立助手向导上面看到这么一个选项,就是数据库的连接模式采用什么方式。在Oracle9i或者10g中,可以看到有2种连接模式,一种叫做专用服务器连接(dedicated server) ,另外一种叫做共享服务器连接(shared server)。下面我们来分类说一下这两种连接方式的不同点。

      专用服务器模式就是说每次在对Oracle进行访问的时候,Oracle服务器的Listener会得到这个访问请求,然后回为这个访问创建一个新的进程来进行服务。所以说,对于每一个客户端的访问,都会生成一个新的进程进行服务,是一种类似一对一的映射关系。这种连接模式的一个很重要的特点就是UGA(用户全局域)是存储在PGA(进程全局域)中的,这个特性也很好说明了当前用户的内存空间是按照进程来进行分配的。

      而另外的共享服务器连接则是一种在程序编写的时候通常会用到的连接池(pool)的概念。采用这种模式的话,在数据库的初始化的时候就会创建一批服务器连接的进程,然后把这些连接进程放入一个连接池来进行管理。初始化的池中的进程数量在数据库初始化建立的时候是可以手动设置的。在连接建立的时候,Listener首先接受到客户端的建立连接的请求,然后Listener去生成一个叫做调度器(dipatcher)的进程与客户端进行连接。调度器把把客户端的请求放在SGA(系统全局域)的一个请求队列中,然后再共享服务器连接池中查找有无空闲的连接,然后让这个空闲的服务器进行处理。处理完毕以后再把处理结果放在SGA的相应队列中。调度器通过查询相应队列,得到返回结果,再返回给客户端。这种连接模式的优点在于服务器进程的数量可以得到控制,不大可能出现因为连接人数过多而造成服务器内存崩溃。但是由于增加了复杂度以及请求相应队列,可能性能上有所下降。

      总之,在开发阶段中,用第一种专用服务器可能好一些,因为少了一些中间的复杂度,而且开发的时候一般连接的数量也少。而在多个应用同时使用一个数据库的实际应用环境下,采用第二种方法可能好一些,因为如果到时候突然有1000个或者10000个请求连接的话,数据库服务器如果同时建立10000个连接,肯定要受不了的。当然,也要看到时候的实际情况如何再做决定,两者没有绝对的哪种好哪种不好的差别

          关于这两者的比较"假如你来到一个城市,要在这个城市的不同的地方办几件事情,在交通方面你有两种选择:一个是雇一辆专车,这辆专车将会把你从A带到B,一直等你把在B的事情办完,在把你从B带到C。。。。。。另一种选择是给出租车公司打电话订辆出租车,先把你从A带到B,然后你和出租车该干嘛干嘛,你去办你的事情,出租车去接别的生意,等你在B的事情办完了,你再跟出租车公司订车,出租车公司将会联系当时在B附近的其他出租车去接你。。。。。。

    首先,dedicated servers的设置非常简单-----不需要设置,这个是oracle的默认选项

    而对于shared servers,你就要需要做一些额外的设置,当让按照administrator guide并不难,关键是你需要决定到底需要多少个shared server servers和多少个dispatcher,这不仅仅需要经验的积累,还需要持续的观察和调整。
    在dedicated servers里,你所有的等待都是数据库本身的等待,而在shared servers里你有可能需要等待一个available的shared server process。

    很明显,当用户并发的连接数很大的时候,dedicated servers的server process个数也会变得很大,对于操作系统来说多一个process就意味着多一点管理负担,要知道操作系统支持的同时并发数可不是无限的。这意味着,在dedicate servers里,当你有大量的用户连接(比如,同一时间超过5000个用户连上来),你的系统负担就会相当大。而这种情况shared servers就可以处理的相对好一些,因为加入同时有5000个用户连上来而且我们知道一般只有1%的连接是active,那我们只需要设置50个shared servers就可以把所有的用户请求处理得很好,并节省了系统资源。

    作为一个好处,shared servers可以用来控制concurrent。要知道用户的并发数和系统的处理能力决不是成正比的(可以下面的图),当用户并发数超过一个阀值,系统的处理能力会明显下降。通过shared servers可以控制系统的concurrent不超过这个阀值。

     

    在引入PGA的自动管理以前,shared servers是要比dedicated servers节省内存的,然后在自动管理的PGA引入之后,shared servers的这个优势已经不像我们想象的那么不明显了。

    dedicate servers一个server process为了一个较大的request而长时间的工作而不影响其它的users,然而在shared servers,一些较大的request会影响其它的用户。

    还需要考虑其他的因素,比如,如果在前端使用了weblogic的connecting pool,那么你在database level再使用shared servers可能就不是很必要,因为这时你的用户连接已经在weblogic层面上得到了控制。

    shared servers还有一个所谓的伪死锁的问题,这点大家参考一下tom的新书就知道了。

    关于dedicated servers和shared servers的话题我们就讨论这么多,最后给大家一个小提示:其实dedicated servers和shared servers是可以并存的,实际上,即使你使用了shared servers,某些管理操作也是必须在dedicated 模式下来做的,比如startup或shutdown database。如果你实在难以选择,如果你的应用可能一部分是OLTP的(用户量也很大),一部分是DW的,其实你可以考虑同时使用dedicated servers和shared servers。

    展开全文
  • 用户(user)与模式(schema)的区别:用户是用来连接数据库对象。而模式用是用创建管理对象的。(模式跟用户在oracle 是一对一的关系。) 详解 从官方的定义中,我们可以看出schema为数据库对象的集合。为了区分...

    用户与模式

    • 用户(user):Oracle用户是用连接数据库和访问数据库对象的。(用户是用来连接数据库访问数据库)。

    • 模式(schema):模式是数据库对象的集合。模式对象是数据库数据的逻辑结构。(把数据库对象用模式分开成不同的逻辑结构)。

    • 用户(user)与模式(schema)的区别:用户是用来连接数据库对象。而模式用是用创建管理对象的。(模式跟用户在oracle 是一对一的关系。)

    详解

    • 从官方的定义中,我们可以看出schema为数据库对象的集合。为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema。

    • schema里面包含了各种对象如tables, views,sequences, stored procedures, synonyms, indexes, clusters, and database links。

    • 一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema,这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的,create schema 只不过是提供了一种填充schema 的方式,可以将条DDL语句和DCL语句打包在一起。省去了一条一条执行这些命令的繁琐,被create schema 打包起来的命令整体组成了一个事务,要么全部执行成功,要么不执行。如:

      SQL> conn hr/oracle

      Connected.

      SQL> create schema authorization hr

        2  create table temp as select employee_id,first_name,last_name,salary

        3  from employees

        4  create view temp1 as select employee_id,first_name,last_name,salary

        5  from employees

        6  grant select on temp1 to scott;

      Schema created.

      ),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。

    • 即schema的个数同user的个数相同,而且schema名字同user名字一一对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

    • 一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp;其实,这sql语句的完整写法为select * from scott.emp。 在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。

    展开全文
  • oracle数据库中schemauser是两个不同对象,但是我们将他们混淆使用,也无伤大雅。因为在创建用户user时候,会默认创建一个同名schema,userschema是一一对应关系。比如创建了一个用户为hr,同时也会创建...

    oracle数据库中schema和user是两个不同的对象,但是我们将他们混淆使用,也无伤大雅。因为在创建用户user的时候,会默认创建一个同名的schema,user和schema是一一对应的关系。比如创建了一个用户为hr,同时也会创建一个同名的schema,对于用户来说,user.object和schema.object是一样的,都是hr.obect。

    概念区别

    从图中可以清晰看出,user和schema是两个不同概念的对象:

    7f5b5857a0b2910bac14fa484948420b.gif

    操作案例

    这里我们用生活中的例子来说明user和schema有什么本质上的不同。

    在M公司有两个仓库管理员Bob和Joe,Bob的仓库里面放的是鞋子,通过编号进行区分;Joe的仓库里面放的是帽子,也是通过编号进行区分。将场景中的物体与数据库相映射,Bob和Joe是用户,两个人的仓库是schema,鞋子和帽子属于schema里面的object。

    2466036a036eebc0b5bda111dee58f35.png

    这时,Joe收到上级的授权和指示,去将Bob仓库中的鞋子都转移到Joe的仓库中,以后东西全部归Joe管理。

    这里将计划进行的几个动作进行分解,映射成为数据库的操作。

    (1)上级授权Joe可以将Bob仓库中的鞋子搬到自己仓库中

    grant select,update,delete on table Bob."鞋子" to Joe;

    e0fcb093c5dcfe7822709a7376684ffe.png

    (2)Joe将鞋子转移到自己的仓库中,所有权也变成了自己。

    create table Joe."鞋子" as select * from Bob."鞋子";

    aebe76ea6897e5823dec237026bdbd95.png

    drop table Bob."鞋子" cascade;

    8b340dc325b6a27d59d9dcce25069b15.png

    注意:在生活场景中我们使用的是move操作,但是在oracle数据库中我们使用的是create as+drop操作实现转移,因为如果使用move只能改变对象所在的表空间,但是对象所属的schema并不变化。还有一种方法就是通过exp/imp和expdp/impdp方式改变对象的所属用户。

    (3)Joe对自己仓库中的鞋子做了一个编号,也就是索引。

    create index “编号” on Joe."鞋子";

    8cfa83095d4b5903ba7e11033aea47b2.png

    至此,Bob仓库中的鞋子全部搬到了Joe的仓库中,而且鞋子也拥有了新的管理员Joe,Bob仓库中也没了东西。同时,我们也能在这一系列动作中对user和scheme的区别有了相对清晰的了解。

    254956365d707b63438276e9f7db7556.png

    schema(模式)和user(用户)的区别

    (1)schema是一个存放对象objects的逻辑容器,而user是这个容器的所有者。

    (2)如果要对容器中的objects进行处理,由user进行操作。容器是静态的,不会自己操作!

    (3)user可以去访问其他schema下的objects,前提是需要被授权,权限也可以被收回。

    (4)上级领导,也就是拥有dba权限的用户,可以执行权限的授权和收回操作。

    文中为了区别schema和user,并没有引入表空间的概念,也就是例子中仓库建在哪里的问题!这里只需要将两者的区别理解透彻,以免在专业人士面前闹出笑话!

    05510e498eb00067b20587806949e368.png

    所以,如果有机会和其他人交流schema和user的区别,不要上来就讲概念,可以先讲故事或者画图,用仓库管理员的例子生动形象的把事情说明白!

    展开全文
  • sql是什么?sql,全称:结构化查询语言(Structured Query Language),是一种用于操作数据库的语言,它是用于所有数据库的基本语言。...控制数据访问以及数据库模式创建和修改;同时也是数据库脚本文件的扩...
  • 4、MySQL中创建数据库之前需要详细数据库模型,而在NoSQL数据库类型情况下不需要详细建模。 5、MySQL提供了大量报告工具,可以帮助应用程序有效,而NoSQL数据库缺少用于分析性能测试报告工具。 6、M
  • 数据库视图的区别

    千次阅读 2016-04-22 14:23:46
    4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改 5、表是内模式,试图是外模式 6、视图是查看数据表一种方法,可以查询数据表中...
  • hive自带内嵌元数据库是derby,derby只支持一个会话,并发性能差,实际生产不用derby,用derby话还会遇到这样问题: 你在哪个路径下,执行hive指令,就在哪路径下生成metastore_db,建一套数据库文件,更换目录执行...
  • 什么是SQL? SQL是一种用于操作数据库的语言。SQL是用于所有数据库的基本语言。不同数据库之间存在较小的语法...SQL语言还用于控制数据访问以及数据库模式创建和修改。 什么是MYSQL? MySQL是在90年代中期开发的,是
  • Core数据库 正如名称所示,Core Database是Sitecore应用程序主干,它可用于多种用途。 核心数据库包含所有Sitecore设置...如果您需要在功能区中创建菜单项,则需要在Core Database中添加上下文定义。 ...
  • 因为工作中涉及到了参数模式的存储过程,所以就说这一块吧,不过我到现在也没搞明白,带参不带参有啥具体区别,还望大家相互帮助,可以留言讨论。 首先创建一个需要传入表名存储过程,代码如下 create or re
  • 数据库视图是什么,表有什么区别和联系

    万次阅读 多人点赞 2019-01-21 17:42:19
    4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改。 5、表是内模式,试图是外模式。 6、视图是查看数据表一种方法,可以查询数据表中...
  • 最常见对象池应该是数据库连接池线程池,例如程序需要数据库连接时从连接池中取一个(连接池里有多个连接),用完了不是关闭连接而是把连接放回连接池给其他程序使用。一个对象池通常只放同一类对象。 注册...
  • 数据库的操作代码,dao设计模式需要创建5个包,每个包中所包含的java文件会有 所区别,如下图所示: bean包中包含的是实体类,即一个数据表就对应一个实体类 common包中包含的是一些共有的java文
  • M : model.py 就是和数据库打交道, 创建表等操作 V : view 视图(视图函数,就是装HTML文件) C : controller 控制器(就是URL里面文件内容,其实就是在浏览器上发请求) 二 . MTV Django 叫做 MTV 框架 M :...
  • 一个数据库对许多实例都是可以访问的,而实例则提供一次对一个数据库的访问。 Oracle将在登录时创建一个新的进程,通常称为专用服务器配置,将在登录者会话的生命期中Oracle专门为登录者提供一个服务器进程,对于每...
  • new一个数据库的连接对象是耗时耗资源的,因此不可能对每个请求都做一遍连接创建和关闭的操作,网上给的方法一般采用连接池。我的疑问就是,我如果采用单例模式, 这样的话,如果是多个线程请求数据库操作,那么直接...
  • 在纯模式组织中,可以创建仅包含服务器单个管理组,并使用此专门服务器管理组来为组织中所有服务器创建策略。然后可以专门为公用文件夹管理而创建另一个管理组,并由专门小组来使用此管理组管理所有公用...
  • 首先,归档模式和非归档模式下数据恢复是物理恢复。归档模式下试验流程:1. 创建一个表空间test1 使用test01.dbf;2. 给test01.dbf创建一个副本(备份);3. 做一些操作使test01.dbf文件中数据发生变化;4. 切换...
  • 这种类型设计模式属于创建模式,它提供了一种创建对象最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象克隆。当直接创建对象代价比较大时,则采用这种模式。例如,一个对象需要在一个高...
  • 搭建网络、创建数据库、数据库存储、坏了还得自己修等等。         如果你采用 IAAS服务,那么意味着你就不用自己买服务器了,随便在哪家购买虚拟机,但是还是需要自己装服务器软件。   &...
  • 在纯模式组织中,可以创建仅包含服务器单个管理组,并使用此专门服务器管理组来为组织中所有服务器创建策略。然后可以专门为公用文件夹管理而创建另一个管理组,并由专门小组来使用此管理组管理所有公用...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 294
精华内容 117
关键字:

创建模式和创建数据库的区别