精华内容
下载资源
问答
  • 如果当前使用的数据库是PostgreSQL 9.1+,那就无需使用template_postgis之类的模版数据库来创建空间数据库,使用一条扩展命令SQL即可令数据库支持,在pgAdmin中打开SQL视图,输入并执行: CREATE EXTENSION postgis;...

    如果当前使用的数据库是PostgreSQL 9.1+,那就无需使用template_postgis之类的模版数据库来创建空间数据库,使用一条扩展命令SQL即可令数据库支持,pgAdmin中打开SQL视图,输入并执行:

    CREATE EXTENSION postgis;

    命令运行完后,数据库将支持空间数据。

    附录:PostGIS使用手册

    展开全文
  • SpringBoot+druid同时连接不同类型数据库及PageHelper支持类型库查询分页功能 例子及场景:最近使用SpringBoot+durid需要连接多个数据源:同时支持MySQL、Oracle,遇到问题及处理方法总结如下: 一、...

    SpringBoot+druid同时连接不同类型数据库及PageHelper支持多类型库查询分页功能

     

    例子及场景:最近使用SpringBoot+durid需要连接多个数据源:同时支持MySQL、Oracle,遇到问题及处理方法总结如下:

    一、SpringBoot+druid支持同时连接MySQL和Oracle

    pom.xml配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.6.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.ywx</groupId>
        <artifactId>springboot-bi</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springboot-bi</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
            <mybatis.boot.version>1.3.2</mybatis.boot.version>
            <druid.version>1.1.13</druid.version>
            <poi.version>3.17</poi.version>
        </properties>
    
    
        <dependencies>
            <!--SpringBoot Web容器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- SpringBoot 拦截器 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--常用工具类 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
            </dependency>
            <!-- pagehelper 分页插件 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.10</version>
            </dependency>
            <!-- SpringBoot集成mybatis框架 -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.boot.version}</version>
            </dependency>
            <!--阿里数据库连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- oracle数据库驱动 -->
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc14</artifactId>
                <version>10.2.0.1.0</version>
            </dependency>
            <!-- Mysql驱动包 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
            </dependency>
            <!-- SpringBoot集成thymeleaf模板 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <!-- yml解析器 -->
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
            </dependency>
            <!-- excel工具 -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>${poi.version}</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    注:oracle驱动包在maven仓库中找不到,需下载手动导入到maven仓库。

    yml配置文件:

    spring:
      datasource:
        druid:
          datasource1:
            url: jdbc:oracle:thin:@10.xx.xx.xx:1521:orcl
            username: xxxx
            password: xxxx
            driverClassName: oracle.jdbc.OracleDriver
    
          datasource2:
            # 数据源开关/默认关闭
            url: jdbc:oracle:thin:@10.xx.xx.xx:1521:orcl
            username: xepacs
            password: xxx
            driverClassName: oracle.jdbc.driver.OracleDriver
    
          datasource3:
            url: jdbc:mysql://10.xx.xx.xx:3306/ecg
            username: ecg
            password: xxx
            driverClassName: com.mysql.jdbc.Driver
    
          # 初始连接数
          initialSize: 5
          # 最小连接池数量
          minIdle: 10
          # 最大连接池数量
          maxActive: 20
          # 配置获取连接等待超时的时间
          maxWait: 60000
          # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          timeBetweenEvictionRunsMillis: 60000
          # 配置一个连接在池中最小生存的时间,单位是毫秒
          minEvictableIdleTimeMillis: 300000
          # 配置一个连接在池中最大生存的时间,单位是毫秒
          maxEvictableIdleTimeMillis: 900000
          # 配置检测连接是否有效
          validationQuery: SELECT 1 FROM DUAL
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          statViewServlet:
            enabled: true
            url-pattern: /monitor/druid/*
          filter:
            stat:
              # 慢SQL记录
              log-slow-sql: true
              slow-sql-millis: 1000
              merge-sql: true
            wall:
              config:
                multi-statement-allow: true

    数据源基本参数配置类:

    package com.ywx.framework.config.properties;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * 数据源配置文件封装类.
     *
     * @author ybc
     * @date 2019-06-25-10:17
     */
    @Configuration
    public class DruidProperties {
        @Value("${spring.datasource.druid.initialSize}")
        private int initialSize;
    
        @Value("${spring.datasource.druid.minIdle}")
        private int minIdle;
    
        @Value("${spring.datasource.druid.maxActive}")
        private int maxActive;
    
        @Value("${spring.datasource.druid.maxWait}")
        private int maxWait;
    
        @Value("${spring.datasource.druid.timeBetweenEvictionRunsMillis}")
        private int timeBetweenEvictionRunsMillis;
    
        @Value("${spring.datasource.druid.minEvictableIdleTimeMillis}")
        private int minEvictableIdleTimeMillis;
    
        @Value("${spring.datasource.druid.maxEvictableIdleTimeMillis}")
        private int maxEvictableIdleTimeMillis;
    
        @Value("${spring.datasource.druid.validationQuery}")
        private String validationQuery;
    
        @Value("${spring.datasource.druid.testWhileIdle}")
        private boolean testWhileIdle;
    
        @Value("${spring.datasource.druid.testOnBorrow}")
        private boolean testOnBorrow;
    
        @Value("${spring.datasource.druid.testOnReturn}")
        private boolean testOnReturn;
    
        public DruidDataSource dataSource(DruidDataSource datasource) {
            /** 配置初始化大小、最小、最大 */
            datasource.setInitialSize(initialSize);
            datasource.setMaxActive(maxActive);
            datasource.setMinIdle(minIdle);
    
            /** 配置获取连接等待超时的时间 */
            datasource.setMaxWait(maxWait);
    
            /** 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 */
            datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
    
            /** 配置一个连接在池中最小、最大生存的时间,单位是毫秒 */
            datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
            datasource.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis);
    
            /**
             * 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
             */
            datasource.setValidationQuery(validationQuery);
            /** 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 */
            datasource.setTestWhileIdle(testWhileIdle);
            /** 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */
            datasource.setTestOnBorrow(testOnBorrow);
            /** 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */
            datasource.setTestOnReturn(testOnReturn);
            return datasource;
        }
    }
    

    数据源配置类:

    package com.ywx.framework.config;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
    import com.ywx.framework.common.enums.DataSourceType;
    import com.ywx.framework.config.properties.DruidProperties;
    import com.ywx.framework.datasource.DynamicDataSource;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    
    import javax.sql.DataSource;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @author ywx
     * @date 2019-06-25-10:16
     */
    @Configuration
    public class DruidConfig {
        @Bean
        @ConfigurationProperties("spring.datasource.druid.datasource1")
        public DataSource tmsDataSource(DruidProperties druidProperties) {
            DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
            return druidProperties.dataSource(dataSource);
        }
    
        @Bean
        @ConfigurationProperties("spring.datasource.druid.datasource2")
        //@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
        public DataSource pacsDataSource(DruidProperties druidProperties) {
            DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
            return druidProperties.dataSource(dataSource);
        }
    
        @Bean
        @ConfigurationProperties("spring.datasource.druid.datasource3")
        public DataSource ecgDataSource(DruidProperties druidProperties) {
            DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
            return druidProperties.dataSource(dataSource);
        }
    
        @Bean(name = "dynamicDataSource")
        @Primary
        public DynamicDataSource dataSource(DataSource tmsDataSource, DataSource pacsDataSource, DataSource ecgDataSource) {
            Map<Object, Object> targetDataSources = new HashMap<>();
            targetDataSources.put(DataSourceType.FIRST.name(), tmsDataSource);
            targetDataSources.put(DataSourceType.SECOND.name(), pacsDataSource);
            targetDataSources.put(DataSourceType.THIRD.name(), ecgDataSource);
            return new DynamicDataSource(tmsDataSource, targetDataSources);
        }
    }
    
    

    以上,已经完成了MySQL和Oracle数据源的配置了,数据源可以正常连接,但是查询数据后如果需要通过PageHelper实现分页的话,还需要配置PageHelper支持不同类型数据库分页sql的切换。

    二、PageHelper配置自动支持不同类型数据库分页的切换

     

    如果使用单库连接,可以使用以下配置:

    # PageHelper分页插件
    pagehelper: 
      helperDialect: mysql
      reasonable: true
      supportMethodsArguments: true
      params: count=countSql

    可以参考PageHelper官网文档

    (1) helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:
    oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby
    特别注意:使用 SqlServer2012 数据库时,需要手动指定为 sqlserver2012,否则会使用 SqlServer2005 的方式进行分页。
    你也可以实现 AbstractHelperDialect,然后配置该属性为实现类的全限定名称即可使用自定义的实现方法。
    (2) offsetAsPageNum:默认值为 false,该参数对使用 RowBounds 作为分页参数时有效。 当该参数设置为 true 时,会将 RowBounds 中的 offset 参数当成 pageNum 使用,可以用页码和页面大小两个参数进行分页。
    (3) rowBoundsWithCount:默认值为false,该参数对使用 RowBounds 作为分页参数时有效。 当该参数设置为true时,使用 RowBounds 分页会进行 count 查询。
    (4) pageSizeZero:默认值为 false,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)。
    (5) reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
    (6) params:为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。
     (7) supportMethodsArguments:支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和 ArgumentsObjTest。
    (8) autoRuntimeDialect:默认值为 false。设置为 true 时,允许在运行时根据多数据源自动识别对应方言的分页 (不支持自动选择sqlserver2012,只能使用sqlserver)

    如果使用多数据源,需要修改pagehelper配置项,配置如下:

    # PageHelper分页插件
    pagehelper:
      #  helperDialect: mysql
      reasonable: false
      supportMethodsArguments: true
      params: count=countSql
      # 默认false,当为true时,自动检验适合的数据库
      auto-dialect: true
      # 这个一定要加上,不然mysql和oracle分页两个只能用一个,另一个会报错,加上后,两中数据库分页都可以用了
      auto-runtime-dialect: true

    以上,已经完成支持不同类型数据库多数据源的连接已经分页实现了。

     

    展开全文
  • 数据库的简介与类型

    万次阅读 多人点赞 2018-03-23 10:04:26
    1.1 什么是数据库? 简单的说,数据库(英文Database)就是一个存放数据的仓库,这个仓库是按照一定的数据结果(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、我们可以通过数据库提供的多种方法...

    1.1 什么是数据库?

     

              简单的说,数据库(英文Database)就是一个存放数据的仓库,这个仓库是按照一定的数据结果(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、我们可以通过数据库提供的多种方法来管理数据库里的数据更简单的形象理解,数据库和我们生活中存放杂物的仓库性质一样,区别只是存放的东西不同。

    1.2 数据库的种类

              早期比较流行的数据库模型有三种,分别为层次式数据库、网络式数据库和关系型数据库。而在当今的互联网中,最常用的数据库模型主要是两种,即关系型数据库和非关系型数据库

    1.3 关系型数据库介绍

    (1)关系型数据库由来

              网络数据库和层次数据库很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户对这两种数据库进行存取时,依然需要明确数据的存储结构,支出存储路径。而关系数据库就可以较好地解决这些问题 

     

    (2)关系型数据库介绍

    关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。 
              Oracle 在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大市场,而MySQL也是不容忽视的数据库,以至于被Oracle重金收购 

    MySQL 互联网市场 
    Oracle 传统企业 

    (3)关系型数据库举例

    表格

    1.4 什么是关系型数据库

    二维表格 

    1. Mysql和Oracle数据库,互联网运维最常用的是MySQL 
    2. 通过SQL结构化查询语句存储数据 
    3. 保持数据一致性方面很强,ACID理论

    1.5 非关系型数据库介绍

    1.6 非关系型数据库诞生背景

    非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Olnly SQL” 
        指的是非关系型数据库,而不是“No SQL”的意思,因此,NoSQL的产生并不是要彻底地否定非关系型数据库,而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。 

           随着互联网Web2.0网站的星期,传统的关系型数据库在应付web2,0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。 

             例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品。NOSQL(非关系型)类的数据就是在这样的情景下诞生并得到了非常迅速的发展 

    高性能、高并发、对数据一致性要求不高 
            开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,Redis,mongb也逐渐越来越受到各类大中小型公司的欢迎和追捧 

    NOSQL非关系型数据库小结: 
    1、NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充 
    2、NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能 
    3、NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库) 

    1.7 非关系型数据库种类

    (1)键值(Key-Value)存储数据库

    k1—>数据 
    k2—>数据 
          键值数据库就类似传统语言中使用哈希表,可以通过key来添加、查询或删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性 

            键值(Key-Value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发 

    典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB 

    (2)列存储(Column-oriedted)数据库 ======>了解即可,一般公司用不到

       列存储数据库将数据库存储在列族(column family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。
    

    这部分数据库通常用来分布式存储的海量数据,键仍然存在,但是他们的特点是指向了多个列。 
    典型产品:Cassandra,HBase 

    (3)面向文档(Document-Oriented)数据库

            面向文档数据库会将以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关系对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储 

    典型产品:MorgoDB、CouchDB 
    (4)图形(Graph)数据库

    1.8 常用关系型数据库产品介绍

    1.8.1 oracle数据库

    Oracle前身叫SDL、由Larry Ellison和两个变成任意在1977创办,他们开发了主机的拳头产品,在市场上大量销售。Oracle公司是最早开发关系型数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率数一数二 
    Oracle公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商 
    主要应用范围:传统大企业、大公司、政府、金融、证券等。 
    版本升级:oracle8i,oracle9i,oracle10g,oracle11g,oracle12c

    关系型数据库分类

    1.8.2 MySQL

     
    MySQL被广泛的应用在Internet上的大中小型网站中。由于体积小速度快总体拥有成本低,开放源代码

    1.8.3 MariaDB数据库

     
        MAriaDB数据库管理系统是MySQL数据库的一个分支,主要由开元社区维护,采用GPL授权许可。开发这个MariaDB的原因之一是:甲骨文公司收购了MySQL后,有MySQL闭源的潜在风险,因此MySQL开元社区采用分支的方式来避开这个风险。 

    MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM的存储引擎,它使用了PerconaXtraDB(InnoDB的变体)这个版本还包括了PrimeBase XT (PBXT)和Federated X存储引擎。

    1.8.4 SQL Server数据库

          Microsoft SQL Server是微软公司开发的大型关系数据库系统。SQL Server的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Winodws操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都得到较大的提升,对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构。SQL Server都是一个很好的选择。SQL Server的缺点是只能在Windows系统下运行

    1.8.5 Access数据库

    Access是入门级小型桌面数据库,性能安全性都很一般,可供个人管理或小型企业只用 
    Access不是数据库语言,只是一个数据库程序,目前最新版本为Office 2007,其特点主要如下: 
    (1)完善地管理各种数据库对象,具有强大的数据组织,用户管理、安全检查等功能 
    (2)强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户管理系统具有传统的XSASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Ckient/Server)结构和响应的数据库安全机制,Access具备了许多先进的大型数据管理管理系统所具备的特征。 
    (3)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表 
    (4)作为Office套件的一部分,可以与Office集成,实现无缝连接 
    (5)能够利用Web检索和发布数据,实现与Internet的连接,Access主要适用于中小企业应用系统,或作为客户机/服务器系统中的客户端数据库。

    1.9 其他不常用关系型数据库

    DB2,PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡化了普通运维的实现,特别是互联网公司几乎见不到

     

    常用非关系型数据库产品介绍 

    1.9.1 memcached(key-value)

     
      Memcaced是一个开源的高性能的具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的web应用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用户都在使用它来架构主机的大负载网站或提升主机的高访问网站的响应速度。注意:Memcache 是这个项目的名称,而Memcached是服务端的主程序文件名。 
    缓存一般用来保存一些进程被存取的对象或数据,通过缓存来存取对象或数据要比在磁盘上存取块很多,前者是内存,后者是磁盘、Memcached是一种纯内存缓存系统,把经常存取的对象或数据缓存在memcached的内存中,这些被缓存的数据被程序通过API的方式被读取,memcached里面的数据就像一张巨大的hash表,数据以key-value对的方式存在。Memcached通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度,构建出快速更快的可扩展的Web应用。 
    官网:http://memcached.org/ 
    由于memcached为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于Memcached开发了一个开源项目Memcachedb。通过为Memcached增加Berkeley DB的特久化存储机制和异步主复制机制,使Memcached具备了事务恢复能力、持久化数据能力和分布式复制能力,memcached非常适合需要超高性能读写速度、持久化保存的应用场景,但是最近几年逐渐被其他的持久化产品替代如Redis

    Memcached小结: 
    1、key-value行数据库 
    2、纯内存数据库 
    3、持久化memcachedb(sina)

    1.9.2 Redis(key-value)

     
            和Memcached类似,redis也是一个key-value型存储系统。但redis支持的存储value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。为了保证效率,redis的数据都是缓存在内存中。区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在基础上实现了master-slave(主从)同步。 

    redis是一个高性能的key-value数据库。redis的出现、很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python、Ruby、Erlang、PHP客户端,使用方便。 
    官方:http://www.redis.io/documentation 
    redis特点: 
    1)支持内存缓存,这个功能相当于memcached 
    2)支持持久化存储,这个功能相当于memcachedb,ttserver 
    3)数据库类型更丰富。比其他key-value库功能更强 
    4)支持主从集群、分布式 
    5)支持队列等特殊功能 
    应用:缓存从存取memcached更改存取redis

    1.9.3 MongoDB(Document-oriented)

     
        MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。他支持的数据库结构非常松散,类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongodb最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 

    特点: 
    高性能、易部署、易使用、存储数据非常方便 
    主要功能特性: 

    1. 面向集合存储,易存储对象类型的数据 
    2. “面向集合”(Collenction-Orented)意思是数据库被分组存储在数据集中,被称为一个集合(Collenction)每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档,集合的概念类似关系型数据库(RDBMS)里的表(table)不同的是它不需要定义任何模式(schema) 
    3. 模式自由 
    4. 模式自由(schema-free)意为着存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。 
    5. 支持动态查询 
    6. 支持完全索引,包含内部对象 
    7. 支持查询 
    8. 支持复制和故障恢复 
    9. 使用高效的二进制数据存储,包括大型对象 
    10. 自动处理碎片、以支持云计算层次的扩展性

    1.9.4 Cassandra(Column-oriented)

      Apache Cassndra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于存储特别大的数据。Facebook目前在使用此系统。 
    主要特点: 

    1. 分布式 
    2. 基于column的结构化 
    3. 高伸展性 
    4. Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作。也会被路由到某个节点上面去读取。 

    Cassandir是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomie(分布式的key-value存储系统)更丰富,Cassandra最初由Facebook开发,后转变成了开源项目。

    1.9.5 其他不常用非关系型数据库

    HBase、MemcacheDB、BerkeleyDB、Tokyo Cabinet\Tokyo Tyrant(ttserver) 
    ttserver 持久化输出,缺点存储2千万条 性能下降(由日本人发明)

    2.1 Mysql数据库介绍

    2.2 Mysql数据库介绍

          MySQL是互联网领域里一款最要的,深受广大用户欢迎的开源关系型数据库软件之一、由瑞典MySQL AB公司开发与维护。2006年。MySQL AB公司被SUN公司收购,2008年,SUN公司又被传统数据数据库领域大佬甲骨文(oracle)公司收购,因此,MySQL数据库软件目前属于Oracle公司,成为传统数据库领域老大的又一个数据库产品,甲骨文公司收购MySQL后,使得自身在商业数据库与开源软件领域市场占有份额都跃居第一的位置,这样的格局,引起了很多人的担忧,这种担忧直接导致后来的Mysql分支数据库MariaDB的诞生于发展。 

          MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓库里,这样的设计增加了MySQL的读取速度,灵活性和可管理型也得到了很大提高,访问以及管理MySQL数据库的最常用标准化语言为SQL结构化查询语句

    2.3 为什么选择MySQL数据库

    原因可能有以下几点: 
    (1) MySQL性能卓越、服务稳定,很少出现异常宕机 
    (2) MySQL开放源代码且无版权制约,自主性及使用成本低 
    (3) MySQL历史悠久,社区及用户活跃,遇到问题可以解决 
    (4) MySQL软件体积小,安装使用简单,并且易于文虎,安装及维护成本低 
    (5) MySQL品牌口碑效应,使得企业无需考虑就直接用,LAMP、LEMP流行架构 
    (6) MySQL支持多用操作系统,提供多种API接口,支持多用开发语言,特别对流行的PHP语言有很好的支持

    2.4 MySQL数据库分类与版本升级

    MySQL数据库的官方网站为http://www.mysql.com,其发布的MySQL版本采用双授权政策,和大多数开源产品的路线一样,分为社区版和商业版,而这两个版本又各自分四个版本依次发布,这四个版本为:Alpha版、Beta版、RC版和GA版本

     

    MySQL数据库商业版与社区办区别 

    MySQL商业版与社区办之间的区别在于: 
    1、商业版本组织管理与测试环节控制更严格,稳定性方面,会比社区版本更稳定 
    2、MySQL是成熟产品,商业版与社区办之间性能方面相差不大 
    3、商业版不遵守GPL协议,社区版遵守GPL协议可以免费试用 
    4、使用商业版后可以购买相关的服务,享受7*24小时技术支持以及及时打补丁等服务,但是用户必须为此支持服务费用 
    5、社区版本的维护服务只能靠社区提供,无法像商业版本获得故障及补丁解决服务了,但是社区版是完全免费的方式,社区版的服务质量与时效性等方面就无法与MySQL AB公司提供的服务相比了

    2.5 MySQL数据库四种发布版本介绍

    (1)Alpha版 
    Alpha版一般只在开发的公司内部运行,不对外公开 
    (2)Beta版 
    Beta版一般是完成功能的开发与所有的测试工作之后的产品,不会存在较大的功能或性能BUG,并且邀请或提供给用户体验与测试,以便更全面地测试软件的问题。 
    (3)RC版 
    RC版属于生产环境发布之前的一个小版本或称候选版,是根据Beta版本测试结果,收集到的BUG或缺陷之处等收集到的信息,进行修复和完善之后的一版产品 
    (4)GA版 
    GA版是软件产品正式发布的版本,也称生产版本的产品

    2.6 MySQL产品路线

        为了提高MySQL产品的竞争优势,以及提高性能,降低开发维护成本等原因。同时方便企业用户更精准的选择适合的版本用于主机的企业生产环境中, 

    MySQL在发展到5.1版本系列之后,重新规划为三条产品线

    第一条-5.0.xx到5.1.xx产品线系列介绍 
    MySQL 5.1是当前稳定(产品质量)发布系列。只针对漏洞修复重新发布:没有增加会影响稳定性的新功能。 MySQL 5.1:Previous stable(production-quality)release MySQL 5.0是前一稳定(产品质量)发布系列。只针对严重漏洞修复和安全修复重新发布:没有增加会影响该系列的重要功能。 

    MySQL 5.0:Older stable release nearing the end of the product lifecycle

    第二条-5.4.xx开始-到了5.7.xx产品线系列介绍 
    为了更好地整合MySQL AB公司社区和第三方公司开发的新存储引擎,以及吸收新的实现算法等,从而更好地支持SMP架构,提高性能而做了大量的代码重构,版本编号从5.4.xx开始,目前发展到了5.6.x MySQL 5.5:LatestGeneral Availability(Production)release 
    主流:互联网公司用MySQL.5.5

    第三条-6.0.xx到7.1.xx产品线系列介绍 
    为了更好地推广MySQL Cluster版本,以及提高MySQL Cluster的性能和稳定性,以及功能改进和增加,以及改动MySQL基础功能,使其对Cluster存储引擎提供更有效的支持与优化。版本号为6.0.xx开发。目前发展到7.1.xx 
    http://dev.mysql.com/downloads/mysql 
    官方地址提供数据库下载版本: 
    http://mysql.ntu.edu.tw/Downloads 
    现在国内的镜像站也支持下载: 
    http://mirrors.sohu.com/mysql/ 

    2.7 MySQL数据库软件命名介绍

       MySQL数据库软件的名字是由3个数字和一个后缀组成的版本号。
    

     

    例如,像mysql-5.0.56.tar.gz的版本号解释: 

    (1) 第1个数字(5)是主版本号,描述了文件格式。所有版本5发行都有相同文件格式 
    (2) 第2个数字(0)是发行级别。主版本号和发行级别组合到一起便构成了发型序列号。 
    (3) 第3个数字(56)是在此系列的版本号,随每个新分发递增,通常你需要已经选择的发行(release)的最新版本 
    (4) 后缀显示发行的稳定级别,通过一系列后缀显示如何改进稳定性,可能的后缀有:*alpha版

    2.8 MySQL版本选择最终建议

    企业生产场景选择MySQL数据库建议: 
    1) 稳定版:选择开源的社区版的稳定版GA版本 
    2) 产品线:可以选择5.1或5.5 互联网公司主流5.5,其次是5.1和5.6 
    3) 选择MySQL数据库GA版发布后6个月以上的GA版本。 
    4)要选择前后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本 
    5)最好向后较长时间没有更新发布的版本 
    6)要考虑开发人员开发程序使用的版本是否兼容你选的版本 
    7)作为内部开发人员开发测试数据库环境,跑大概3-6个月的事件 
    8)优先企业非核心业务采用新版本的数据库GA版本软件 
    9)向DBA高手请教,或者在及技术氛围好的群里和大家一起交流,使用真正的高手们用过的好用的GA版本产品
    10)若是没有重要的功能BUG或性能瓶颈,则可以开始考虑作为任何任务数据服务的后端数据库软件

    <

    p style=”margin-top: 10px; font-size: 15px; font-family: Helvetica, ‘Hiragino Sans GB’, 微软雅黑, ‘Microsoft YaHei UI’, SimSun, SimHei, arial, sans-serif; line-height: 24px;”>yum/rpm安装适合对数据库要求不太高的场合,例如并发布大,公司内部,企业内部的一些应用场景。大的门户把源码根据企业需求制作成rpm,搭建rpm仓库。

    展开全文
  • 数据库简介及类型

    千次阅读 2018-11-14 16:24:50
    简单的说,数据库(英文Dtabase)就是一个存放数据的仓库,这个仓库是按照一定的数据结果(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、我们可以通过数据库提供的多种方法来管理数据库里的数据更...

    1.1 什么是数据库?
    简单的说,数据库(英文Dtabase)就是一个存放数据的仓库,这个仓库是按照一定的数据结果(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、我们可以通过数据库提供的多种方法来管理数据库里的数据更简单的形象理解,数据库和我们生活中存放杂物的仓库性质一样,区别只是存放的东西不同。

    1.2 数据库的种类
    早期比较流行的数据库模型有三种,分别为层次式数据库、网络式数据库和关系型数据库。而在当今的互联网中,最常用的数据库模型主要是两种,即关系型数据库和非关系型数据库。

    1.3 关系型数据库介绍
    (1)关系型数据库由来
    网络数据库和层次数据库很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户对这两种数据库进行存取时,依然需要明确数据的存储结构,支出存储路径。而关系数据库就可以较好地解决这些问题

    (2)关系型数据库介绍
    关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。
    Oracle 在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大市场,而MySQL也是不容忽视的数据库,以至于被Oracle重金收购

    MySQL 互联网市场
    Oracle 传统企业

    (3)关系型数据库举例
    表格

    1.4 什么是关系型数据库
    二维表格

    Mysql和Oracle数据库,互联网运维最常用的是MySQL
    通过SQL结构化查询语句存储数据
    保持数据一致性方面很强,ACID理论
    1.5 非关系型数据库介绍
    1.6 非关系型数据库诞生背景
    非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Olnly SQL”
    指的是非关系型数据库,而不是“No SQL”的意思,因此,NoSQL的产生并不是要彻底地否定非关系型数据库,而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。

       随着互联网Web2.0网站的星期,传统的关系型数据库在应付web2,0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。 
    
         例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品。NOSQL(非关系型)类的数据就是在这样的情景下诞生并得到了非常迅速的发展 
    

    高性能、高并发、对数据一致性要求不高
    开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,Redis,mongb也逐渐越来越受到各类大中小型公司的欢迎和追捧

    NOSQL非关系型数据库小结:
    1、NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充
    2、NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能
    3、NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)

    1.7 非关系型数据库种类
    (1)键值(Key-Value)存储数据库
    k1—>数据
    k2—>数据
    键值数据库就类似传统语言中使用哈希表,可以通过key来添加、查询或删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性

        键值(Key-Value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发 
    

    典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB

    (2)列存储(Column-oriedted)数据库 ======>了解即可,一般公司用不到
    列存储数据库将数据库存储在列族(column family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。
    这部分数据库通常用来分布式存储的海量数据,键仍然存在,但是他们的特点是指向了多个列。
    典型产品:Cassandra,HBase

    (3)面向文档(Document-Oriented)数据库
    面向文档数据库会将以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关系对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储

    典型产品:MorgoDB、CouchDB
    (4)图形(Graph)数据库

    1.8 常用关系型数据库产品介绍
    1.8.1 oracle数据库
    Oracle前身叫SDL、由Larry Ellison和两个变成任意在1977创办,他们开发了主机的拳头产品,在市场上大量销售。Oracle公司是最早开发关系型数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率数一数二
    Oracle公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商
    主要应用范围:传统大企业、大公司、政府、金融、证券等。
    版本升级:oracle8i,oracle9i,oracle10g,oracle11g,oracle12c

    关系型数据库分类
    1.8.2 MySQL

    MySQL被广泛的应用在Internet上的大中小型网站中。由于体积小、速度快、总体拥有成本低,开放源代码

    1.8.3 MariaDB数据库

    MAriaDB数据库管理系统是MySQL数据库的一个分支,主要由开元社区维护,采用GPL授权许可。开发这个MariaDB的原因之一是:甲骨文公司收购了MySQL后,有MySQL闭源的潜在风险,因此MySQL开元社区采用分支的方式来避开这个风险。 
    

    MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM的存储引擎,它使用了Percona的XtraDB(InnoDB的变体)这个版本还包括了PrimeBase XT (PBXT)和Federated X存储引擎。

    1.8.4 SQL Server数据库
    Microsoft SQL Server是微软公司开发的大型关系数据库系统。SQL Server的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Winodws操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都得到较大的提升,对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构。SQL Server都是一个很好的选择。SQL Server的缺点是只能在Windows系统下运行

    1.8.5 Access数据库
    Access是入门级小型桌面数据库,性能安全性都很一般,可供个人管理或小型企业只用
    Access不是数据库语言,只是一个数据库程序,目前最新版本为Office 2007,其特点主要如下:
    (1)完善地管理各种数据库对象,具有强大的数据组织,用户管理、安全检查等功能
    (2)强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户管理系统具有传统的XSASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Ckient/Server)结构和响应的数据库安全机制,Access具备了许多先进的大型数据管理管理系统所具备的特征。
    (3)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表
    (4)作为Office套件的一部分,可以与Office集成,实现无缝连接
    (5)能够利用Web检索和发布数据,实现与Internet的连接,Access主要适用于中小企业应用系统,或作为客户机/服务器系统中的客户端数据库。

    1.9 其他不常用关系型数据库
    DB2,PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡化了普通运维的实现,特别是互联网公司几乎见不到

    常用非关系型数据库产品介绍
    1.9.1 memcached(key-value)

    Memcaced是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的web应用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用户都在使用它来架构主机的大负载网站或提升主机的高访问网站的响应速度。注意:Memcache 是这个项目的名称,而Memcached是服务端的主程序文件名。
    缓存一般用来保存一些进程被存取的对象或数据,通过缓存来存取对象或数据要比在磁盘上存取块很多,前者是内存,后者是磁盘、Memcached是一种纯内存缓存系统,把经常存取的对象或数据缓存在memcached的内存中,这些被缓存的数据被程序通过API的方式被读取,memcached里面的数据就像一张巨大的hash表,数据以key-value对的方式存在。Memcached通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度,构建出快速更快的可扩展的Web应用。
    官网:http://memcached.org/
    由于memcached为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于Memcached开发了一个开源项目Memcachedb。通过为Memcached增加Berkeley DB的特久化存储机制和异步主复制机制,使Memcached具备了事务恢复能力、持久化数据能力和分布式复制能力,memcached非常适合需要超高性能读写速度、持久化保存的应用场景,但是最近几年逐渐被其他的持久化产品替代如Redis

    Memcached小结:
    1、key-value行数据库
    2、纯内存数据库
    3、持久化memcachedb(sina)

    1.9.2 Redis(key-value)

        和Memcached类似,redis也是一个key-value型存储系统。但redis支持的存储value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。为了保证效率,redis的数据都是缓存在内存中。区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在基础上实现了master-slave(主从)同步。 
    

    redis是一个高性能的key-value数据库。redis的出现、很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python、Ruby、Erlang、PHP客户端,使用方便。
    官方:http://www.redis.io/documentation
    redis特点:
    1)支持内存缓存,这个功能相当于memcached
    2)支持持久化存储,这个功能相当于memcachedb,ttserver
    3)数据库类型更丰富。比其他key-value库功能更强
    4)支持主从集群、分布式
    5)支持队列等特殊功能
    应用:缓存从存取memcached更改存取redis

    1.9.3 MongoDB(Document-oriented)

    MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。他支持的数据库结构非常松散,类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongodb最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 
    

    特点:
    高性能、易部署、易使用、存储数据非常方便
    主要功能特性:

    面向集合存储,易存储对象类型的数据
    “面向集合”(Collenction-Orented)意思是数据库被分组存储在数据集中,被称为一个集合(Collenction)每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档,集合的概念类似关系型数据库(RDBMS)里的表(table)不同的是它不需要定义任何模式(schema)
    模式自由
    模式自由(schema-free)意为着存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。
    支持动态查询
    支持完全索引,包含内部对象
    支持查询
    支持复制和故障恢复
    使用高效的二进制数据存储,包括大型对象
    自动处理碎片、以支持云计算层次的扩展性
    1.9.4 Cassandra(Column-oriented)
    Apache Cassndra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于存储特别大的数据。Facebook目前在使用此系统。
    主要特点:

    分布式
    基于column的结构化
    高伸展性
    Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作。也会被路由到某个节点上面去读取。
    Cassandir是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomie(分布式的key-value存储系统)更丰富,Cassandra最初由Facebook开发,后转变成了开源项目。

    1.9.5 其他不常用非关系型数据库
    HBase、MemcacheDB、BerkeleyDB、Tokyo Cabinet\Tokyo Tyrant(ttserver)
    ttserver 持久化输出,缺点存储2千万条 性能下降(由日本人发明)

    2.1 Mysql数据库介绍
    2.2 Mysql数据库介绍
    MySQL是互联网领域里一款最要的,深受广大用户欢迎的开源关系型数据库软件之一、由瑞典MySQL AB公司开发与维护。2006年。MySQL AB公司被SUN公司收购,2008年,SUN公司又被传统数据数据库领域大佬甲骨文(oracle)公司收购,因此,MySQL数据库软件目前属于Oracle公司,成为传统数据库领域老大的又一个数据库产品,甲骨文公司收购MySQL后,使得自身在商业数据库与开源软件领域市场占有份额都跃居第一的位置,这样的格局,引起了很多人的担忧,这种担忧直接导致后来的Mysql分支数据库MariaDB的诞生于发展。

      MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓库里,这样的设计增加了MySQL的读取速度,灵活性和可管理型也得到了很大提高,访问以及管理MySQL数据库的最常用标准化语言为SQL结构化查询语句
    

    2.3 为什么选择MySQL数据库
    原因可能有以下几点:
    (1) MySQL性能卓越、服务稳定,很少出现异常宕机
    (2) MySQL开放源代码且无版权制约,自主性及使用成本低
    (3) MySQL历史悠久,社区及用户活跃,遇到问题可以解决
    (4) MySQL软件体积小,安装使用简单,并且易于文虎,安装及维护成本低
    (5) MySQL品牌口碑效应,使得企业无需考虑就直接用,LAMP、LEMP流行架构
    (6) MySQL支持多用操作系统,提供多种API接口,支持多用开发语言,特别对流行的PHP语言有很好的支持

    2.4 MySQL数据库分类与版本升级
    MySQL数据库的官方网站为http://www.mysql.com,其发布的MySQL版本采用双授权政策,和大多数开源产品的路线一样,分为社区版和商业版,而这两个版本又各自分四个版本依次发布,这四个版本为:Alpha版、Beta版、RC版和GA版本

    MySQL数据库商业版与社区办区别
    MySQL商业版与社区办之间的区别在于:
    1、商业版本组织管理与测试环节控制更严格,稳定性方面,会比社区版本更稳定
    2、MySQL是成熟产品,商业版与社区办之间性能方面相差不大
    3、商业版不遵守GPL协议,社区版遵守GPL协议可以免费试用
    4、使用商业版后可以购买相关的服务,享受7*24小时技术支持以及及时打补丁等服务,但是用户必须为此支持服务费用
    5、社区版本的维护服务只能靠社区提供,无法像商业版本获得故障及补丁解决服务了,但是社区版是完全免费的方式,社区版的服务质量与时效性等方面就无法与MySQL AB公司提供的服务相比了

    2.5 MySQL数据库四种发布版本介绍
    (1)Alpha版
    Alpha版一般只在开发的公司内部运行,不对外公开
    (2)Beta版
    Beta版一般是完成功能的开发与所有的测试工作之后的产品,不会存在较大的功能或性能BUG,并且邀请或提供给用户体验与测试,以便更全面地测试软件的问题。
    (3)RC版
    RC版属于生产环境发布之前的一个小版本或称候选版,是根据Beta版本测试结果,收集到的BUG或缺陷之处等收集到的信息,进行修复和完善之后的一版产品
    (4)GA版
    GA版是软件产品正式发布的版本,也称生产版本的产品

    2.6 MySQL产品路线
    为了提高MySQL产品的竞争优势,以及提高性能,降低开发维护成本等原因。同时方便企业用户更精准的选择适合的版本用于主机的企业生产环境中,

    MySQL在发展到5.1版本系列之后,重新规划为三条产品线

    第一条-5.0.xx到5.1.xx产品线系列介绍
    MySQL 5.1是当前稳定(产品质量)发布系列。只针对漏洞修复重新发布:没有增加会影响稳定性的新功能。 MySQL 5.1:Previous stable(production-quality)release MySQL 5.0是前一稳定(产品质量)发布系列。只针对严重漏洞修复和安全修复重新发布:没有增加会影响该系列的重要功能。

    MySQL 5.0:Older stable release nearing the end of the product lifecycle

    第二条-5.4.xx开始-到了5.7.xx产品线系列介绍
    为了更好地整合MySQL AB公司社区和第三方公司开发的新存储引擎,以及吸收新的实现算法等,从而更好地支持SMP架构,提高性能而做了大量的代码重构,版本编号从5.4.xx开始,目前发展到了5.6.x MySQL 5.5:LatestGeneral Availability(Production)release
    主流:互联网公司用MySQL.5.5

    第三条-6.0.xx到7.1.xx产品线系列介绍
    为了更好地推广MySQL Cluster版本,以及提高MySQL Cluster的性能和稳定性,以及功能改进和增加,以及改动MySQL基础功能,使其对Cluster存储引擎提供更有效的支持与优化。版本号为6.0.xx开发。目前发展到7.1.xx
    http://dev.mysql.com/downloads/mysql
    官方地址提供数据库下载版本:
    http://mysql.ntu.edu.tw/Downloads
    现在国内的镜像站也支持下载:
    http://mirrors.sohu.com/mysql/

    2.7 MySQL数据库软件命名介绍
    MySQL数据库软件的名字是由3个数字和一个后缀组成的版本号。
    例如,像mysql-5.0.56.tar.gz的版本号解释:
    (1) 第1个数字(5)是主版本号,描述了文件格式。所有版本5发行都有相同文件格式
    (2) 第2个数字(0)是发行级别。主版本号和发行级别组合到一起便构成了发型序列号。
    (3) 第3个数字(56)是在此系列的版本号,随每个新分发递增,通常你需要已经选择的发行(release)的最新版本
    (4) 后缀显示发行的稳定级别,通过一系列后缀显示如何改进稳定性,可能的后缀有:*alpha版

    2.8 MySQL版本选择最终建议
    企业生产场景选择MySQL数据库建议:
    1) 稳定版:选择开源的社区版的稳定版GA版本
    2) 产品线:可以选择5.1或5.5 互联网公司主流5.5,其次是5.1和5.6
    3) 选择MySQL数据库GA版发布后6个月以上的GA版本。
    4)要选择前后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本
    5)最好向后较长时间没有更新发布的版本
    6)要考虑开发人员开发程序使用的版本是否兼容你选的版本
    7)作为内部开发人员开发测试数据库环境,跑大概3-6个月的事件
    8)优先企业非核心业务采用新版本的数据库GA版本软件
    9)向DBA高手请教,或者在及技术氛围好的群里和大家一起交流,使用真正的高手们用过的好用的GA版本产品
    10)若是没有重要的功能BUG或性能瓶颈,则可以开始考虑作为任何任务数据服务的后端数据库软件

    <

    p style=”margin-top: 10px; font-size: 15px; font-family: Helvetica, ‘Hiragino Sans GB’, 微软雅黑, ‘Microsoft YaHei UI’, SimSun, SimHei, arial, sans-serif; line-height: 24px;”>yum/rpm安装适合对数据库要求不太高的场合,例如并发布大,公司内部,企业内部的一些应用场景。大的门户把源码根据企业需求制作成rpm,搭建rpm仓库。

    展开全文
  • django系列3—数据库字段类型

    千次阅读 2020-06-15 22:05:08
    字段类型指使用Django ORM创建数据库支持的数据字段类型。 常用字段 (1) AutoField 自增的整型字段,必填参数primary_key=True,则成为数据库的主键,无该字段时,django会自动创建主键id字段。 (2) BigAutoField ...
  • 有朋友可能会说,数据库定义一个datetime或timestamp类型的字段,然后在Java代码中获取当前时间并存入数据库不就可以了吗? Date now = new Date(); // 调用insert或update方法创建或更新日期字段。 最近设计新系统...
  • 易语言支持以ODBC方式和ADO方式操作外部数据库。 一、ODBC与ADO(1)ODBC简介 ODBC(Open Database Connectivity,开放式数据库互联),是目前国际上通用的数据库访问标准,是微软公司开放服务结构中的组成部分,...
  • 数据库中的表类型和字段类型

    万次阅读 2018-07-06 09:37:07
    类型:Mysql表类型都有哪些是一定需要知道的,下面就为您介绍七种Mysql表类型,希望能对您学习Mysql表类型有所帮助,需要的朋友可以了解下 学习Mysql数据库,Mysql表类型都有哪些是一定需要知道的,下面就为您介绍...
  • 常用数据库的字段类型及大小

    万次阅读 2016-05-21 12:01:06
    racle/MSSQL/Mysql 常用数据库的字段类型及大小 ORACLE的数据类型 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 bytes ` VARCHAR2 可变长度的字符串...
  • mybatis支持多种数据库

    千次阅读 2019-03-27 17:29:41
    场景1:一个项目中需要对多个数据库进行连接和操作,并且它们属于不同类型数据库。 解决方案:spring boot yml配置不同的数据库连接,使用不同的驱动包;数据配置类中指定不同的mapper路径,不同mapper下的xml会...
  • 数据库MySQL详解

    万次阅读 多人点赞 2018-07-24 20:03:47
    数据库认识JAVA语言的,但是我们同样要与数据库交互,这时需要使用到数据库认识的语言SQL语句,它是数据库的代码。 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于...
  • 后面发现是数据库时间类型定义的原因,数据库中定义的是datatime时间戳类型, mysql中Date类型表示的时间为yyyy-MM-dd, 时间戳datatime表示范围是 yyyy-MM-dd HH:mm:ss 可以支持到分秒级别 在使用datetime时...
  • Database:Database数据库的简介、类型及其区别(关系数据库VS非关系型数据库)、案例应用之详细攻略 目录 Database数据库的简介 1、数据库的发展历史:80年代以来的关系型数据库→基于分布式技术云计算和...
  • H2数据库函数及数据类型概述

    万次阅读 2015-01-29 13:05:17
    H2数据库函数及数据类型概述作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs一、H2数据库常用数据类型INT类型:对应java.lang.IntegerREAL类型:对应java.lang.FloatDOUBLE类型:对应java.lang....
  • 常用的数据库的字段类型及大小

    万次阅读 多人点赞 2018-08-28 08:30:15
    Oracle/MSSQL/Mysql 常用数据库的字段类型及大小     ORACLE的数据类型  常用的数据库字段类型如下:  字段类型 中文说明 限制条件 其它说明  CHAR 固定长度字符串 最大长度2000 bytes `  VARCHAR2 可...
  • 数据库(DataBase)简介和类型

    千次阅读 2019-06-14 23:44:33
    什么是数据库数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。 简单来说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(即数据的组织...
  • 常见数据库数据的类型及大小

    万次阅读 2016-03-17 17:17:32
    Microsoft Access 数据类型 数据类型 描述 存储 Text 用于文本或文本与数字的组合。最多 255 个字符。 Memo Memo 用于更大数量的文本。最多存储 65,536 个字符。 注释:...
  • MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 MongoDB 可在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 可为Web应用提供可扩展的高性能数据存储解决方案。 ...
  • Mysql数据库表的类型有哪些

    千次阅读 2019-01-02 18:59:08
    截止目前,Myslq一共向用户提供了包括DBD,HEAP,ISAM,MERFE,MyISAM,InnoDB以及Gemeni这7种Mysql表类型,其中DBD,InnoDB属于事物安全类表,而其他属于事物非安全类表。 BDB Berkeley Db(BDB)表是支持事物...
  • 相关文章:1、《ContentProvider数据库共享之——概述》2、《ContentProvider数据库共享之——实例讲解》3、《ContentProvider数据库共享之——MIME类型与getType()》4、《ContentProvider数据库共享之——读写权限...
  • 首先,先简单介绍下数据库Blob字段,Blob(Binary Large Object)是指二进制大对象字段,顺带介绍下Clob类型,Clob(Character Large Object)是指大字符对象。其中Blob是为存储大的二进制数据而设计的,而Clob是为...
  • MySQL数据库命令

    万次阅读 多人点赞 2018-10-07 20:45:25
    1.对数据库常用命令 1.连接数据库 mysql -u用户名 -p密码 2.显示已有数据库 show databases; 3.创建数据库 create database sqlname;...6.显示当前数据库的版本信息以及连接用户名 select version(),user...
  • 数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    1,数据库 1)概念 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。 常见数据库管理系统有:Access、mysql、sql server 2)特点 ①数据库数据特点 永久存储、有组织...
  • MySQL数据库

    千次阅读 2019-11-22 17:34:58
    数据库作为程序中数据的主要载体,在整个项目中扮演着重要的角色。PHP自身可以与大多数数据库进行连接,但MySQL数据库树开源界所公认的与PHP结合最好的数据库,它具有安全、跨平台、体积小和高效等特点,可谓PHP的...
  • MySQL_数据库数据类型(data type)介绍

    千次阅读 2015-04-01 16:34:46
    MySQL_数据库数据类型(data type)介绍 mysql数据库的数据类型(data type)分以下几种:数值类型,字符串类型  一、数值类型 MySQL 的数值类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。许多不同的子...
  • 1.公开数据库中自动生成的唯一二进制数字的数据类型。  2.timestamp 通常用作给表行加版本戳的机制。   3.存储大小为 8 个字节。 可为空的 timestamp 列在语义上等价于 binary(8) 列。可为空的 timestamp...
  • 作为数据库核心成员,如何让淘宝卡顿?

    万次阅读 多人点赞 2020-09-24 15:46:59
    简介:TDDL(Tabao Distributed Data Layer)是淘宝开源的一个用于访问数据库的中间件,集成了分库分表,主备,读写分离,权重调配,动态数据库配置等功能。本文以2007年TDDL初诞生时的视角,介绍TDDL是如何一步步设计...
  • 还是win xp,iis,acess2003,dreamweaver8的...access2003数据库可以查询,但执行插入、修改时都无效,“当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制。” 解决方法: 检查是否

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 481,328
精华内容 192,531
关键字:

当前数据库类型不支持此