关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生,现在这两年,各种各样非关系数据库,特别是键值数据库(Key-Value Store DB)风起云涌,多得让人眼花缭乱。前不久国外刚刚举办了NoSQL Conference,各路NoSQL数据库纷纷亮相,加上未亮相但是名声在外的,起码有超过10个开源的NoSQLDB。
Redis简介Redis是什么?Redis是一个开源的使用ANSIC语言编写,支持网络,基于内存亦可持久化,分布式的key-value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。特点是高性能,持久存储,适应高并发的应用场景。目前已被许多大型机构采用,比如:Github、新浪微博等等。Redis特性速度快Redis使用标准C编写实现,而且将所有数据加载到内存中,所以速度非常快。官方提供的数据表明,在一个普通的Linux机器上,Redis读写速度分别达到81000/s和110000/s。持久化通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用截图的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。数据结构可以将Redis看做“数据结构服务器”。
mongodb与mysql命令对比传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
比较全面的介绍mongodb数据的优化;MongoDB高可用架构mongoDB高可用mongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正是由于这个情况,为mongoDB提供了数据一致性的保障。担当主角色的机器能把读操作分发给slaves/secondaries。mongodb高可用可用分两种
本书写了一些目前的NoSql的一些主要技术,算法和思想。同时列举了大量的现有的数据库实例。读完全篇,相信读者会对NoSQL数据库了解个大概。 另外我还准备开发一个开源内存数据库galaxydb.本书也是为这个数据库提供一些架构资料。 CAP,BASE和最终一致性是NoSQL数据库存在的三大基石。而五分钟法则是内存数据存储了理论依据。这个是一切的源头。
Spanner是谷歌公司研发的、可扩展的、多版本、全球分布式、同步复制数据库。它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。本文描述了Spanner的架构、特性、不同设计决策的背后机理和一个新的时间API,这个API可以暴露时钟的不确定性。这个API及其实现,对于支持外部一致性和许多强大特性而言,是非常重要的,这些强大特性包括:非阻塞的读、不采用锁机制的只读事务、原子模式变更。
提纲概述和特点数据模型概念,排序,twitter,rrdRing写操作读操作API性能测试和比较配置说明概述非关系的数据库分布式的Key-Value存储系统一堆数据库节点共同构成的一个分布式网络服务对Cassandra的一个写操作,会被复制到其他节点上去对Cassandra的读操作,也会被路由到某个节点上面去读取特点 模式灵活:使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部署上。 真正的可扩展性:Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。
内存数据库概述; 内存数据库应用; ; 内存数据库功能 ; 比较传统数据库 ; 内存数据库产品。
全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。<br> 也称为超虚拟化,这是一种修改 Guest OS 部分访问特权状态的代码以便直接与 VMM 交互的技术。在超虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统,这可以通过 Hypercall(VMM 提供给 Guest OS 的直接调用,与系统调用类似)的方式来提供。xen KVM支持全虚拟化和半虚拟化. 通过给当前内核打kvm-paravirt-patches补丁来支持半虚拟化. <br> 在传统操作系统中,所有用户的进程本质上是在同一个操作系统的实例中运行,因此内核或应用程序的缺陷可能影响到其它进程。操作系统级虚拟化是一种在服务器操作系统中使用的轻量级的虚拟化技术,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程,不同实例中的进程完全不了解对方的存在。比较著名的有 Solaris Container [2],FreeBSD Jail 和 OpenVZ 等。 java虚拟机
测试方案:用js脚本创建向一个collection里插入一百万个文档,测量mongo占用内存,硬盘数据文件大小(优化数据库设计),插入时间,在一百万条基础上做find操作。内存:启动mongodb后,内存: 插入100w条数据过程: 未导入数据: 导入数据: 做查询:导入数据: 创建100w个文档,时间2分26秒左右(测试5次)Find查询:未建索引情况下,测试5次,击中索引,基本只需要0ms(测试不到),平均3.4秒。
关于MongoDB的好处,优点之类的这里就不说了,唯一要讲的一点就是MongoDB中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。
mongoDB 高可用 mongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中 同一时刻只有一台是用于写操作。正是由于这个情况,为mongoDB提供了数据 一致性的保障。担当主角色的机器能把读操作分发给slaves/secondaries。
mongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中 同一时刻只有一台是用于写操作。正是由于这个情况,为mongoDB提供了数据 一致性的保障。担当主角色的机器能把读操作分发给slaves/secondaries。采用Replica Sets的集群方案,这个方案与Master-Slave Replication的集群方案类 似,数据服务器也有主从的区别。优点是主数据服务器或从数据服务器挂掉后,会自动 切换主数据库,不用人工干预,稳定性比Master-Slave Replication。缺点是需要客户 端的驱动支持,因为客户端在与主服务器连接失败后,会向集群的其他服务器发一条特 殊的指令询问,谁是新的主数据服务器。集群的服务器在不做分区的前提下,分成三 种,主数据服务器,从数据服务器,选举服务器(只做投票不存储数据),若做数据分 区还有配置服务器。
Redis主体结构就是实现一个hashtableKey的类型为sdsValue的类型为redisobjectRedis在value上的不同设计之处Redis的应用场景对复杂数据结构的良好支持像SNS中的关系,以及一些计数类的需求Redis的常用操作
MongoDB C# Driver API Documentation
长期以来我就对分布式系统原理与实践非常感兴趣,对于Mongodb我一直很好奇,最近终于有时间能动手实验一把! 我在一台Windows机器下搭建了一个 Replica Sets + Sharding 测试集群环境,以此作为我后续对于Mongodb更进一步学习的实验平台。
目前市面上的搜索引擎项目但我不讲它们!Background做了者也(zheye.org)这个网站;需要实现类似Quora那样高效的搜索功能;采用RubyonRails开发,MongoDB数据库;中文的搜索,需要分词;需要逐字匹配搜索;能够在键盘输入的瞬间响应搜索结果;MongoDB支持;不需要太复杂的查询,单个字段作为搜索条件;逐字匹配功能;分词、模糊匹配;实时更新;排序;此搜索功能的需求为什么不用Sphinx或其他的开源项目查询速度无法满足按键瞬间需要响应的需求对于MongoDB的,暂无现成的组件可用需要逐字匹配搜索实时更新索引起初的实现机制
Strings相关命令 SET key value 设置key、value GET key 获得一个key的值 GETSET key value 设置一个key的值,并获取设置前的值 INCR key 对key执行原子加1操作 INCRBY key increment 对key执行原子加指定值操作 DECR key 对key执行原子减1操作 DECRBY key decrement 对key执行原子减指定值操作 MSET key value [key value ...] 一次设置多个key-value键值对 MGET key [key ...] 一次获取多个key的值 SETEX key seconds value 设置key-value的同时设置过期时间 SETNX key value 设置key-value仅当key不存在时成功 STRLEN key 返回key对应值的长度,只有值为String类型时有效
特点 高性能、易部署、易使用,存储数据非常方便。主要功能特性有: 面向集合存储,易存储对象类型的数据。 模式自由。 支持动态查询。 支持完全索引,包含内部对象。 支持查询。 支持复制和故障恢复。 使用高效的二进制数据存储,包括大型对象(如视频等)。 自动处理碎片,以支持云计算层次的扩展性 支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++语言的驱动程序, 社区中也提供了对Erlang 及.NET等平台的驱动程序。 文件存储格式为BSON(一种JSON的扩展) 可通过网络访问
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。