精华内容
下载资源
问答
  • 文章目录数据库概述什么是数据库(数据,表,数据库数据库有什么作用?关系数据库详解非关系数据库详解数据库系统发展史数据库管理系统(DBMS)当今主流数据库介绍MySQL数据库MySQL商业版与社区版有什么区别?...

    数据库概述

    什么是数据库(数据,表,数据库)

    • 数据
      • 描述事物的符号记录称为数据(Data)
      • 包括数字,文字、图形、图像、声音、档案记录等
      • 以“记录”形式按统一的格式进行存储
      • 每一行,称为记录
      • 每一列,称为字段
      • 将不同的记录组织在一起,就形成了“表
      • 是用来存储具体数据的
    • 数据库
      • 数据库就是表的集合,是存储数据的仓库
      • 以一定的组织方式存储的相互有关的数据

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8f7AZBcv-1597486628439)(D:\新建文件夹\qq4EE558CF6F90A08FC3A2FBB01BA179E8\f023ecf888664a49825d842cd853a9c3\clipboard.png)]

    数据库有什么作用?

    数据的持久化保存

    高可靠,高可用

    数据的快速提取(海量的数据,便于管理数据,非结构化数据{比如视频,音频等})

    关系数据库详解

    • 关系型数据库是依据关系模型来创建的数据库。
    • 所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
    • 关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)

    image-20200814230448637

    实体-关系”(ER)

    • 关系数据库系统是基于关系模型的数据库系统,它的基本概念来自于关系模型
    • 关系模型建立在关系代数的理论基础上,数据结构使用简单易懂的二维数据表,可以用简单的“实体-关系”(ER)图来直接表示
    • E-R图中包含了实体(数据对象)、关系和属性三个要素。例如:

    image-20200814230750758

    • 实体:
      • 也称为实例,对应现实世界中可区别于其他对象的“事件”或“
        事物”,如学生、老师等
    • 属性:
      • 实体所具有的某一特性,一个实体可以有多个属性。例如,“姓名,课程名”实体集中的每个实体均具有姓名、住址、电话等属性
    • 联系:
      • 实体集之间的对应关系称为联系,也称为关系。例如,学生和老师是由“课程”相连接的关系
    • 所有实体及实体之间联系的集合构成一个关系数据库
    • 关系数据库表中会有编码,称为主键,具有唯一,非空特性
    • 关系数据库的存储结构是二维表格,反映事物及其联系的数据是以表格形式保存的
    • 在每个二维表中,每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性
    • 关系型数据库的应用举例:
      • 12306用户信息系统
      • 淘宝账号信息系统、支付宝账号系统移动、电信、联通手机号信息系统、计费系统银行用户账号系统
      • 网站用户信息系统

    非关系数据库详解

    • 非关系型数据库的优点

      • 数据库高并发读写的需求
      • 对海量数据高效率存储与访问
      • 数据库的高扩展性与高可用性的需求
    • NoSQL大部分以文件形式存在

    • 关系型数据库存储方式

      • 键值方式( key-value),以键为依据存储、删、改数据
      • 列存储( Column- oriented),将相关的数据存储在列族中
      • 文档的方式,数据库由一系列数据项组成,每个数据项都有名称与对应的值
      • 图形方式,实体为顶点,关系为边,数据保存为一个图形
    • 非关系数据库产品

      • Memcached是一个开源的、高性能的、具有分布式内存对象的缓存系统,以 key-value方式存储数据

        • 缓存数据以减轻数据库压力并能加快访问速度
        • 加速动态Web应用
        • 缓存的内容保存在内存中
      • redis也是一个以key-vaue方式存储数据的,数据也是保存在内存中,但会定期将数据写入磁盘中

        • 相对于 Memcached有以下特点
          • 支持内存缓存
          • 支持持久化
          • 数据类型更多
          • 支持集群、分布式
          • 支持队列
      • 数据库的日志文件用来做恢复,oracle日志称为重做日志组

      • 例如:

        • 阿里oss对象存储采用oracle重做日志组思想,

          阿里oss数据一式三份,是盘古系统

          Redis有一个中继日志(二进制日志)

      • Redis应用举例

        • 数据库前端缓存
        • session共享
        • 当需要缓存除了key/value之外的更多数据类型时
        • 当缓存的数据需要长久保存

    数据库系统发展史

    • 第一代数据库
      • 自20世纪60年代起,第一代数据库系统问世。它们是层次模型与网状模型的数据库系统,为统一管理和共享数据提供了有力的支撑
    • 第二代数据库
      • 20世纪70年代初,第二代数据库–关系数据库开始出现
      • 20世纪80年代初,IBM公司的关系数据库系统DB2问世,作为第二代数据库系统的关系数据库,开始逐步取代层次与网状模型的数据库,成为占主导地位的数据库,成为行业主流。
      • 到目前为止,关系数据库系统仍占领数据库应用的主要地位
    • 第三代数据库
      • 自20世纪80年代开始,各种适应不同领域的新型数据库系统不断涌现,如工程数据库,多媒体数据库,图形数据库,智能数据库,分布式数据库及面向对象数据库等,特别是面向对象数据库系统,由于其实用性强,适应面广而受到人们的青睐
      • 20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面
      • 当然,在商务应用方面,依然还是关系数据库占主流,不过,已经有一些新的元素被添加进主流商务数据库系统中。
      • 例如,Oracle支持的“关系-对象”数据库模型

    数据库管理系统(DBMS)

    是实现对数据库资源的有效组织,管理和存储的系统软件

    数据库系统

    是人机系统,由硬件,os,数据库。BDMS,应用数据用户组成

    用户可以通过DBMS或应用程序操作数据库

    image-20200814232920994

    当今主流数据库介绍

    • MySQL(甲骨文公司收购) image-20200814233147076
      • 免费,开源,体积小 (MariaDB数据库管理系统是MySQL的一个分支 mariaDB
    • sql server(微软公司产品) image-20200814233256320
      • 面向Windows操作系统
      • 简单,易用
    • access(微软公司产品)
      • 面向Windows操作系统
      • 是Microsoft office套件应用程序的成员
    • oracle(甲骨文公司产品)
      • 面向所有主流平台
      • 安全,完善,操作复杂
    • db2(IBM公司)
      • 面向所有主流平台
      • 大型,安全,完善
    • sybase(Sybase公司)
      • 面向所有主流平台
      • 大型,安全,完善
      • 全球最大

    MySQL数据库

    • MySQL是一款深受欢迎的开元关系型数据库
    • oracle旗下的产品
    • 遵守了GPL协议,可以免费使用与修改
    • 特点
      • 性能卓越,服务稳定
      • 开源,无版权限制,成本低
      • 多线程,多用户
      • 给予C/S(客户端/服务器)架构
      • 安全可靠

    MySQL商业版与社区版有什么区别?

    • MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用
    • MySQL社区版是由分散在世界各地的MySQL开发者,爱好者一起开发与维护,可以免费使用
    • 两者区别
      • 商业版组织管理与测试环节更加严格,稳定性更好
      • 商业版不遵守GPL
      • 商业版可获得7*24小时的服务,如故障维护与打补丁等

    MySQL产品阵营有哪些?

    • 第一阵营:5.0-5.1,可说是早期产品的延续

    • 第二阵营:5.4-5.7阵营,更好的整合了MySQL AB公司,社区,第三方公司开的存储引擎,从而提高性能

    • 两者区别

      • 商业版组织管理与测试环节更加严格,稳定性更好
      • 商业版不遵守GPL
      • 商业版可获得7*24小时的服务,如故障维护与打补丁等

    MySQL产品阵营有哪些?

    • 第一阵营:5.0-5.1,可说是早期产品的延续
    • 第二阵营:5.4-5.7阵营,更好的整合了MySQL AB公司,社区,第三方公司开的存储引擎,从而提高性能
    • 第三阵营:6.0-7.1阵营,就是MySQL cluster版本,为适应新时代集群对数据库的需求而开发

    - 编译安装MySQL 5.7

    解压源码包

    [root@localhost opt]# tar zxvf mysql-5.7.17.tar.gz 
    [root@localhost opt]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
    [root@localhost opt]# cd /usr/local/
    [root@localhost local]# ll
    总用量 4
    drwxr-xr-x. 2 root root     6 4月  11 2018 bin
    drwx------. 8  501 games 4096 8月  12 2015 boost_1_59_0
    drwxr-xr-x. 2 root root     6 4月  11 2018 etc
    drwxr-xr-x. 2 root root     6 4月  11 2018 games
    drwxr-xr-x. 2 root root     6 4月  11 2018 include
    drwxr-xr-x. 2 root root     6 4月  11 2018 lib
    drwxr-xr-x. 2 root root     6 4月  11 2018 lib64
    drwxr-xr-x. 2 root root     6 4月  11 2018 libexec
    drwxr-xr-x. 2 root root     6 4月  11 2018 sbin
    drwxr-xr-x. 5 root root    49 7月  15 19:44 share
    drwxr-xr-x. 2 root root     6 4月  11 2018 src
    
    

    重新命名

    [root@localhost local]# mv boost_1_59_0/ boost
    

    安装环境

    [root@localhost opt]# yum -y install ncurses ncurses-devel bison cmake gcc gcc-c++
    

    创建用户

    [root@localhost local]# useradd -s /sbin/nologin mysql
    

    编译安装

    [root@localhost opt]# cd /opt/mysql-5.7.17/
    
    [root@localhost mysql-5.7.17]# cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    -DSYSCONFDIR=/etc \
    -DSYSTEMD_PID_DIR=/usr/local/mysql \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    -DWITH_BOOST=/usr/local/boost \
    -DWITH_SYSTEMD=1
    
    [root@localhost mysql-5.7.17]# make && make install
    
    [root@localhost mysql-5.7.17]# chown -R mysql.mysql /usr/local/mysql
    

    配置文件修改

    [root@localhost opt]# vim /etc/my.cnf
    [client]
    port = 3306
    default-character-set=utf8
    socket = /usr/local/mysql/mysql.sock
    
    [mysql]
    port = 3306
    default-character-set=utf8
    socket=/usr/local/mysql/mysql.sock
    
    [mysqld]
    user = mysql
    basedir = /usr/local/mysql
    datadir=/usr/local/mysql/data
    port = 3306
    character_set_server=utf8
    pid-file = /usr/local/mysql/mysqld.pid
    socket = /usr/local/mysql/mysql.sock
    server-id = 1
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
    

    设置环境变量

    [root@localhost opt]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH'>>/etc/profile
    
    [root@localhost opt]# echo 'export PATH'>>/etc/profile
    
    [root@localhost opt]# source /etc/profile
    

    初始化数据库

    [root@localhost opt]# cd /usr/local/mysql/
    
    [root@localhost mysql]# bin/mysqld \
    --initialize-insecure \
    --user=mysql \
    --basedir=/usr/local/mysql \
    --datadir=/usr/local/mysql/data
    
    [root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
    

    数据库开启并查看服务

    [root@localhost system]# systemctl start mysqld
    
    [root@localhost system]# systemctl enable mysqld
    
    [root@localhost system]# systemctl status mysqld
    
    [root@localhost system]# netstat -antp | grep mysqld
    tcp6       0      0 :::3306                 :::*                    LISTEN      21684/mysqld 
    

    添加数据库的管理员密码

    [root@localhost etc]# mysqladmin -u root -p password "123123"
    Enter password: 
    mysqladmin: [Warning] Using a password on the command line interface can be insecure.
    Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
    

    进入数据库

    [root@localhost mysql]# mysql -uroot -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 4
    Server version: 5.7.17 Source distribution
    
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> 
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec
    
    展开全文
  • 1在SQL Server 2008中的数据库中包含哪些对象其中什么对象是必不可少的其作用又是什么文档收集自网络仅用于个人学习 答SQL Server 2008中的数据库对象主要包括数据库关系图表视图同义词可编程性Service Broker存储和...
  • 在IVX中,数据库自然是非常重要的一个组件,基本功能包括增、删、改、查。那么我在使用它时需要注意哪些事项呢? 在设置数据库列结构时需要注意字段的设置。字段类型分为文本、整数、数值、资源、时间、日期和Json...

    数据库是各个应用程序不可或缺的重要组件,它能够将数据存储到后台,并且调用。但凡一款应用程序需要存储和访问用户数据,它都离不开数据库。在IVX中,数据库自然是非常重要的一个组件,基本功能包括增、删、改、查。那么我在使用它时需要注意哪些事项呢?

    在设置数据库列结构时需要注意字段的设置。字段类型分为文本、整数、数值、资源、时间、日期和Json类型。在刚开始接触数据库时,我们常用到最基础的三个类型为文本、数值和资源类型。要注意,电话号码一般存储在文本类型中,因为我们不需要对电话号码进行数值计算,而身份证号码也要存放在文本类型中,因为数值类型有长度的限制,而文本类型所能存储数据的长度要远远超过数值类型。当我们需要对所存数据进行数值计算和大小比较时,则需要将数据存储在数值或整数类型中。当我们需要上传图片时,则存储在资源类型中。要注意,并不是将图片直接存放在资源类型中,而是将图片的后缀资源地址存放到数据库,其本身也是字符串类型。

    善于添加服务对数据库信息进行存储和访问。传统的前后台交互是通过前台直接对后台数据库数据进行访问,这样的做法会带来诸多弊端。例如,通信效率低、保密性差等等。而服务组件不仅能够很大程度上削减上述弊端,还可以被适当修改接收参数和返回参数并直接运用于同类案例,非常便捷。因此我们需要学会利用服务组件作为一个中间平台,连接前后台实现信息交互。

    注意利用私有数据库本身属性。当我们建立一个新的私有数据库时,安全保护是默认开启的。当我们需要通过前台对数据库数据进行更新和删除时,需要记得将安全保护中权限选项进行修改。此外,我们还可以设置唯一数据对数据库所接收的数据进行限制。例如我们希望每位用户在后台只存储一条数据,那么我们可以通过设置唯一unionid,从而实现该功能。

    当后台有多个数据库之间存在共同信息时,我们可以通过该信息对不同数据库进行关联输出。例如在论坛案例中,用户对某篇文章的点赞、收藏和评论数据,需要分别建立三个数据库,而将这三个数据库对应起来的唯一数据,就是该篇文章的数据ID。通过数据ID确定点赞、收藏和评论的是同一篇文章,从而在前端展示时可以将相关信息进行数据绑定。

    展开全文
  • oracle数据库经典题目

    2011-02-17 15:05:20
    SYSTEM表空间主要用于存储数据库的数据字典、PL/SQL程序的源代码和解释代码、数据库对象的定义。撤销表空间专门进行回退信息的自动管理。临时表空间是专门进行临时段管理的表空间。用户表空间用于分离不同应用的数据...
  • 众所周知,Oracle数据库具有融合一切的能力,以前不断吸纳的能力包括XMLDB,JSON支持,存储,内存数据库,分布式等等。 总之,以一个数据库容纳所有,构建多模的数据库支持,是Oracle的发展核心目标(Multi-...
  • Oracle提供的数据加载工具SQL*Loader可以将外部文件中的数据加载到Oracle数据库SQL*Loader支持多种数据类型如日期型字符型数据字符等即可以将多种数据类型加载到数据库 使用SQL*Loader导入数据时必须编辑一个控制...
  • 高效实现实时推送架构需要重新设计绝大部分的数据库成分,包括查询执行引擎、分布式系统、超高速缓存子系统和存储引擎。因为架构影响到每一个数据库 组成部分,RethinkDB不得不从C 开始一步步写起来。RethinkDB 是...
  • 6.2.4 数据库对象的存储分配 175 6.2.5 增加表空间的大小 176 6.2.6 删除表空间 177 6.2.7 用户表空间的数目 178 6.2.8 表空间限额 178 6.2.9 主动的表空间的空间预警 178 6.2.10 管理重做数据的生成 ...
  • 十大大数据存储工具

    千次阅读 2017-07-03 09:31:00
    选择大数据存储工具牵涉许多变化因素,包括现有环境、目前的存储平台、数据增长预期、文件的大小及类型、数据库和应用程序程序组合等。 虽然本文根本不是什么完整的清单,但还是出了值得你考虑的几种顶尖的大数据...

    摘要:市面上有大量的大数据存储产品。

    市面上有大量的大数据存储产品。哪些产品是最好的?很显然,没有一个简单的答案。选择大数据存储工具牵涉许多变化因素,包括现有环境、目前的存储平台、数据增长预期、文件的大小及类型、数据库和应用程序程序组合等。

    虽然本文根本不是什么完整的清单,但还是列出了值得你考虑的几种顶尖的大数据存储工具。

      大数据存储领域的主要竞争者

    日立

    日立提供了几款大数据存储产品。与Pentaho软件公司合作开发的大数据分析工具、日立超级横向扩展平台(HSP)、HSP技术架构以及日立视频管理平台(VMP)。后一个例子专门针对大视频这个方兴未艾的大数据子集,面向视频监控及其他视频密集型存储应用领域。

    DDN

    类似地,DataDirect Networks(DDN)也有一批面向大数据存储的解决方案。

    比如说,其高性能SFA7700X文件存储可以自动分层到WOS对象存储归档系统,支持快速收集、同时分析和经济高效地保留大数据。

    DDN的营销战略和运营高级主管迈克尔·金(Michael King)说:“斯克里普斯研究所使用该产品用于冷冻电子显微镜(Cryo-EM),每周收集30 多TB的数据,寻找艾滋病毒、埃博拉、寨卡及主要神经疾病的治疗方法。而在过去,查看蛋白质结构和产生的抗体至少需要一年的时间。Cyro-EM在几周内就完成了发现过程。”

    Spectra BlackPearl

    Spectra Logic的BlackPearl深度存储网关为基于SAS的磁盘、SMR降速磁盘或磁带提供了对象存储接口,所有这些技术都可以放在存储环境中BlackPearl的后面。

    Kaminario K2

    Kamiario提供了另一种大数据存储平台。虽然它并不提供经典的大数据设备,但其全闪存阵列正在许多大数据应用领域找到一席之地。

    Kaminario的首席技术官沙恰·菲恩布利特(Shachar Fienblit)说:“由于开发人员把实时分析融入到应用中,存储基础设施策略必须能够管理大数据分析工作负载以及传统的事务处理工作负载。Kaminario K2全闪存阵列就是为了支持这种动态工作负载环境而开发的。”

    Caringo

    Caringo成立于2005年,旨在发掘数据的价值,并解决大规模保护、管理、组织和搜索数据方面的问题。有了旗舰产品Swarm,用户无需将数据迁移到不同的解决方案,即可实现长期保存、交付和分析,因而降低总体拥有成本。它已经被全球400多家组织所使用,比如美国国防部、巴西联邦法院系统、奥斯汀市、西班牙电信、英国电信、Ask.com和约翰斯霍普金斯大学。

    Caringo的产品副总裁托尼·巴巴加洛(Tony Barbagallo)说:“为了简化获取数据、馈送给Swarm,我们有FileFly(用于Windows文件服务器及NetApp服务器)和SwarmNFS(提供功能齐全的NFSv4基础设施)。”

    Infogix

    Infogix企业数据分析平台基于五项核心功能:数据质量、事务监控、均衡及协调、身份匹配、行为分析以及预测模型。这些功能据说可帮助公司提高运营效率、带来新的收入、确保合规,并获得竞争优势。该平台可以实时检测出现的数据错误,并自动实行全面分析,以优化大数据项目的表现。

    Avere混合云

    Avere提供了另一种大数据存储方案。其Avere混合云部署在混合云基础设施中的各种用例。物理FXT集群用于NAS优化这种用例,充分利用基于磁盘的现有NAS系统前面的全闪存高性能层。FXT集群使用缓存,以便自动加快活跃数据,使用集群扩展性能(添加更多的处理器和内存)及容量(添加更多的固态硬盘),并将有时部署在广域网上的核心存储的延迟隐藏起来。用户发觉它是加速渲染、基因组分析、金融模拟、软件工具和二进制代码库等性能的好方法。

    在面向私有对象的文件存储这种用例下,用户希望从NAS迁移到私有对象存储。他们往往喜欢私有对象的效率、简单性和弹性,但不喜欢其性能或基于对象的API接口。在这种用例下,FXT集群提升了私有对象存储的性能,其实现方式与NAS优化这种用例一样。

    Avere Systems的产品管理和市场营销高级主管杰夫·泰伯(Jeff Tabor)说:“此外,FXT集群提供了熟悉的NAS协议,可转换成存储端的对象API,那样用户不用改写应用程序,或不用改变数据访问方法,就可以使用对象存储。”

    最后,云存储网络这种用例类似面向私有对象的文件存储这种用例,增添的一个好处是,企业可以开始构建更少的数据中心,将数据迁移到云端。延迟是这种用例要克服的挑战之一,这正是物理FXT集群所要解决的。访问时,数据在FXT集群上本地缓存,那样之后进行的所有访问都具有低延迟的优点。FXT集群可能拥有多达480TB的总缓存容量,因而大量数据可以在本地存储起来,避免云的延迟。

    DriveScale

    大数据通常存储在本地磁盘上,这意味着为了在大数据集群的规模不断扩大时,能实现效率和扩展性,就需要保持计算和存储之间的逻辑关系。于是出现了一个问题是:如何将磁盘从服务器分离开来,又继续在处理器/内存组合和驱动器之间提供同样的逻辑关系?如何实现共享存储池的成本、规模和可管理性等方面的效率,同时仍提供局部性的好处?据说DriveScale通过利用Hadoop数据存储,就可以做到这点。

    然而,希望为大数据应用安装和管理资源的存储专业人员主要受制于Hadoop架构,这种架构本身是针对服务器上的本地驱动器来优化的。随着数据量不断增加,唯一的办法就是购买数量越来越多的服务器,不仅要满足计算需求,还要提供更大的存储容量。DriveScale让用户得以在独立于计算容量的情况下单独购置存储容量,从而在每个层面做到容量正好。

    DriveScale的产品管理副总裁S.K. Vinod说:“没有理由无法将大家在数据中心习惯获得的专有纵向扩展基础设施环境具有的优点引入到商用横向扩展环境。我们为IT管理员提供了构建和运行弹性大数据基础设施的工具,在这种基础设施环境下,服务器和磁盘子系统可以根据需要,实时分解和重组。单个驱动器从JBOD连接磁盘组成的共享池配置给服务器,因而消除了成本不相称。”

    Hedvig

    Hedvig分布式存储平台提供了一种统一解决方案,让你可以定制结合低成本商用硬件和高性能存储,以支持任何应用程序、虚拟机管理程序、容器或云。据说它可以针对数据块、文件和对象存储,为任何规模的任何计算提供存储,具有可编程性,而且支持任何操作系统、虚拟机管理程序或容器。此外,混合多站点复制使用独特的灾难恢复策略来保护每个应用程序,并通过跨多个数据中心或云的存储集群提供高可用性。最后,高级数据服务让用户可以借助可按照卷来选择的一系列企业服务,定制存储。

    Hedvig公司首席执行官兼创始人阿维纳什·拉克希曼(Avinash Lakshman)说:“对于Hadoop来说,如果你想要一些功能由HDFS来处理,其他功能由存储平台来处理,这至关重要。”

    Nimble

    Nimble存储预测闪存平台据说可显著提高分析应用和大数据工作负载的性能。它通过结合闪存性能和预测分析,防止IT复杂性导致的数据速度面临的障碍来做到这一点。

    本文转自d1net(转载)

    展开全文
  • 然后,IDS寻找重复出现的模式,把这些模式作为符号存储在压缩词典中,参见图1:一个职员数据库表的表示形式,显示了哪些数据可压缩以及如何在压缩词典中表示它们在创建词典之后,IDS将该字典存储在一个词典存储库中...
  •  本书是经典名著《oracle 10g数据库管理艺术》一书的姊妹篇,通过示例全面而又详细地讲述了oracle 11g的新特性,讲述了更改管理、数据库自动化、性能管理、故障诊断、存储管理、安全管理、性能管理、应用开发、数据...
  •  本书是一本关于oracle database 9i、10g 和11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,分区和并行,以及...
  •  本书是一本关于Oracle 9i & 10g数据库体系结构的权威图书,涵盖了所有最重要的Oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并利用具体的...
  •  本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善...
  • 上一篇我们讨论了如何进行数据库的结构设计,并具体介绍了实体关系图和规范化的技术。 在设计 ERD 时,首先需要定义实体以及实体的属性,也就是定义表的结构。...下图出了 SQL 中常见的数据类型,包括字符串...

    《SQL 从入门到精通》专栏目录


    上一篇我们讨论了如何进行数据库的结构设计,并具体介绍了实体关系图和规范化的技术。

    在设计 ERD 时,首先需要定义实体以及实体的属性,也就是定义表的结构。定义表结构时,首先需要确认表中包含哪些字段以及字段的数据类型。今天我们就来了解一下如何为表中的字段选择合适的数据类型。

    常见数据类型

    字段的数据类型定义了该字段能够存储的数据值,以及允许执行的操作。下图列出了 SQL 中常见的数据类型,包括字符串类型、数字类型、日期时间类型以及二进制类型。

    data type

    我们分别在第 8 篇、第 9 篇以及第 10 篇介绍了与这些数据类型相关的函数和类型转换函数。

    字符串类型

    字符串类型用于存储字符和字符串数据,主要包含三种具体的类型:定长字符串、变长字符串以及字符串大对象。各种数据库对于字符串类型的支持如下:

    数据类型 Oracle MySQL SQL Server PostgreSQL
    定长字符串 CHAR(n) CHAR(n) CHAR(n) CHAR(n)
    变长字符串 VARCHAR2(n) VARCHAR(n) VARCHAR(n) VARCHAR(n)
    字符串大对象 CLOB TEXT VARCHAR( MAX ) TEXT

    定长字符串

    CHAR(n) 表示长度固定的字符串,其中 n 表示字符串的长度。常见的定义方式包括:

    • CHAR,长度为 1 的字符串,只能存储 1 个字符;
    • CHAR(5),长度为 5 的字符串。

    对于定长字符串,如果输入的字符串长度不够,将会使用空格进行填充。例如类型为 CHAR(5) 的字段,如果输入值为“A”,实际存储的内容为“A####”;# 代表空格,也就是一个字符“A”加上 4 个空格。

    CHARACTER 和 CHAR 是同义词,可以通用。

    通常来说,只有存储固定长度的数据时,才会考虑使用定长字符串类型。例如 18 位身份证,6 位邮政编码等。

    变长字符串

    VARCHAR(n) 表示长度不固定的字符串,其中 n 表示允许存储的最大长度。

    对于变长字符串,如果输入的字符串长度不够,存储实际的内容。例如类型为 VARCHAR(5) 的字段,如果输入值为“A”,实际存储的内容为“A”。

    CHAR VARYING 和 CHARACTER VARYING 是 VARCHAR 的同义词,可以通用。 Oracle 中使用 VARCHAR2 表示变长字符串类型。

    变长字符串类型一般用于存储长度不固定的内容,例如名字、电子邮箱、产品描述等。

    字符串大对象

    CLOB 表示字符串大对象,通常用于存储普通字符串类型无法支持的更长的字符串数据。例如整篇文章、备注、评论等。

    Oracle 使用 CLOB 类型存储大型字符串;MySQL 提供了 TINYTEXT、TEXT、MEDIUMTEXT 以及 LONGTEXT 分别用于存储不同长度的文本数据;SQL Server 使用 VARCHAR( MAX ) 存储大文本数据;PostgreSQL 提供了 TEXT 类型存储任意长度的字符串。

    CHARACTER LARGE OBJECT 和 CHAR LARGE OBJECT 是 CLOB 的同义词,可以通用。

    在 SQL 中,输入字符串类型的常量和数据时,需要使用单引号引用:

    'S001'
    '张飞'
    '13512345678'
    

    数字类型

    数字类型主要分为两类:精确数字和近似数字。各种数据库对于数字类型的支持如下:

    数据类型 Oracle MySQL SQL Server PostgreSQL
    精确数字 SMALLINT
    INTEGER

    NUMERIC(p, s)
    SMALLINT
    INTEGER
    BIGINT
    NUMERIC(p, s)
    SMALLINT
    INTEGER
    BIGINT
    NUMERIC(p, s)
    SMALLINT
    INTEGER
    BIGINT
    NUMERIC(p, s)
    近似数字 BINARYFLOAT
    BINARY
    DOUBLE
    FLOAT
    DOUBLE PRECISION
    REAL
    DOUBLE PRECISION
    REAL
    DOUBLE PRECISION

    精确数字

    精确数字类型用于存储整数或者包含固定小数位的数字。

    其中,SMALLINT、INTEGER 和 BIGINT 都可以表示整数。对于 MySQL、SQL Server 以及 PostgreSQL,SMALLINT 支持 -32768 ~ 32767;INTEGER 支持 -2147483648 ~ 2147483647;BIGINT 支持 -2^63^ ~ 2^63^-1。Oracle 中的 SMALLINT 和 INTEGER 都是NUMBER(38,0) 的同义词;Oracle 不支持 BIGINT 关键字。

    INT 是 INTEGER 的同义词,可以通用。 MySQL 中还提供了 TINYINT,支持 -128 ~ 127;MEDIUMINT 支持 -8388608 ~ 8388607。另外,MySQL 中的所有整型分为有符号类型(例如 INTEGER、INTEGER SIGNED)和无符号类型(例如 INTEGER UNSIGNED),无符号整型支持的正整数范围扩大了一倍。

    NUMERIC(p, s) 和 DECIMAL(p, s) 可以看作相同的类型,用于存储包含小数的精确数字。

    其中,精度 p 表示总的有效位数,刻度 s 表示小数点后允许的位数。例如,123.04 的精度为 5,刻度为 2。p 和 s 是可选的,s 为 0 表示整数。SQL 标准要求 p ≥ s ≥ 0 并且 p > 0。

    DEC 是 DECIMAL 的同义词,可以通用。 Oracle中的 NUMERIC 和 DECIMAL 都是 NUMBER 的同义词。

    整数类型通常用于存储数字 id、产品数量、课程得分等数字;NUMERIC 用于存储产品价格、销售金额等包含小数并且准确度要求高的数据。

    近似数字

    近似数字也称为浮点型数字,一般使用较少,主要用于科学计算领域。

    REAL 表示单精度浮点数,通常精确到小数点后 6 位;DOUBLE PRECISION 表示双精度浮点数,通常精确到小数点后 15 位。浮点数运算更快,但是可能丢失精度;浮点数的比较运算可能会导致非预期的结果。

    Oracle 使用 BINARY_FLOAT 和 BINARY_DOUBLE 表示浮点数。 MySQL 使用 FLOAT 表示单精度浮点数,同时区分有符号和无符号的浮点数。

    在 SQL 中,输入数字类型的常量和数据时,常见的方法如下:

    10
    10.5
    10.5E+3 -- 科学计数法,105000
    10.5F -- 单精度浮点数
    10.5D -- 双精度浮点数
    

    日期时间类型

    我们在第 10 篇中介绍了日期和时间数据的存储方式,在此简单回顾一下。与日期和时间相关的数据类型包括:DATE、TIME 以及 TIMESTAMP。

    DATE 存储年、月、日;TIME 存储时、分、秒,以及秒的小数部分;TIMESTAMP 同时包含年、月、日、时、分、秒,以及秒的小数部分。

    Oracle 中的 DATE 类型包含了额外的时、分、秒,不支持 TIME 类型。 SQL Server 使用 DATETIME2 和 DATETIMEOFFSET 表示时间戳。 MySQL 还支持 DATETIME 表示时间戳。

    如果存储日期信息,例如生日,可以使用 DATE 类型;如果需要更高的时间精度,例如订单时间、发车时间等,可以使用 TIMESTAMP 类型;TIME 类型使用较少。

    在 SQL 中,输入日期时间类型的常量和数据时,常见的方法如下:

    '2019-12-25'
    DATE '2019-12-25'
    '13:30:15'
    TIME '13:30:15'
    '2019-12-25 13:30:15'
    TIMESTAMP '2019-12-25 13:30:15'
    

    二进制类型

    二进制类型用于存储二进制数据,例如文档、图片,视频等。二进制类型具体包含以下三种:

    • BINARY(n),固定长度的二进制数据,n 表示二进制字符数量;
    • VARBINARY(n),可变长度的二进制数据,n 表示支持的最大二进制字符数量;
    • BLOB,二进制大对象。

    Oracle 支持 BLOB 二进制类型;MySQL 支持 BINARY、VARBINARY 以及 TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB 二进制类型;SQL Server 支持 BINARY、VARBINARY 以及 VARBINARY ( MAX ) 二进制类型;PostgreSQL 支持 BYTEA 二进制类型。

    选择合适的数据类型

    最后我们来看看如何选择合适的数据类型。首先,应该满足存储业务数据的需求;其次,还需要考虑性能和使用方便。一般来说,先确定基本的类型:

    • 文本数据,只能使用字符串类型;
    • 数值数据,尤其是需要进行数学运算的数据,选择数字类型;
    • 日期和时间信息,最好使用原生的日期时间类型;
    • 文档、图片、音频和视频等,使用二进制类型;或者可以考虑存储在文件服务器上,然后在数据库中存储文件的路径。

    接下来需要进一步确定具体的数据类型。在满足数据存储和扩展的前提下,尽量使用更小的数据类型,可以节省一些存储,通常性能也会更好。例如,对于一个小型公司而言,员工编号通常不会超过几百,使用 SMALLINT 已经足够。对于 MySQL 而言,不需要支持负数的话可以考虑 UNSIGNED 类型。

    如果需要存储精确的数字,不要使用浮点数类型。对于金额,可以使用 NUMERIC(p, s);或者将数据乘以 10 的 N 次方,例如将 10.35 元存储为整数 103500,然后在应用程序中进行处理和前端显示转换。

    对于字符数据,一般使用 VARCHAR 类型;如果数据长度能够确保一致,可以使用 CHAR;指定最大长度时,满足存储需求的前提下尽量使用更小的值。只有在普通字符串类型长度无法满足时才考虑大字段类型。

    不要使用字符串存储日期时间数据,它们无法支持数据的运算。例如获得两个日期之间的间隔,需要依赖应用程序进行转换和处理。最好也不要使用整数类型存储当前时间距离 1970 年 1 月 1 日的毫秒数来表示时间,这种方式在显示时需要进行转换,不是很方便。

    另外,如果一个字段同时出现在多个表中,使用相同的数据类型。例如,员工表中的部门编号(dept_id)字段与部门表的编号(dept_id)字段保持类型一致。

    小结

    今天我们介绍了 SQL 中的基本数据类型以及它们在各种数据库中的实现,同时分析了选择数据类型时的一些通用的原则。需要注意的是,同一数据类型在不同数据库中支持的范围大小和精确度可能不同;因此,使用任何数据类型之前都应该查看相关的数据库文档。

    讨论题:数据库还支持许多其他的数据类型,例如 XML、JSON 等。说说你使用的数据库中还有哪些常用的数据类型,有哪些应用场景和注意事项。

    展开全文
  • mysql 常用命令

    2018-11-12 14:37:00
    1.DDL(data definition language)数据库定义语言:  定义数据段,数据库、表、、索引等数据库对象。常用的包括create、drop、update  创建数据库: ... information_schema 存储数据库对象信息,比如用...
  • OpenDBDiff软件使用说明

    千次阅读 2015-04-12 21:35:37
    数据库对象包括表(,索引,约束,触发器),存储过程,函数,视图,用户,架构,角色等。该软件实现了一下功能。 1,对象的比较功能:通过比较后,可以知道缺了哪些,需要修改哪些对象,需要删除哪些对象。还...
  •   Java通过JDBC获得连接以后,得到一个Connection对象,可以从这个对象里获得有关数据库关系系统的各种信息,包括数据库中的各种表,表中的各个,数据类型,触发器,存储过程等各方面的信息。根据这些信息,JDBC...
  • [Oracle.11g权威指南(第2版)].谷长勇.扫描版.pdf

    千次下载 热门讨论 2013-06-23 21:16:09
    第七部分为Oracle 11g数据库集群技术与高可用性,包括真正应用集群(RAC)、自动存储管理(ASM)、容灾与数据卫士、故障诊断、真正应用测试等内容;第八部分为商业智能与数据仓库,介绍了Oracle 11g数据库在构建企业...
  • Java面试汇总-MySQL篇

    2020-12-10 10:47:32
    2、数据库引擎有哪些 如何查看mysql提供的所有存储引擎 mysql> show engines; mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能...
  • 2、数据库引擎有哪些 如何查看mysql提供的所有存储引擎 mysql> show engines; mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE MYISAM: 全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差...
  • MySQL篇

    2020-09-05 15:47:44
    2、数据库引擎有哪些 如何查看mysql提供的所有存储引擎 mysql> show engines; mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,...
  • MySQL

    2020-08-30 16:36:52
    2、数据库引擎有哪些 如何查看mysql提供的所有存储引擎 mysql> show engines; mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,...
  • 笔记

    2019-11-19 20:26:23
    hbase的特点不包括低可靠性,面向行 非结构化数据不包括数据库二维逻辑表 Hadoop诞生于2005-2006年 ... HBase是在Hadoop之上构建的开源分布式结构化数据存储系统,它有哪些特点?非关系型,面向 2...
  • Mariadb 查询缓存

    2018-10-01 21:41:21
    Mariadb查询缓存 查询缓存: 如何判断是否命中? 通过查询语句的哈希值... 查询中包括了UDF(User-Define-Function)、存储函数、用户自定义变量、临时表、mysql库中系统表 或者包含级别权限的表(不同用户可能查...
  • 校招积累

    2020-02-20 23:57:03
    数据库 什么是覆盖索引?...2.因为索引是按照值顺序存储的,所以对于IO密集的范围查找会比随机从磁盘读取每一行数据的IO少很多。 3.一些存储引擎如myisam在内存中只缓存索引,数据则依赖于操作系...
  • 全书共分为11章,首先在第1章中详细介绍了sql server 2008的架构和配置,然后在接下来的10个章节中深入探讨了sql server 2008数据存储和查询处理等各个方面的内部机制,包括数据库数据库文件、表、索引、跟踪、...
  • 他主要从事新兴技术的研究,研究方向包括数据库系统、版本系统、语义网和敏捷软件开发等。 目录 封面 -10 封底 468 扉页 -9 版权 -8 前言 -7 目录 -4 第一部分 MySQL开发入门 1 第1章 MySQL与开源运动 2 1.1 ...
  • 全书共分为11章,首先在第1章中详细介绍了sql server 2008的架构和配置,然后在接下来的10个章节中深入探讨了sql server 2008数据存储和查询处理等各个方面的内部机制,包括数据库数据库文件、表、索引、跟踪、...

空空如也

空空如也

1 2 3 4
收藏数 77
精华内容 30
热门标签
关键字:

列存储数据库包括哪些