NoSQL技术实战
- 格式:doc
- 大小:199.50 KB
- 文档页数:10
NoSQL数据库技术与应用随着大数据时代的到来,传统的关系型数据库面临着一些挑战:数据量庞大、高并发读写、数据结构多样性等。
为了应对这些挑战,NoSQL(Not only SQL)数据库应运而生,并且在互联网、移动互联网、物联网等领域得到广泛应用。
本文将介绍NoSQL数据库技术的概念、分类,以及其在实际应用中的使用场景和优势。
一、NoSQL数据库技术概览NoSQL数据库是指非关系型数据库,它不基于传统的关系型数据库模型(如表格),而是采用了其他数据存储结构,如文档、键值对、列族、图等方式。
NoSQL数据库以其高扩展性、高性能和灵活性而闻名。
NoSQL数据库技术的主要特点包括:1. 没有固定的模式:NoSQL数据库不要求先定义或建立数据库模式,在数据存储时不存在固定的模式要求,可以灵活地存储各种数据类型及其关系。
2. 高可扩展性:NoSQL数据库可以方便地进行分布式部署和横向扩展,支持在海量数据环境中进行高效的读写操作。
3. 高性能:NoSQL数据库的底层存储结构对于快速访问和查询数据进行了优化,能够提供出色的读取和写入性能。
4. 大数据处理能力:NoSQL数据库在处理大数据量和高并发读写方面有着良好的表现,适合应对各种大数据场景。
二、NoSQL数据库的分类NoSQL数据库根据其数据存储模型和用途可以划分为多个子类。
以下是常见的NoSQL数据库分类:1. 键值存储(Key-Value stores):使用键值对来存储和访问数据,适合存储简单的无结构化数据。
常见的键值存储数据库有Redis、Riak等。
2. 文档数据库(Document databases):将数据以文档形式存储,文档之间可以嵌套,是一种无模式化的存储方式。
常见的文档数据库有MongoDB、Couchbase等。
3. 列族数据库(Column-Family stores):将数据存储为列族的方式,适合存储具有规则的数据集合,常用于大规模数据的存储和分析。
NoSQL数据库技术原理与实践随着大数据时代的到来,传统的关系型数据库在面对海量数据和高并发访问的场景下逐渐暴露出了一些问题,如性能瓶颈、扩展困难等。
为了解决这些问题,NoSQL数据库技术应运而生。
NoSQL(Not Only SQL)是一种非关系型数据库,它通过放弃传统的ACID特性,追求更高的读写性能和可扩展性。
NoSQL数据库的原理主要分为数据模型、存储结构和分布式架构三个方面。
首先,NoSQL数据库的数据模型与关系型数据库不同。
关系型数据库采用基于表的结构,需要定义表的结构和关系,然后将数据存储在表中。
而NoSQL数据库则采用各种各样的数据模型,如键值对模型、列存储模型、文档模型和图模型。
这些模型可以根据实际需求选择最适合的模型进行存储。
例如,键值对模型适合存储简单的数据结构,文档模型适合存储半结构化的数据。
其次,NoSQL数据库的存储结构也不同于关系型数据库。
关系型数据库通常采用B树等索引结构,数据存储在磁盘中。
而大部分NoSQL数据库则采用了更加灵活的存储结构,如哈希表、LSM树等。
这些存储结构能够提供更高的读写性能和存储容量。
例如,哈希表适合用于键值对存储,快速访问和更新数据。
最后,NoSQL数据库的分布式架构使其具有良好的可扩展性和高可用性。
在NoSQL数据库中,数据通常以分片的方式存储在多个节点上,每个节点负责管理一部分数据。
这种分片方式不仅提高了读写性能,还允许通过增加节点来实现扩展。
同时,NoSQL数据库还引入了副本机制,将数据复制到多个节点上以提供高可用性。
这些节点通过协调器进行通信和数据一致性的维护,保证了系统的可用性和容错性。
在实践中,NoSQL数据库常被应用于一些特定的场景,例如社交网络、个性化推荐、日志分析等。
在这些场景中,数据量庞大且对读写性能和扩展性要求较高。
通过采用NoSQL数据库,可以更好地满足这些需求。
在选择NoSQL数据库时,需要根据具体的业务需求和性能要求进行选择。
NoSQL数据库技术分析与实践本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意!摘要:现在是云计算的时代,传统的关系型数据库的缺点会慢慢地都体现出来,尤其是他无法应对大数据量的处理需求,导致目前关系型数据库在云计算的平台下已经成为制约整个WEB架构敏捷性和扩展性的瓶颈。
为了弥补这些不足,NoSQL型数据库应运而生,NoSQL可扩展的松耦合类型数据模式,以及在易用性、高度伸缩性、支持海量数据等方面所表现出来的优点,使其在云计算领域被广泛应用。
大数据的出现与发展促进了NoSQL数据库技术的发展及其产品应用,为大数据的存储、传输与处理创造了生态环境。
本论文从最基本的NoSQL数据库的发展过程开始、介绍了memcached、T okyo Tyrant、Redis和MongoDB 这四种NoSQL数据库的使用背景、分析了NoSQL数据库技术特点,并对目前应用的几种典型NoSQL数据库进行了分析比较。
关键词:云计算;数据库;非关系型数据库;1 概述大家也许已经听说过“nosql”这个词了,但是这个词的含义到底是什么?有什么用途?有什么优点?有什么缺点等等一系列问题随之而来。
Nosql数据库是为了弥补关系型数据库的不足而产生的。
Nosql数据库是非关系型数据存储的广泛定义,它打破了长久以来关系型数据库与ACID理论大统一的局面。
Nosql数据存储不需要固定的表结构,通常也不存在连接操作。
Nosql数据库不使用传统的关系数据库模型,而是使用文档型的、列存储、图形数据库等方式存储数据模型。
关系型数据库技术特征分析及问题关系型数据库把所有的数据都通过行和列的二元表现形式表示出来,给人更容易理解的直观感受。
关系型数据库可以使多条数据值来进行关联,这样就使数据可以独立存在,使得数据结构的变更变得简单易行。
关系型数据库的特征,可以分为优点和缺点两个方面来考虑。
NoSQL数据库的特点与实践应用介绍:NoSQL数据库是指非关系型数据库,与传统的关系型数据库相对而言,在处理大规模的分布式数据和需要高度可扩展性的场景中具有很大的优势。
随着云计算、物联网和大数据的迅猛发展,NoSQL数据库逐渐成为企业和开发者的首选。
本文将探讨NoSQL数据库的特点以及实践应用,并重点介绍了几个流行的NoSQL数据库。
一、NoSQL数据库的特点1. 高度可扩展性:NoSQL数据库可以横向扩展,添加更多的服务器来处理更大的数据规模和并发请求。
这种可扩展性使得NoSQL数据库特别适用于大型分布式系统。
2. 数据模型灵活:与传统的关系型数据库不同,NoSQL数据库不需要预先定义表结构和模式,可以根据需要动态地存储和修改数据。
这种灵活性使得NoSQL数据库能够满足不同类型和结构的数据需求。
3. 高性能:NoSQL数据库通常采用基于键值对、文档、列族或图的数据模型,这些模型具有出色的读写性能。
NoSQL数据库还支持水平分割和负载均衡,使得读写操作可以在多个节点上并行进行,提高了系统的效率和响应速度。
4. 可用性和容错性:NoSQL数据库具有良好的可用性和容错性。
数据通常在多个节点上复制存储,并具备自动故障转移和恢复功能。
这意味着即使某个节点发生故障,系统仍然可以继续运行,数据也不会丢失。
5. 低成本:NoSQL数据库通常基于开源技术,免费提供给开发者使用,降低了企业的成本。
同时,NoSQL数据库可以轻松与云计算平台集成,进一步降低了部署和操作的成本。
二、NoSQL数据库的实践应用1. 分布式存储和缓存:NoSQL数据库非常适合作为分布式存储和缓存的解决方案。
例如,Facebook使用Cassandra作为其消息系统的存储,并使用Memcached作为缓存存储。
这些NoSQL数据库可以应对高并发的读写请求,提供快速的数据存取和缓存功能。
2. 大规模数据分析:NoSQL数据库在大数据分析中具有重要的应用价值。
NoSQL开篇——为什么要使用NoSQL【编者按】NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面。
今年伊始,InfoQ 中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于NoSQL方面的经验和体会。
非常荣幸能受邀在InfoQ开辟这样一个关于NoSQL的专栏,InfoQ是我非常尊重的一家技术媒体,同时我也希望借助InfoQ,在国内推动 NoSQL的发展,希望跟我一样有兴趣的朋友加入进来。
这次的NoSQL专栏系列将先整体介绍NoSQL,然后介绍如何把NoSQL运用到自己的项目中合适的场景中,还会适当地分析一些成功案例,希望有成功使用NoSQL经验的朋友给我提供一些线索和信息。
NoSQL概念随着web2.0的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性。
NoSQL概念在2009年被提了出来。
NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。
(“NoSQL”一词最早于1998年被用于一个轻量级的关系数据库的名字。
)NoSQL被我们用得最多的当数key-value存储,当然还有其他的文档型的、列存储、图型数据库、xml数据库等。
在NoSQL概念提出之前,这些数据库就被用于各种系统当中,但是却很少用于web互联网应用。
比如cdb、qdbm、bdb数据库。
传统关系数据库的瓶颈传统的关系数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功能强大,同时也积累了大量的成功案例。
在互联网领域,MySQL成为了绝对靠前的王者,毫不夸张的说,MySQL为互联网的发展做出了卓越的贡献。
在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。
在那个时候,更多的都是静态网页,动态交互类型的网站不多。
到了最近10年,网站开始快速发展。
火爆的论坛、博客、sns、微博逐渐引领web领域的潮流。
NoSQL数据库工作机制及产品应用案例NoSQL(Not Only SQL)数据库是近年来兴起的一种新型数据库管理系统,相较于传统的关系型数据库,在某些场景下具有更好的性能和可伸缩性。
本文将详细探讨NoSQL数据库的工作机制,并通过实际应用案例来展示其在不同领域的产品应用。
一、NoSQL数据库的工作机制NoSQL数据库的工作机制与传统的关系型数据库有所不同。
传统的关系型数据库采用结构化查询语言(SQL)作为数据操作的接口,而NoSQL数据库则采用不同的数据模型,如键值对、文档、列簇和图形等。
这种不同的设计理念使得NoSQL数据库具备了以下特点:1. 高可扩展性:NoSQL数据库可以方便地水平扩展,通过添加更多的节点来处理更大规模的数据和负载。
这使得其能够满足高并发和大数据量的应用需求。
2. 高性能:NoSQL数据库采用了一些优化策略,如去除了复杂的关系型模型、提高了数据读写的效率等,从而提供了更高的性能。
3. 灵活的数据模型:NoSQL数据库支持不同的数据模型,能够根据具体的应用场景选择合适的数据模型,更好地适应不同的数据结构和查询需求。
4. 异步写入:NoSQL数据库往往采用异步写入的方式,将写入操作缓冲至内存中,提高写入的效率。
这种方式在一些对数据一致性要求不高的场景下具有优势。
二、产品应用案例1. 键值对数据库:RedisRedis是一种广泛使用的键值对数据库,它支持在内存中高效地存储键值对,并提供富有特色的数据结构和丰富的操作指令。
Redis被广泛应用于缓存系统、消息队列和排行榜等场景,能够提供快速的读写能力和高并发的支持。
2. 文档数据库:MongoDBMongoDB是一种面向文档的数据库,它以BSON(Binary JSON)格式存储数据,能够快速地读取和存储复杂的文档结构。
MongoDB在大数据量、高并发读写以及动态数据结构的场景下表现出色,广泛应用于社交媒体、物联网和日志分析等领域。
全⾯解读NoSQL数据库Redis的核⼼技术与应⽤实践互联⽹和Web的蓬勃发展正在改变着我们的世界,随着互联⽹的不断发展和壮⼤,企业数据规模越来越⼤,并发量越来越⾼,关系数据库⽆法应对新的负载压⼒,随着Hadoop,Cassandra,MongoDB,Redis等NoSQL数据库的兴起,因其良好的可扩展性,弱化数据库的设计范式,弱化⼀致性要求,在解决海量数据和⾼并发的问题上明显优于关系型数据库。
因⽽很快⼴泛应⽤于互联⽹业务中。
Redis作为基于K-V的NoSQL数据库,具有⾼性能、丰富的数据结构、持久化、⾼可⽤、分布式、⽀持复制等特性。
从09年⾄今,经历8年多的锤炼,已经⾮常稳定,并且得到业界的⼴泛认可和使⽤,同时社区⾮常活跃。
团队⼯作重⼼微博研发中⼼数据库部门主要负责全微博平台的后端资源的托管和运维,涉及的资源种类⽐较多,数据量⽐较⼤,业务线和资源实例数⽬也是⾮常之多,并发量巨⼤。
⽽这些正是微博这种体量的公司应该具有的,微博作为当今中⽂社交媒体的第⼀品牌,拥有超过3.76亿的⽉活⽤户,也是当前社会热点事件传播的最主要平台,其中包括但不限制于⼤型活动(如:⾥约奥运会、朱⽇和沙场⼤点兵等),春晚,明星动态(如:王宝强离婚事件、⼥排夺冠、乔任梁去世、⽩百合出轨、T FBOYS⽣⽇、⿅晗关晓彤CP等)。
⽽热点事件往往具有不可预见性和突发性,并且伴随着极短时间内流量的数倍增长,甚⾄更多,有时持续时间较长。
如何快速应对突发流量的冲击,确保线上服务的稳定性,是⼀个⾮常巨⼤的挑战和有意义的事情。
为了达到这⼀⽬标,需要有⼀个完善的,稳定可靠的,健壮的数据库运维体系来提供⽀撑和管理,所以我们团队也是在领导的指导下,有⽬标、有计划的开展⼀些数据库⾃动化运维平台的建设⼯作。
重⼤的变化与核⼼变化Redis的版本号命名规则借鉴了Linux的⽅式,版本号第⼆位如果是奇数,则为⾮稳定版本,如果为偶数,则为稳定版本。
稳定版本的⼀些主要改进吧:Redis2.61)键的过期时间⽀持毫秒2)从节点提供只读功能3)服务端⽀持Lua脚本4)放开客户端连接数的硬编码限制5)去掉虚拟内存相关功能等Redis2.81)完善主从复制功能,实现增量复制2)Redis设置明显的进程名,在系统中ps命令即可查看3)发布/订阅添加pub/sub命令4)Redis Sentinel第⼆版发布,较Redis 2.6更加完善,可以线上使⽤5)可以通过config set命令设置maxclients等Redis3.01)推出Redis的分布式集群 Redis Cluster2)全新的embedded string对象编码结果,优化⼩对象的内存访问,在特定的⼯作负载下能⼤幅度提升性能3)LRU算法提升4)config set 设置maxmemory的时候可以设置不⽤的单位5)新的Client pause命令,在指定时间内停⽌处理客户端请求等Redis3.21)添加GEO功能2)新的List编码类型quicklist3)SDS在速度和节省空间上都做了优化4)Lua脚本功能增强5)新的RDB格式,仍兼容旧版RDB,同时加载速度上也有提升6)Cluster nodes命令加速等在Redis4.0版本上,我认为最核⼼的功能应该是⽀持了module,这极⼤的丰富的Redis的功能,使得许多Redis本⾝不具有的,第三⽅开发者拓展的功能也能加载到Redis中当⼀个功能进⾏使⽤,⽐如RediSearch、ReJSON、Redis-ML等。
云计算时代的数据库技术——NoSQL的实现与应用随着时代的发展和科技的进步,云计算已经成为了一个全新的领域。
它从根本上改变了人们处理和存储数据的方式,因此,数据库技术也随之发生了变化。
相比于传统的关系型数据库技术,NoSQL数据库技术在云计算时代得到了广泛应用,并且逐渐成为了热门的技术话题。
一、NoSQL简介NoSQL(非关系型数据库/不仅SQL)是一种不依赖关系型数据模型、而使用其他模型来存储和查询数据的数据库技术。
NoSQL数据库在云计算应用中具有非常重要的地位。
相对于传统的关系型数据库技术,NoSQL数据库技术具有许多优势。
首先,数据模型更加灵活,适合更加多样化的数据类型。
其次,NoSQL数据库的性能更好,可以更好地应对大规模数据的处理和存储。
虽然NoSQL数据库技术具有很多优点,但是也存在一些特点。
比如,缺乏标准化和统一的查询语言等。
二、NoSQL技术分类NoSQL技术具有多种分类方式,常见的分类方式包括:1. 针对数据模型分类:列存储(Column store)、文档型存储(Document store)、图形数据库(Graph)、键值存储(Key-value)、面向对象数据库(Object-oriented database)等。
2. 针对运行模式分类:分布式数据库(Distributed database)、网格数据库(Grid database)、云数据库(Cloud database)、内存数据库(In-memory database)等。
3. 针对更新方式分类:不可变数据库(Immutable database)、可变数据库(Mutable database)等。
三、NoSQL应用实例随着云计算技术的不断普及和发展,NoSQL数据库技术在各种大型应用场景中得到了广泛应用。
下面简单介绍几个实例:1. Facebook采用的Cassandra数据库Cassandra是一个开源的分布式数据库管理系统,最初由Facebook开发。
NoSQL数据库技术与实践随着互联网和云计算的迅速发展,数据存储和查询需求不断增长,大数据时代已经到来。
然而,传统的关系型数据库在处理海量数据时遇到了很多问题,比如性能瓶颈、扩展性不足、数据一致性、以及高昂的成本等。
为了解决这些问题,NoSQL数据库应运而生。
NoSQL数据库指的是非关系型数据库,与传统的关系型数据库相比,它具有以下特点:1. 没有固定的表结构,数据以键值对的形式存储,更适合存储半结构化和非结构化数据。
2. 支持分布式架构,可以水平扩展。
3. 支持分布式事务和数据一致性。
4. 支持高并发和高可用性。
5. 适合于大规模数据的存储和处理,是大数据时代的重要组成部分。
其中,最常见的NoSQL数据库包括MongoDB、Cassandra、Redis等。
下面,我们将针对这些数据库介绍其技术原理和实际应用。
一、MongoDBMongoDB是一种文档型数据库,它将数据以BSON(二进制JSON)的格式存储,更适合存储非结构化数据。
MongoDB采用分布式架构,通过横向扩展来解决高并发和海量数据的问题,支持数据的自动分片和负载均衡。
此外,MongoDB支持ACID事务,保证数据的一致性和可靠性。
MongoDB最常见的应用场景之一是日志存储和分析。
例如,在电商网站中,每次用户的点击、加入购物车、下单等行为都会产生日志,这些日志需要实时分析,以便对用户进行个性化推荐和广告投放。
MongoDB的高并发和高可用性特点,以及面向文档的数据模型,使它成为日志存储和分析的理想选择。
二、CassandraCassandra是一种列式数据库,它将数据以列簇的形式存储,更适合存储半结构化数据。
Cassandra采用分布式系统架构,可以在多台服务器上运行,实现数据自动切分和负载均衡。
这种分布式架构使其更具可扩展性,并提供了高可用性和数据冗余备份。
此外,Cassandra支持分布式事务和数据一致性,以保证数据的完整性和可靠性。
NoSQL技术实战时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信、金融等行业,几乎已经到了“数据就是业务本身”的地步。
这种趋势已经让很多相信数据之力量的企业做出改变。
恰逢此时,为了让更多的人了解和使用分析大数据,CSDN独家承办的大数据技术大会于今日在北京中旅大厦召开。
本次大会汇集Hadoop、NoSQL、数据分析与挖掘、数据仓库、商业智能以及开源云计算架构等诸多热点话题。
包括百度、淘宝、新浪等业界知名专家与参会者齐聚一堂,共同探讨大数据浪潮下的行业应对法则以及大数据时代的抉择。
从左至右分别为程显峰、丛磊、李祎、杨志丰、巨建华传统的关系数据库在应付web2.0网站网站时暴露了很多难以克服的问题:web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,数据库并发负载非常高,往往要达到每秒上万次读写请求。
对于关系数据库来说,在如此海量的信息中进行SQL查询,效率是极其低下乃至不可忍受的。
在最后的沙龙环节中MongoDB中文社区创始人程显峰、淘宝核心系统存储系统研发专家杨志丰、新浪云计算高级技术经理丛磊、139说客架构师李祎、技术总监巨建华就对如何理性考量NoSQL、NoSQL基准测试要点、NoSQL和云计算整合趋势、NoSQL和分布式计算的结合等问题展开了热烈讨论。
以下为文字实录主持人:最后环节是我们圆桌讨论,我们也请五位嘉宾上台。
首先邀请圆桌讨论主持人MongoDB中文社区创始人程显峰,杨志丰先生,丛磊,139的李祎,以及巨建华先生,我们交流主题大概是以围绕NoSQL这一块。
主持人程显峰:我们讨论了一天大数据的问题,到晚上我们专门拿NoSQL单独作为一个话题进行讨论,大家可以看到在座四位嘉宾,其中有三个人都有自己的NoSQL。
我想第一个问题,因为有很多人都在做NoSQL的选型,如果不用你们的NoSQL,你们推荐大家用什么样的NoSQL,怎么去选NoSQL,怎么根据自己的业务去选择合适的NoSQL?当然不可以推荐自己的。
丛磊:我关注NoSQL还是比较多的,我觉得MongoDB,另外对于选型来讲首先看需求,可靠性到底要求怎么样,速度要求怎么样,这个东西要求准确判断然后再去进行选型。
李祎:我是来自139移动微博的李祎,现在是架构师。
在我们系统里面用到关系型数据库是我们自己搭建的,就是拿来做微博熟悉用户推荐,以及和人有关人的计算。
为什么我们选了自己一个东西,而没有用其他人,我们也是基于自己业务需求来做的,现在市场上NoSQL 很多,我们就基于自己推荐业务需求,要做自己的一个数据库。
市面现在图形数据库有一些,其实都开发的不是特别完善,基于我们现有的技术,和现有的一些开源软件和一个大的数据库。
杨志丰:我下午讲的时候已经提到,要看每一个特性,需求把很多都已经排除掉了。
除此之外,大公司和小公司还不是很一样,很大公司在选的时候,除了你看到他的东西比别人多好之外,一旦出了问题有没有人帮你解决问题,这就是为什么很多大公司经常自己去做事情,我们现在都在用NoSQL,但是肯定有研发人员在里面,没有这方面的人才,可能你直接买一个,比如Oracle也有一个最新的解决方案,他给你更好的一个技术支持。
主持人程显峰:也就是我们在考察NoSQL的时候也要考虑SQL是否强大,你自己是否能够完全掌控这一部分,还是需要外面的支持?杨志丰:这是一方面。
巨建华:我没有自己数据库,不像在座几位。
但是我有一个建议,如果我们采用NoSQL的数据库,最好能够特别在产品中,正式产品中使用,我建议大家能够有机会都看看,如果不想做很深入研究,也得很清楚存储结构,甚至各种数据文件处理方式,我建议最好能看看源代码,跑不起来能够有一定修复能力,特别NoSQL很重要,如果做不到会带来很大风险,有可能某一天重要数据丢掉之后找不回来,如果没有很好的备份方案。
现在比较好,我现在目前使用MongoDB本身比较完善,可以放心使用。
主持人程显峰:今天数据主题也是大数据,数据也有几个阶段,采集,处理,存储,呈现。
我们发现之后存储跟处理部分结合越来越紧密了,比如Hadoop有存储专用的一块东西,而像MapReduce传统存储也有一定框架,大家对存储和处理结合越来越紧密,大家有自己的或者使用别人的,这个是不是方便,大家可以谈一下。
丛磊:我觉得是这样,首先这个数据处理可能有两种需求,一种是用户大规模海量数据综合处理,还有用户在对于他自己数据像一个存储过程一样,对于单条,或者几条数据相对之间小规模处理,SAE这两块都有,其实NoSQL是具有天生亲近感。
还有用户小规模数据,想插入数据的时候,取出数据的时候做什么计算,最好的载体就是GS,MongoDB是这么做的,GS是最好的一种通用语言,任何一个人写起GS来不会有太多问题,将来SAE,肯定会支持用户通过GS来实现存储互通的功能。
李祎:其实我们这边用自己图形数据库原先也考虑过用Hadoop的方式,但是发现两个问题,一个是Hadoop数据结构和我们需要的关系型数据库,和我们需要对应关系那种不是特别匹配,我们要通过好几道手才能取出来进行计算,这样不太合适。
另外我们也接触了,我们BI部门原来也用过Hadoop的方式,发现其实有一个问题,这个问题是一个故事,有一次他们机器宕机了Hadoop物理存储恢复不了,搞了半天,发现后来我们面临选型的问题,我就觉得我们无法真正去控制这个东西,就像刚才杨志丰所说的一样,无法真正控制这个东西的时候,最好还是选择一个最后能做最简单的东西进行控制,这也是我们为什么自己做图形数据库的一个原因。
杨志丰:这个问题我刚才讲的时候已经提到的,我们OceanBase里面已经有了,需要进行嵌入,我们是要把计算移到数据上去,因为今天主题就是大数据,数据他大了,移动一下,从这个集群移到那边为了做计算再移过来,这个代价太大了,所以我们要把他和数据放到一起,这就是一致性的问题。
另外我有一个趋势。
巨建华:我选择MongoDB受整个脚本限制,在整个单模式下跑,整个集群在同一时间只能跑一个,在这上面跑比较受到局限。
我结合这种模式,运动量比较大,经过相互拆分进行并行,说比较弱,能够满足业务需求,所以在这个过程中暂时还是能够通过自己写的分布式集成框架来解决问题。
我看这方面很多跟刚才淘宝他们讲的是一样,很多时候根据实时业务场景来采取利用什么样的方法来解决问题。
当然说如果真正,假设我们需要做索引,可能就需要结合形式来进行解决,而不是采用一种通用框架解决,很多时候通用框架必然比较低。
杨志丰:这种NoSQL方案理解大部分在线实时查询方式,OceanBase功能,我白天做查询,现在即使Hadoop也很难找到一个很好的解决方案,因为你很难控制计算资源,对于实时应用,你要留足够大的余量来保持实时性。
主持人程显峰:其实还是资源比较有限,很难控制?杨志丰:本身就是倒出去做离线计算。
主持人程显峰:来参加大数据有很多还在考虑NoSQL,考量很多方案,大家拿不准一个问题,我什么时候该用NoSQL,什么时候该跳进这个池子里,或者我采取一些措施可以继续支撑再高一个层次,现在到了这个门槛上,我是继续来优化我现有系统,还是我研究一下新技术,尝试一下,有什么样的信号,你们在选NoSQL的时候是怎么来进行抉择的,到这个点了我们可以尝试了,还不到这个点,有没有什么关键的指标可以来说明这个问题?丛磊:对于选择NoSQL我建议不要盲目选择和跟风,我就以游戏公司为例。
毕竟SAE有很多游戏公司,其实不管什么平台游戏公司是最赚钱的一种类型公司,但是游戏公司我所知道应用99%,我所了解到的只用MySQL和MC,大部分公司用这两个业务够,没有必要投入更大精力,当然也取决于个人对于技术追求,从业务角度来讲没有必要太多跟风。
另外一个从选择来讲还是要看自己的需求,根据自己的领域来做这个选择。
主持人程显峰:是不是感觉现在互联网公司更愿意赶潮流一些,有点过度一开什么马上就跟上,我们也就试一试?丛磊:我觉得稍微有点过,我个人觉得可能有点过。
李祎:我就讲我们实际例子,我们为什么要做图形数据库,我们原来也是基于数据库用户关系,但是后面随着推荐逻辑越来越复杂,你发现去调用数据库的时候IO性能已经很低了。
这时候又想到找我们BI,我们一调结果发现BI死掉了,我们就想自己做一个,因为我们做推荐,就需要一个图形数据库,我们就去找,找到一个正确路去做自己的一个图形数据库。
刚才那个说是IT,互联网有点跟风过,我也比较保守赞成这个观点。
我们想YDS(音译)特别火我们也想换,我们换了之后下午进行测试,发现效果非常好,内存消耗反而上去了,原来需要2个G就能存的数据,现在需要4个G,我们倒想换老板没钱,现在这个办公室最好,如果再换上去的话,很可能会出现一些各式各样的问题,所以还是选择一个比较稳妥的路子。
其实IT公司,特别咱们互联网公司崇尚一些科技技术其实是好事,应该多普及,要不然的话就没有创新了,太保守。
杨志丰:我觉得这个问题能不用的时候就尽量不用,基本上最后不得不用的都是需求推动,因为我了解这几年大公司,他们肯定是需求推动的,因为不得不这样做。
你运维成百上千个,比如Mark Server,把运维尽量自由化,我听说也几千台组成Mark Server,如果你一个DB 买比较好的,当前最好的硬件,肯定谁都不会找麻烦,当几百台,我们运维就是解决宕机,各种各样扩展性方面的问题。
主持人程显峰:有现有尽量不要改变,还有另外一个层次能用别人就不要自己写一个,你们有三个人已经写了?杨志丰:你可以用,这个产品本身应该长成什么样大家都不一样。
李祎:自己一个架构师这就是你的职责,不能大家说好够去用,出了问题还需要你负责。
巨建华:我觉得现在都在崇尚敏捷开发,我们在做一个项目的时候,特别互联网实验性项目,我们可能更希望快速上线,上线之后能够快速改进。
一个应用下来我觉得我自己都会很累,而我们采用类似于MongoDB面向文档存储的东西,本身就跟ORM结合非常好,不用写代码,如果我对某种MongoDB数据库用的比较熟觉得自己能够Hold住这个东西,即使项目组中其他人不一定会熟悉,毕竟开发很简单,从能够快速完成工作回家的角度我是支持用MySQL,确实能够提高开发效率,还有一个好处将来你的产品真的成长起来,成熟起来,你想做分布的时候会发现会省了很多时间。
主持人程显峰:其实我们从两个,大家从两个不同角度去讲这个问题,最终都是你最终付出多少成本,前三位最关注数据库维护,他运维的一些成本,可能更关注开发上线这部分成本。
把这两部分成本看看自己找一个非常好的平衡点来做这个事情。
在这个公司采用NoSQL的时候,一定会去找一些NoSQL的技术人员,各位在从业过程中你们是如何评价一个NoSQL 技术人员,应该具备什么素质?我们这个会开完之后会有无数人跳进这个圈子,他们到底跳进一个火盆,还是一个火坑,他需要具备什么样的素质,你就觉得这个东西,因为传统DBA 是有标准的,基本上就哪些内容,现在NoSQL不一样了,大家都有不同看法,我们从建化那边开始。