当前位置: 首页 > news >正文

NoSQL精粹读书笔记-第1章

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1. 关系型数据库的价值

1.1 获取持久化数据

关系型数据库的一个主要用途就是用来持久化存储数据了。

1.2 并发

关系型数据库可以处理多个用户或客户端同时访问同一块数据的情况,这是关系型数据库区别于程序员自己写程序来访问文件的最大的地方,因为在并发操作的情况下获取正确的数据是极其困难的。关系型数据库通过“事务”来控制对其数据库的访问。

1.3集成

在早期的企业应用中关系数据库还充当着各个应用程序间共享数据的作用。

1.4近乎标准的原型

sql和事务在几乎所有的关系型数据库中都是有统一标准的。


2. 阻抗失谐

关系型数据库的数据组织形式都是以表和行的方式来组织的,在数据结构中有“嵌套记录”或“列表”等结构的情况下无法很自然的表现内存中的数据结构,必须把它们转换成“关系”的形式把数据存放在不同的表中。虽然现在有类似于mybatis和hibernate这样的or-mapping框架来解决这种阻抗失谐的情况,但还是无法解决读取这些数据时需要联接几张表时造成的性能损失。

3. “应用程序数据库”与“集成数据库”

所谓集成数据库就是指几个应用程序之间会共享同样的数据,这些数据都存放在同一个数据库中,数据的完整性由数据库来负责而不能由某个应用程序来负责。

所谓应用程序数据库是指数据库中的程序只能由一个应用程序的代码来访问,如果需要让其它程序访问数据库中的程序则通过程序接口来提供(如通过http协议进行通信的接口)。这样做的好处就是应用程序之间交互的数据结构可以更为灵活,其它应用程序不需要了解本应用程序的数据库表结构。

4. 蜂拥而来的的集群

随着互联网行业的发展,越来越多的网站的数据规模都在急剧增加,这就导致需要有越来越多的计算资源来应对数据和流量的增加。处理这种增长比较理想的方案是采用比较有弹性的横向扩展:采用由多个小型计算机组成的高度稳定的集群,这样就算其中的某些电脑经常发生故障,也不会影响整个集群的运行。

但传统的关系型数据库并不是设计给集群用的,并且象oracle或sqlserver这种商用型数据库通常都是按单台服务器计费的,所以在集群中使用会非常贵。

谷歌和亚马逊这两家公司都针对这种情况开发了自己的专用数据库。

5. NoSQL登场

各种NoSQL数据库的共同特征是:

不使用sql或叫不使用关系模型

开源

都是为了在集群中运行而设计开发的(除了图数据库)

都是21世纪初的互联网企业设计的

无模式,不象传统的关系型数据库定义表,字段名等这种强模式


选用NoSQL数据库的两个主要原因是:

待处理的数据量很大,或对数据访问的效率要求很高,从而必须将数据放在集群上

想采用一种更为方便的数据交互方式来提高应用程序开发效率

NoSQL崛起所产生的重要影响就是混合持久化:根据不同的场景使用不同的存储方式(关系型数据库/NoSQL数据库)。





转载于:https://my.oschina.net/u/914897/blog/483504

相关文章:

  • iOS开发-App Icons的尺寸大小
  • js 时间戳转为日期格式
  • 540C: Ice Cave
  • JavaScript判断IE版本
  • EditPlus自动补全、模板配置
  • 引子——从Mac OS X的Lion说起
  • 悠然乱弹:“最好的模板引擎”Beetl 剖析及与Tiny模板引擎对比
  • c# 反射类字段
  • Oracle 学习之RMAN(十四)恢复实战--基于时间点恢复
  • HAProxy+Keepalived实现Web服务器负载均衡
  • Java删除ArrayList中的重复元素的2种方法
  • 【LeetCode】66 67- Plus One Add Binary
  • 使用CodeIgniter框架搭建RESTful API服务
  • OSChina 周六乱弹 —— 宁泽涛让开!你挡着女神了!
  • LeetCode:Pow(x, n) - 求指定数字x的整数次幂
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Golang-长连接-状态推送
  • HTML-表单
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript 一些 DOM 的知识点
  • Javascript 原型链
  • JAVA并发编程--1.基础概念
  • JWT究竟是什么呢?
  • Laravel核心解读--Facades
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • orm2 中文文档 3.1 模型属性
  • PHP的Ev教程三(Periodic watcher)
  • python学习笔记-类对象的信息
  • Spring Cloud Feign的两种使用姿势
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vue-loader 源码解析系列之 selector
  • 安卓应用性能调试和优化经验分享
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 学习Vue.js的五个小例子
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 阿里云ACE认证之理解CDN技术
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​【已解决】npm install​卡主不动的情况
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (分布式缓存)Redis分片集群
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (汇总)os模块以及shutil模块对文件的操作
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (四)图像的%2线性拉伸
  • (一) storm的集群安装与配置