热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

谷歌分析大数据怎么它就这么快?

在谷歌,任何时候都要能给基础设施中添加任意数量的应用,每个应用都可能带来极其繁重的负载。这类请求的资源很难被满足,尤其是在有限时间内要把必要的更新做完。谷歌分析存储了大量统计数据,包括来自世界各地的互

在谷歌,任何时候都要能给基础设施中添加任意数量的应用,每个应用都可能带来极其繁重的负载。这类请求的资源很难被满足,尤其是在有限时间内要把必要的更新做完。 \

谷歌分析存储了大量统计数据,包括来自世界各地的互联网网站统计数据。检索功能可以从如此巨量的数据中快速返回要求谷歌具备特殊的解决方案,必须要满足在任何时候有更多数据需要存储时能很容易地扩展。

在谷歌,任何时候都要能给基础设施中添加任意数量的应用,每个应用都可能带来极其繁重的负载。这类请求的资源很难被满足,尤其是在有限时间内要把必要的更新做完。

如果谷歌在单个服务器节点上使用经典的关系型数据库,那么每次容量达到极限,他们都需要升级硬件。考虑到待创建应用程序和数据的量是被谷歌使用的,这类更新可能很有必要成为一项每天都做的日常工作。

负载也可以在多个服务器节点共享,但是一旦需要更多节点,系统会变得非常复杂而极其难以维护。

考虑到这些因素,标准的关系数据库配置就不再是特别适合的选择,因为对系统这么大规模的升级和维护太困难了。

寻找可扩展解决方案

为保证速度和可靠性,这种快速应急升级的做法是不必要的。谷歌使用自己的数据存储解决方案,叫做“BigTable”。与存储在关系型表中的数据不同,数据是以多维排序映射存储的。

这种类型的实现立足于广为人知的一种存储方式,就是“key-value”(键值)存储方式。这种存储方式可以提供一些性能优势,是扩展过程更容易。

关系型数据库中的信息存储

关系型数据库在一个地方存储每一条信息,通常称为表中的列。对于关系型数据库,保证数据规范化非常重要。这个过程可以确保在其它表或者列中没有重复数据。

例如,客户的名字总是应该存储在特定表的特定列中。如果客户名字在数据库的另一个表或另一列中出现了,那么它应该删除掉,应该引用从原来的表和列中提取信息。

这种结构的缺点是数据库内部会变得十分复杂。甚至相对简单的查询也会经过许多路径才能执行,在运行时候必须找到所有这些路径评估其运行时间才能知道如何做性能最优。数据库变得越复杂,运行时需要判断查询路径就会需要越多的资源。

以key/Value(键值)形式存储的信息

在key/Value键值形式的存储结构中,复制数据是可以接受的。主要思路是利用磁盘空间而不是其它硬件资源,磁盘空间相对容易获取,成本效率更容易升级(尤其是在云环境中),其它硬件资源要提速代价更昂贵。

从简化查询方面考虑,数据复制是非常有益的,因为相关信息可以存储在一起,避免查询数据时需要经过许多路径。

与关系型数据库使用表结构不同,键值存储方式使用域的概念。域是一个存放数据的存储区,它不需要预定义结构。域内的数据片段是通过“键”定义的,这些“键”可以有任意数量的属性与它们相关联。

属性可以是简单的字符串值,也可以是更复杂的结构,可以与流行编程语言中的数据类型相匹配。包括数组,对象,整数,浮点数,布尔型值,以及编程中的其它基本数据类型。

在键值存储方式中,数据完整性和逻辑在应用程序代码中处理(需要使用一个或者多个API),而不是通过数据库本身的结构来处理。这样一来,数据提取就变成了使用正确的编程逻辑的事,而不是依赖于数据库优化器基于需要访问的关系从大量可能路径中选择查询路径。

 

\

关系型数据库和键值数据库访问数据的差异

获得结果

谷歌需要存储和提取许多应用程序的大量数据,包括谷歌分析、谷歌地图、Gmail和热门搜索的web索引数据。此外,在任何时候都要添加更多应用和数据存储,这个因素就使得BigTable的键值存储成为可扩容性的理想方案。

BigTable是谷歌自己的定制解决方案,那么企业如何获得类似性能和扩展性使其用户获得更好的体验呢?好消息是还有其它键值存储方案可用,有的可以在云服务中作为服务运行。这类服务很容易扩展,因为在云环境中更多数据存储很容易购买获得。

键值存储方案

有几种键值存储数据库可供选择。其中之一就是Mongo,它是以对象数据库形式设计的,以JSON格式存储信息。这种格式在web应用中很理想,因为JSON数据很容易作为一种标注格式在各种需要的应用之间传递数据。

例如,Mongo是MEAN堆栈的一部分:Mongo,Express,AngularJS和NodeJS是程序员们开发应用的一套流行搭配。每一部分都需要与其它部分发送交互数据。所有的一切,包括数据库,都可以使用JSON格式,在各部分之间传递数据变得更加容易和规范统一。

 

\

MySQL与Mongo执行相同任务代码比较图

如何使用Mongo

Mongo可以在各种操作系统上安装使用,包括Windows,Linux和OSX。这样,数据库的扩展就简单了,只要在所安装的服务器上添加存储空间就行了。

另一种方案是在云环境中把Mongo用作服务。这样便于扩展,任何时候都可以向服务同样是发起请求要求必要的存储空间。这样一来,新的应用和更多数据存储需求就可以快速高效地处理了。

Morpheus就是这种服务中的出色候选者,它在云环境中提供Mongo服务高扩展性:Morpheus的用户可以有三个共享的节点,完整数据集,可以无缝提供MongoDB实例。此外,所有服务都运行在高性能固态硬盘(SSD)基础设施上,这是非常可靠的数据存储介质。使用Morpheus高扩展性数据库即服务可以在任何时候保持运行状态。



推荐阅读
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 1.淘宝模拟登录2.天猫商品数据爬虫3.爬取淘宝我已购买的宝贝数据4.每天不同时间段通过微信发消息提醒女友5.爬取5K分辨率超清唯美壁纸6.爬取豆瓣排行榜电影数据(含GUI界面版) ... [详细]
  • SeMITechnologies正在使用矢量搜索引擎Weaviate构建的内容。SeMI的首席执行官兼联合创始人BobvanLuijt说,它是一种独特的AI优先数据库,使用机器学习 ... [详细]
  • Abp+MongoDb改造默认的审计日志存储位置
    一、背景在实际项目的开发当中,使用AbpZero自带的审计日志功能写入效率比较低。其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起。所以我们可以重新实现A ... [详细]
  • 今天我们学习,数据库mongodb的使用,最下面有mongodb的下载链接。pipinstallpymongo首先安装pymongo,然后在需要用到的地方importpymongo ... [详细]
  • MongoDB学习:(二)MongoDB简单使用
    MongoDB学习:(二)MongoDB简单使用MongoDB使用:执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面>mongo提示 ... [详细]
  •     系统采用jeeplus框架(ssm+redis+shiro+mongodb+redis),默认是做了JSP未做前后端分离,由于业务需要已经多终端使用的需求(H5、小程序等) ... [详细]
  • mongoDB高可用集群环境搭建
    2019独角兽企业重金招聘Python工程师标准在生产环境下,部署一台mongodb服务的话,会存在以下问题:单点问题生产环境是一个 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb副本集+分片集群搭建相关的知识,希望对你有一定的参考价值。环境需求: ... [详细]
  • 这是我的第一篇博客,多有不足请指教,话不多说,直入正题原因:由于mongodb数据量较大,占用空间较大,所以决定转移数据目录到另一块磁盘下一、查看磁盘占用情况[root@test~ ... [详细]
  • 前面刚有AWS开战MongoDB,双方“隔空互呛”,这厢又曝出2亿+简历信息泄露——MongoDB的这场开年似乎“充实”得过分了些。长期以来,作为“最受欢迎的NoSQL数据库”,M ... [详细]
  • Java开发面试问题,2021网易Java高级面试题及答案,实战案例
    前言大厂面试真题向来都是各大求职者的最佳练兵场,而今天小编带来的便是“HUAWEI”面经!这是一次真实的面试经历,虽然不是我自己亲身经历 ... [详细]
  • 数据库基本介绍
    1、数据库基本知识概念:数据库:database(DB),是一种存储数据的仓库数据库是根据数据结构组织、存储和 ... [详细]
  • 关于mysql原理与web系统开发的信息
    本文目录一览:1、在做web开发的时候,MySQL主要功能是什么? ... [详细]
author-avatar
ruirui2011幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有