前端最基础的就是 HTML+CSS+Javascript
。掌握了这三门技术就算入门,但也仅仅是入门,如今前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS
),本着提高技术水平,打牢基础知识的中心思想,咱们开课啦(每周四)。html
数据库分为两种:关系数据库(RDBMS)和非关系数据库(NoSQL)。前端
NoSQL ( NoSQL = Not Only SQL),指的是非关系型的数据库。是对不一样于传统的关系型数据库的数据库管理系统的统称。mysql
对于一些须要灵活结构的数据,关系型数据库的横向扩展能力不够,而 NoSQL 存储数据不须要固定的模式,无需多余操做就能够横向扩展。redis
RDBMSsql
NoSQLmongodb
事务在英文中是transaction,和现实世界中的交易很相似,它有以下四个特性:数据库
一、A (Atomicity) 原子性segmentfault
原子性很容易理解,也就是说事务里的全部操做要么所有作完,要么都不作,事务成功的条件是事务里的全部操做都成功,只要有一个操做失败,整个事务就失败,须要回滚。服务器
好比银行转帐,从A帐户转100元至B帐户,分为两个步骤:1)从A帐户取100元;2)存入100元至B帐户。这两步要么一块儿完成,要么一块儿不完成,若是只完成第一步,第二步失败,钱会莫名其妙少了100元。微信
二、C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库本来的一致性约束。
例如现有完整性约束a+b=10,若是一个事务改变了a,那么必须得改变b,使得事务结束后依然知足a+b=10,不然事务失败。
三、I (Isolation) 独立性
所谓的独立性是指并发的事务之间不会互相影响,若是一个事务要访问的数据正在被另一个事务修改,只要另一个事务未提交,它所访问的数据就不受未提交事务的影响。
好比如今有个交易是从A帐户转100元至B帐户,在这个交易还未完成的状况下,若是此时B查询本身的帐户,是看不到新增长的100元的。
四、D (Durability) 持久性
持久性是指一旦事务提交后,它所作的修改将会永久的保存在数据库上,即便出现宕机也不会丢失。
在计算机科学中, CAP定理(CAP theorem), 又被称做 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来讲,不可能同时知足如下三点:
CAP理论的核心是:一个分布式系统不可能同时很好的知足一致性,可用性和分区容错性这三个需求,最多只能同时较好的知足两个。
所以,根据 CAP 原理将 NoSQL 数据库分红了知足 CA 原则、知足 CP 原则和知足 AP 原则三 大类:
Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工做。
Redis 一般被称为数据结构服务器,由于值(value)能够是 字符串(String), 哈希(Hash/Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)五种类型,操做很是方便。好比,若是你在作好友系统,查看本身的好友关系,若是采用其余的key-value系统,则必须把对应的好友拼接成字符串,而后在提取好友时,再把value进行解析,而redis则相对简单,直接支持list的存储(采用双向链表或者压缩链表的存储方式)。
var redis = require("redis"), client = redis.createClient(); client.on("error", function (err) { console.log("Error " + err); }); client.set("string key", "string val", redis.print); client.hset("hash key", "hashtest 1", "some value", redis.print); client.hset(["hash key", "hashtest 2", "some other value"], redis.print); client.hkeys("hash key", function (err, replies) { console.log(replies.length + " replies:"); replies.forEach(function (reply, i) { console.log(" " + i + ": " + reply); }); client.quit(); });
属于CP类型
MongoDB 是一个高性能,开源,无模式的文档型数据库,开发语言是C++。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。
在 MongoDB 中,文档是对数据的抽象,它的表现形式就是咱们常说的 BSON_(Binary JSON )_。
BSON 是一个轻量级的二进制数据格式。MongoDB 可以使用 BSON,并将 BSON 做为数据的存储存放在磁盘中。
BSON 是为效率而设计的,它只须要使用不多的空间,同时其编码和解码都是很是快速的。即便在最坏的状况下,BSON格式也比JSON格式再最好的状况下存储效率高。
对于前端开发者来讲,一个“文档”就至关于一个对象。
var mongodb = require('mongodb'); var mongodbServer = new mongodb.Server('localhost', 27017, { auto_reconnect: true, poolSize: 10 }); var db = new mongodb.Db('mydb', mongodbServer); /* open db */ db.open(function() { /* Select 'contact' collection */ db.collection('contact', function(err, collection) { /* Insert a data */ collection.insert({ name: 'Fred Chien', email: 'cfsghost@gmail.com', tel: [ '0926xxx5xx', '0912xx11xx' ] }, function(err, data) { if (data) { console.log('Successfully Insert'); } else { console.log('Failed to Insert'); } }); /* Querying */ collection.find({ name: 'Fred Chien' }, function(err, data) { /* Found this People */ if (data) { console.log('Name: ' + data.name + ', email: ' + data.email); } else { console.log('Cannot found'); } }); }); });
MongoDB 比较灵活,能够设置成 strong consistent _(CP类型)_或者 eventual consistent_(AP类型)_。
但其默认是 CP 类型