关系型数据库

国产数据库发展现状分析

最后都变了- 提交于 2020-02-12 13:31:18
导语 从上世纪90年代开始,国产数据库的开发就不断被人提起,国内已有不少企业、团体在这个方面做了不少的投入。在此,我们与大家分享一下对几个数据库国产化途径的看法。我们主要讨论自主研发、引进代码和互联网厂商提供的云上数据库。 自主研发 国内自主研发关系型数据库的企业、单位基本上都是发源于上世纪90年代的,而且都是以大学、科研机构为主。到今天,有代表性的厂商有: 达梦 – 由华中理工冯玉才教授创办,完全自主研发。以Oracle为参照、追赶对象。 人大金仓 – 由人民大学王珊教授创办,自主研发。普通的关系型数据库。 神舟通用 – 神舟集团与南大通用合作开发的关系型数据库。更多地用于数据分析领域。 南大通用(Gbase 8a)- 南开大学的背景,2010年左右自主研发的,基于列式存储的,面向数据分析、数据仓库的数据库系统。 其他没有列出的,属于在下孤陋寡闻,绝无贬低的意思。 这些公司的发展分为两个阶段,以2007年作为分界线。前一个阶段集中在20世纪90年代,公司的出发点就是开发一款通用的,主要面向OLTP的关系型数据库。在那个年代,中国的人工成本还是比较低的,国外厂商的数据库,如:Oracle,Sybase,Informix,DB2都算是成本较高的产品。很多人认为,只要做出功能、性能、稳定性合适的国产数据库,就能有一定的市场,至少价格能够有优势;即便市场不成功,作为科研教学也有一定价值

MongoDB 使用B树

你说的曾经没有我的故事 提交于 2020-02-10 18:13:49
概述 MongoDB 是一个通用的、面向文档的分布式数据库[^1],这是官方对 MongoDB 介绍。区别于传统的关系型数据库 MySQL、Oracle 和 SQL Server,MongoDB 最重要的一个特点就是 『面向文档』 ,由于数据存储方式的不同,对外提供的接口不再是被大家熟知的 SQL,所以被划分成了 NoSQL,NoSQL 是相对 SQL 而言的,很多我们耳熟能详的存储系统都被划分成了 NoSQL,例如:Redis、DynamoDB[^2] 和 Elasticsearch 等。 NoSQL 经常被理解成没有 SQL(Non-SQL)或者非关系型(Non-Relational)[^3],不过也有人将其理解成不只是 SQL(Not Only SQL)[^4],深挖这个词的含义和起源可能没有太多意义,这种二次解读很多时候都是为营销服务的,我们只需要知道 MongoDB 对数据的存储方式与传统的关系型数据库完全不同。 MongoDB 的架构与 MySQL 非常类似,它们底层都使用了可插拔的存储引擎以满足用户的不同需求,用户可以根据数据特征选择不同的存储引擎,最新版本的 MongoDB 使用了 WiredTiger 作为默认的存储引擎[^5]。 作为 MongoDB 默认的存储引擎,WiredTiger 使用 B 树作为索引底层的数据结构,但是除了 B 树之外,它还支持 LSM

数据库教程(一):基本概念

拟墨画扇 提交于 2020-02-10 10:02:03
一、数据库 数据库(DB):即DataBase的缩写,是按照一定的数据结构来组织、存储和管理数据的一个仓库。是存储在一起的相关数据的一个集合。可以把数据库想象成一个文件柜,文件柜里面又包含有多个文件夹,而文件夹里面又包含有多个文件。 数据库根据作用的不同,又可以分为两种: 关系型数据库。是建立在关系模型基础上的数据库,借助于集合、数学等观念和方法来处理数据库的数据。比如SQL Server、MySQL、Access等。 非关系型数据库。非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“NO SQL”的意思。非关系型数据库的产生不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。 二、数据库管理系统 数据库管理系统(DBMS):即DataBase Management System的缩写,是为了管理数据库而设计的一个电脑软件系统。是用来操作和管理数据库的大型软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户可以通过DBMS访问数据库中的数据,数据库管理员也可以通过DBMS进行数据库的维护工作。它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立、修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language

Sql Or NoSql,看完这一篇你就都懂了

大憨熊 提交于 2020-02-09 01:38:54
你是否在为系统的数据库来一波大流量就几乎打满CPU,日常CPU居高不下烦恼? 你是否在各种NoSql间纠结不定,到底该选用那种最好? 今天的你就是昨天的我,这也是写这篇文章的初衷。 这篇文章是我好几个月来一直想写的一篇文章,也是一直想学习的一个内容,作为互联网从业人员,我 们要知道关系型数据库(MySql、Oracle)无法满足我们对存储的所有要求,因此对底层存储的选型,对每种存储引擎的理解非常重要。 同时也由于过去一段时间的工作经历,对这块有了一些更多的思考,想通过自己的总结把这块写出来分享给大家。 结构化、非结构化和半结构化数据 文章的开始,聊一下结构化数据、非结构化数据与半结构化数据,因为数据特点的不同,将在技术上直接影响存储引擎的选型。 首先是结构化数据,根据定义结构化数据指的是由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称作为行数据,特点为:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。例如: 因此关系型数据库完美契合结构化数据的特点,关系型数据库也是关系型数据最主要的存储与管理引擎。 非结构化数据, 指的是数据结构不规则或不完整,没有任何预定义的数据模型,不方便用二维逻辑表来表现的数据,例如办公文档(Word)、文本、图片、HTML、各类报表、视频音频等。 介于结构化与非结构化数据之间的数据就是半结构化数据了

Redis介绍

ぐ巨炮叔叔 提交于 2020-02-08 08:03:26
什么是NoSql 为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql。 NoSql,叫非关系型数据库,它的全名Not only sql。它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。 NoSql的分类 键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB 典型应用:内容缓存,主要用于处理大量数据的高访问负载。 数据模型:一系列键值对 优势:快速查询 劣势:存储的数据缺少结构化 列存储数据库 相关产品:Cassandra, HBase, Riak 典型应用:分布式的文件系统 数据模型:以列簇式存储,将同一列数据存在一起 优势:查找速度快,可扩展性强,更容易进行分布式扩展 劣势:功能相对局限 文档型数据库 相关产品:CouchDB、MongoDB 典型应用:Web应用(与Key-Value类似,Value是结构化的) 数据模型:一系列键值对 优势:数据结构要求不严格 劣势:查询性能不高,而且缺乏统一的查询语法 图形(Graph)数据库 相关数据库:Neo4J、InfoGrid、Infinite Graph 典型应用:社交网络 数据模型:图结构 优势:利用图结构相关算法。 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

Redis(一)

陌路散爱 提交于 2020-02-08 07:59:02
文章目录 Redis介绍 安装 配置文件 与python交互 Redis介绍 内存型数据库 特点 开源 ,使用C编写。 跨平台 ,支持多种编程语言(C C++ Python Java PHP … )。 高效性 ,基于内存,读写速度快,高性能的Key-Value的NoSQL数据库。 支持多种数据类型 ,字符串strings,散列hashes,列表lists,集合sets,有序集合sorted sets 等等。 稳定性 ,redis支持各种架构,主从复制,哨兵模式,redis集群。 单进程单线程 附加功能 支持持久化:将内存中数据保存到磁盘中,保证数据安全,方便进行数据备份和恢复。 过期键功能:为键设置一个过期时间,让它在指定时间内自动删除。 <节省内存空间>验证码,音乐播放器,日播放排名,过期自动删除。 轻事务功能:原子的执行多个操作,对每一条数据操作要么成功,要么失败。 主从复制 Sentinel哨兵 与其他数据库对比 MySQL : 关系型数据库,存储基于磁盘,慢。 MongoDB:键值对文档型数据库,值为类似JSON文档,数据结构相对单一。 NoSQL数据库,数据主要是存储在内存当中,如果内存不够,数据可以落地到磁盘里面去,而且MongoDB支持sql语句的查询,是最像关系型数据库的非关系型数据库 。 Redis的诞生是为了解决什么问题?? 解决硬盘IO带来的性能瓶颈 。

数据库学习之MySQL

感情迁移 提交于 2020-02-08 04:08:44
MySQL简介 数据库 为什么要学数据库? 有以下几点原因: 最现实的原因就是为了找工作,数据库是岗位的需求,所以要学。 其次就是现在是大数据时代,数据是非常重要的,得数据者得天下。 然后就是我们需要存储数据,这就要用到数据库了。 最后就是 数据库是所有软件体系中最核心的存在 。 什么是数据库? 数据库即DataBase(DB),它是存放数据的仓库,它的存储空间很大,可以存放百万条、千万条、上亿条数据。 数据库是一个按照数据结构来存储和管理数据的计算机软件系统,安装在操作系统之上。 数据库的作用说白了就是:存储数据、管理数据。 数据库的分类 数据库可以分为关系型数据库和非关系型数据库。 关系型数据库 :(SQL) 关系型数据库,存储的格式可以直接且直观地反映实体间的关系。关系型数据库中表与表之间是有很多复杂的关联关系的。 常见的关系型数据库有MySQL,SqlServer,Oracle,DB2,SQLlite等。 在轻量或小型应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,需要根据应用的业务需求和性能需求,选择合适的关系型数据库。 关系型数据库大多都遵循SQL(Structured Query Language,结构化查询语言)标准,常见操作有查询(SELECT)、新增(INSERT)、更新(UPDATE)、删除(DELETE)等。

MongoDB(1)----基础概念

爱⌒轻易说出口 提交于 2020-02-07 21:36:14
1.什么是MongoDB?   MongoDB是由C++语言实现的一个基于分布式文件存储的开源数据库。旨在为Web应用提供可扩展的高性能数据存储解决方法。它介于关系型数据库(Sql)和非关系型数据库(NoSql)之间。 2.MongoDB数据存储结构?   MongoDB将数据存储为一个文档,以键值对的形式(Key:Value结构)作为其数据结构。如下图所示: 3.MongoDB优缺点? 优点: 1)可以非常方便的为数据建立索引 2)可以通过网络或者本地创建数据镜像 ,使得MongoDB具有更强的扩展性 3)数据面向文档进行存储,操作起来简单 4)不存在Sql注入问题 5)支持大容量的数据存储 6)内置Sharding,分片简单 7)支持故障恢复 缺点: 1)不支持事务 2)复杂的聚合操作通过mapreduce创建,速度慢 3)无法进行关联表查询,不适合关系多的数据、 4)删除数据集合后不会自动释放空间 4.MongoDB的应用场景?   当传统的关系型数据库无法满足 高并发、海量数据存储访问、灵活扩展、 等需求的时候,就可以将MongoDB作为一种解决方案。 总结: 1)程序有大量数据存储(TB甚至PB级别) 2)程序发展速度较快,要求具有快速扩展的能力 3)程序需要3000以上的QPS 4)数据模型暂时无法确定 5)数据价值较低,不需要事务支持和复杂的join操作  

1 Spring持久化详解(开篇)

≯℡__Kan透↙ 提交于 2020-02-04 15:05:14
1 Spring在持久化中的应用 多年以来, 关系型数据库 一直是企业级应用中的统治者。在博客“Spring持久化详解(Spring+JDBC)”中,我们将会看到如何使用Spring的JDBC抽象来查询关系型数据库,这要比原生的JDBC简单得多。 如果你不喜欢JDBC风格的话,在博客“Spring持久化详解(Spring+ORM)”中,将会展现Spring如何与 对象关系映射 (ORM)框架进行集成,这些框架包括Hibernate以及其他的Java持久化API(Java Persistence API,JPA)实现。除此之外,还将会看到如何发挥Spring Data JPA的魔力,在运行时自动生成Repository实现。 关系型数据库不一定是所有场景下的最佳选择,因此,博客“Spring持久化详解(Spring+非关系型数据库)”将会研究其他的Spring Data项目,它们能够持久化各种 非关系型数据库 中的数据,包括MongoDB、Neo4j和Redis。 博客“Spring持久化详解( 缓存数据 )”为上述的持久化章提供了一个缓存层,如果数据已经可用的话,它会避免数据库操作,从而提升应用的性能。 与前端类似,安全性在后端也是一个很重要的方面。在博客“Spring持久化详解( 保护方法应用 )”中,将会把Spring Security应用于后端

Entity Framework 简介

大城市里の小女人 提交于 2020-02-03 11:58:14
Entity Framework Entity Framework 的全称为 ADO.NET Entity Framework,简称 EF。 1、与 ADO.NET 的关系 Entity Framework(实体框架)是微软以 ADO.NET 为基础所发展出来的对象关系对应(O/R Mapping)解决方案,早期被称为 ObjectSpace,目前 CodeOnly 功能得到更好的支持,是微软的一个 ORM 框架,其他基于 .NET 开发的 ORM 框架有 Nibernate、PetaPoco 等。 Entity Framework 的特点: 支持多种数据库(MSSOL、Oracle、Mysql 、SQL Server 和 DB2) 强劲的映射引擎,能很好滴支持储存过程。 提供 Visual Studio 集成工具、可视化操作。 能够与 ASP.NET、WPF、WCF、WCF Data Services 进行很好的集成。 2、什么是 O/R Mapping 广义上,ORM 指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。狭义上,ORM 可以被认为是基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个OO 对象应该不需要了解任何关系型数据库存储数据的实现细节。EDM 设计器如图所示。 在面向对象的世界里