推荐系统概述
图数据库的基本思想
1.图(Graph)由节点(node,顶点)和关系(relationship,边)组成
2.图在节点上记录数据(节点的属性,property)
3.节点由关系组织成图,关系也具有属性
4.寻路(traversal,遍历)在图上定位由节点组成的路径
5.索引(index)将属性映射到节点或关系
6.图数据库管理系统管理图,及其上的索引
7.Nel4J 是当前主流的图数据库产品
Neo4J: 开源图数据库
1.直观的图模型存储
2.完全支持ACID事务
3.基于磁盘的持久存储
4.支持海量数据,比如数十亿节点/关系/属性级别的数据
5.高可用的分布式集群
6.高度优化,迅速的图查询(Cypher图查询语言,面向寻路)
7.可以嵌入(jar文件),支持REST API
分布式:
share nothing: 每个节点都有自己的CPU,内存,存储,跨节点的数据访问通过节点之间的网络通讯来完成
share disk : 每个节点有自己的CPU和年日常,但是共享同一个存储,也就是说,存储只有一份,放在单独的分布式文件系统上, 由文件系统本身来保证其可用性,一般由高端的专门存储设备来完成
大部分的分布式数据库都是share nothing的, 比较典型的share disk 数据库有ORACLE ,DB2 .
MYSQL cluster 的节点之间不共享存储(每个节点都有自己的存储),所以MYSQL是share nothing
share disk: 实现更复杂些,价格更昂贵.
补充学习: MySQL 存储引擎(MyISAM、InnoDB、NDBCluster)
大树叶原文博客: 文章分别介绍了MYSQL 的三种引擎分别适用的业务范围,以及各自的特点.
MyISAM: 不支持事务,表锁,支持全文索引,
InnoDB: 支持事务,行锁,5.6后支持全文索引,四个隔离级别
NDBCluster:支持事务, 不支持全文索引,只支持 read committed
事务特性ACID
Atomic,原子:同一个事务里,要么都提交,要么都回滚;
Consistency,一致性:即在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏;
Isolation,隔离:并发事务间的行数据是彼此隔离的;
Durability,持久:事务提交后,所有结果务必被持久化。
MySQL支持事务的存储引擎:Innodb,NDBcluster,TokuD
MySQL不支持事务的存储引擎:myisam ,memory
1.隔离性通过锁的方式实现
2.原子性,一致性,持久性通过数据库的redo和undo来完成
撤销日志,undo log 没提交的事务撤销
重做日志,redo log 检查已经提交没有持久化的事务重做