数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
严格来说,数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
数据就是数值,也就是我们通过观察、实验或计算得出的结果。数据有很多种,最简单的就是数字,也可以是文字、图像、声音等等。另外数据也可以指对客观事件进行记录并用以鉴别区分的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。
1)重要2)非二进制的,文本形式的更适合于存放到数据库中3)有关系,有复杂逻辑的数据4)数据管理复杂的
DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。
在国外,也有公司把DBA称作数据库工程师(DatabaseEngineer),两者的工作内容基本相同,都是保证数据库服务7×24小时的稳定高效运转,但是需要区分一下DBA和数据库开发工程师(DatabaseDeveloper):1)数据库开发工程师的主要职责是设计和开发数据库管理系统和数据库应用软件系统,侧重于软件研发;2)DBA的主要职责是运维和管理数据库管理系统,侧重于运维管理。
官方对DBA工作范畴规划:
一、初级DBA:1)安装部署2)基本参数配置3)备份策略设计与实现
PS:这一级别的能力需要Linux运维人员必须要掌握的
二、中级DBA:1)故障处理能力(备份或者其他手段)2)MySQL监控3)基本优化能力(索引、执行计划、慢日志分析)----->隐含条件:有一定的SQL能力4)主从复制的基本管理、应用、故障处理
三、高级DBA:1)MySQL性能调优:对整体架构、“业务”、“用户行为”深入了解,要有很扎实的SQL能力2)高性能、高可用架构:对整体架构、“业务”、“用户行为”深入了解
DBMS一般指数据库管理系统。
数据库管理系统(DatabaseManagementSystem)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(DataDefinitionLanguage)和数据操作语言DML(DataManipulationLanguage),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。数据库管理系统是数据库系统的核心,是管理数据库的软件。数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。
1)更有条理的存储和查询数据2)提供更高级的数据管理方式(备份、恢复、优化、安全等等)
DBMS分为关系型数据库(RDBMS)和非关系型数据库(NoSQL)
关系型数据库的特点:1)二维表2)典型产品:传统企业一般使用Oracle,互联网企业一般使用MySQL3)数据存取是通过SQL4)最大特点,数据安全性方面强(ACID)
不是否定关系型数据库,而是做为关系型数据库的的补充。
1)web1.0时代
企业提供内容,用户浏览,所以关系型数据库够用,并发并不高,所以不需要NoSQL。
2)web2.0时代
核心是企业提供平台,用户参与提供内容。这时关系型数据库无法满足需求了。
3)2003NoSQL出现
1)依然高性能高并发2)数据持久化的功能3)支持多数据类型,主从复制和集群4)管理不再使用SQL了
键值(KV)存储:Memcached、Redis列存储(column-oriented):HBASE(新浪,360)、Cassandra(200台服务器集群)文档数据库(document-oriented):MongoDB(最接近关系型数据库的NoSQL)图形存储(Graph):Neo4j
OracleMySQLMariaDBperconaDB微软:SQLServerIBM:DB2PostgreSQLMongoDBRedis最后三个目前广泛应用于大型互联网公司