NoSQL数据库的四大家族

发表于:2016-9-26 10:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:程序师    来源:51Testing软件测试网采编

  三、列存储(WideColumnStore/Column-Family)数据库
  列存储数据库将数据储存在列族(columnfamily)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。
  列存储查找速度快,可扩展性强,更容易进行分布式扩展,适用于分布式的文件系统。
  适用的场景
  1.日志。因为我们可以将数据储存在不同的列中,每个应用程序可以将信息写入自己的列族中。
  2.博客平台。我们储存每个信息到不同的列族中。举个例子,标签可以储存在一个,类别可以在一个,而文章则在另一个。
  不适用场景
  1.如果我们需要ACID事务。Vassandra就不支持事务。
  2.原型设计。如果我们分析Cassandra的数据结构,我们就会发现结构是基于我们期望的数据查询方式而定。在模型设计之初,我们根本不可能去预测它的查询方式,而一旦查询方式改变,我们就必须重新设计列族。
  产品:Cassandra、HBase
  Cassandra
  Cassandra是一套开源分布式NoSQL数据库系统,是一个混合型的非关系的数据库,以Amazon专有的完全分布式的Dynamo为基础,结合了GoogleBigTable基于列族(ColumnFamily)的数据模型。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。和其他数据库比较,有三个突出特点:模式灵活、可扩展性、多数据中心。
  使用官方java驱动操作cassandra非常简单。
  有谁在使用
  Ebay,(EBAY,中文电子湾、亿贝、易贝)是一个管理可让全球民众上网买卖物品的线上拍卖及购物网站。
  Instagram,是一款支持iOS、WindowsPhone、Android平台的移动应用,允许用户在任何环境下抓拍下自己的生活记忆,选择图片的滤镜样式,一键分享至Instagram、Facebook、Twitter、Flickr、Tumblr、foursquare或者新浪微博平台上。
  NASA,如雷贯耳,美国国家航空航天局。
  Twitter,(CassandraandHBase)全世界都非常流行的社交网络及微博客服务的网站。
  HBase
  HBase,HadoopDatabase,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。Apache三剑客:HBase,Cassandra,CouchDB,HBase的前景最为看好,因为它的开发者众多并且都是顶尖高手。
  图3描述HadoopEcoSystem中的各层系统。其中,HBase位于结构化存储层,HadoopHDFS为HBase提供了高可靠性的底层存储支持,HadoopMapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。
  
图3
  HBase提供的访问接口有:
  1.NativeJavaAPI,最常规和高效的访问方式,适合HadoopMapReduceJob并行批处理HBase表数据
  2.HBaseShell,HBase的命令行工具,最简单的接口,适合HBase管理使用
  3.ThriftGateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据
  4.RESTGateway,支持REST风格的HttpAPI访问HBase,解除了语言限制
  5.Pig,可以使用PigLatin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduceJob来处理HBase表数据,适合做数据统计
  6.Hive,支持HBase,可以使用类似SQL语言来访问HBase
  有谁在使用
  Twitter,全世界都非常流行的社交网络及微博客服务的网站。
  Facebook,美国的一个社交网络服务网站。
  Yahoo!,美国著名的互联网门户网站,也是20世纪末互联网奇迹的创造者之一。其服务包括搜索引擎、电邮、新闻等,业务遍及24个国家和地区,为全球超过5亿的独立用户提供多元化的网络服务。同时也是一家全球性的因特网通讯、商贸及媒体公司。
  四、图(Graph-Oriented)数据库
  图数据库允许我们将数据以图的方式储存。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,SteveJobs、Apple和Next,则会有两个“Foundedby”的边将Apple和Next连接到SteveJobs。
  主要用于社交网络,推荐系统等。专注于构建关系图谱。
  适用的场景
  1.在一些关系性强的数据中
  2.推荐引擎。如果我们将数据以图的形式表现,那么将会非常有益于推荐的制定
  不适用场景
  不适合的数据模型。图数据库的适用范围很小,因为很少有操作涉及到整个图。
  产品:Neo4J、InfiniteGraph、OrientDB
  Neo4J
  Neo4J是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。它的架构图如图4所示。
  
图4
  neo4j连接java目前主要有嵌入式、jdbc和restapi。
  有谁在使用
  Adobe,是世界领先数字媒体和在线营销方案的供应商,Adobe的客户包括世界各地的企业、知识工作者、创意人士和设计者、OEM合作伙伴,以及开发人员。
  Cisco,全球领先的网络解决方案供应商。
  T-Mobile,是一家跨国移动电话运营商,是世界上最大的移动电话公司之一。
  InfiniteGraph
  InfiniteGraph企业分布式图形数据库具有可伸缩性,它还能够在大量多地存储的复杂数据中,为大型企业执行实时搜索。通过使用图算法,它为分析应用程序添加了新的价值,以发现和存储新的连接和关系。
  InfiniteGraph需要作为服务项目加以安装,这与以MySQL为代表的传统数据库颇为相似。InfiniteGraph借鉴了Objectivity/DB中的面向对象概念,因此其中的每一个节点及边线都算作一个对象。InfiniteGraph还提供了一套可视化工具用以查看数据。
  InfiniteGraph基于Java实现,它的目标是构建“分布式的图形数据库”,已被美国国防部和美国中央情报局所采用。
  Redis介绍
  目前主流的NoSQL数据库,基于键值的Redis占一席之地,它功能丰富,交互简单,适用场景多。
  Redis,全称RemoteDictionaryServer,远程字典服务器,Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求。它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。
  Redis数据库中的数据是保存在内存中的,因此它的性能比基于硬盘存储的数据库有明显的优势,同时redis提供了对持久化的支持,可以将内存中的数据异步写入到硬盘中。
  即使不采取redis作为应用数据库,选择redis作为缓存、队列系统,也是一个不错的选择。
  Redis目前支持的键值数据类型如下:
  字符串类型(string)
  散列类型(hash)
  列表类型(list)
  集合类型(set)
  有序集合类型(zset/sorted_set)
  一个Redis实例相当于一格书架,书架里有16本字典(独立数据库),默认从0开始编号,查找最后一本字典的命令是select15,通过selectnumber可以自由切换数据库,这16个库并非完全隔离,某些命令可以通用,同时redis不支持自定义数据库名和访问密码,所有16个库的访问权限是一致的。区别于oracle的实例,所以不同的应用应该使用不同的redis实例。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号