阅读更多

10顶
2踩

互联网

原创新闻 Google如何管理20亿行代码

2015-09-21 10:39 by 见习编辑 tuhaihe 评论(5) 有6925人浏览
《Wired》今天一篇文章谈到Google的代码量已达到20亿行,并简单介绍了Google是如何管理这些代码的。

这20亿行代码,涉及搜索、Gmail、文档、地图、YouTube、Google+等绝大多数Google提供的服务,存储在“一个”代码仓库中,两万五千名Google工程师都可以访问——这可能是世界上最大的单一代码库。只有几个例外:涉及机要信息的代码,如PageRank算法,或者相对独立的项目,如Android和Chrome系统储存在其他单独代码库中。工程师之间可以方便的共享代码——这意味着所有新项目和功能都能利用之前已经写好的代码——20亿行已经几乎无所不包了,而且一处改进,所有相关项目都能受益。

20亿行是什么概念?14年前,Windows XP发布时,包含4500万行代码——Google的代码数量,约为40多个XP。

Google使用一个称为Piper的系统管理这个巨大的代码仓库——这套系统运行在10个不同的数据中心之上,管理的数据量约为85TB,Google工程师每天会进行45000次commit。这又是什么概念?相当于Google工程师每周就重写了一次Linux。

不仅如此,这套从前任Perforce演化而来的系统,还要帮助人类工程师打理各种琐碎的代码修改和提交工作,例如检查Bug和清理用不到的代码,生成必要的配置文件等等——维护代码库健康的工作不仅是工程师在做。

此外,Google正与Facebook合作,计划将类似的强大代码管理工具提供给外界,让公司之外的所有工程师都能受益。不过这套系统并非基于Git,而是Mercurial。当这套系统公之于众时,GitHub会受什么影响?

其实不仅Google的代码庞大复杂至此,微软也毫不逊色。Hacker News上就有微软工程师讲到了自己了解的数据:仅Windows build system每天在微软内部网络产生的交换数据量,就相当于Netflix所有电影总和的数倍!
来自: 极客头条
10
2
评论 共 5 条 请登录后发表评论
5 楼 liuwenjie517333 2015-10-09 20:49
感觉阿里也在学习国外大公司,把自身比较好的功能,开放出去,给第三方用。
4 楼 skzr.org 2015-09-27 11:44
kuchaguangjie 写道
Git 和 Mercurial 的设计很相似, git 比 Mercurial 做的更好, 这套系统就算开源了, 对 git 或 github 都没有任何影响. 把 单个项目做得如此庞大, 本身就是非常愚蠢的.

赞同
3 楼 ldrs 2015-09-25 18:46
  
2 楼 zk302 2015-09-23 09:18
kuchaguangjie 写道
Git 和 Mercurial 的设计很相似, git 比 Mercurial 做的更好, 这套系统就算开源了, 对 git 或 github 都没有任何影响. 把 单个项目做得如此庞大, 本身就是非常愚蠢的.

不能这么说,很简单的想把所有东西做到一起是很难维护, 但是他这个肯定是外部可以看成一体,但是内部却有很好的解耦。 谷歌这么大一个公司会想不到你说的问题?
1 楼 kuchaguangjie 2015-09-21 18:31
Git 和 Mercurial 的设计很相似, git 比 Mercurial 做的更好, 这套系统就算开源了, 对 git 或 github 都没有任何影响. 把 单个项目做得如此庞大, 本身就是非常愚蠢的.

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 大数据ELK(三):Lucene全文检索库介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。 目录 系列历史文章 一、什么是全文检索 1、结构化数据与非结构化数据 2、搜索结构化数据和非结构化数据 3、全文检索 二、Lucene简介 三、倒排索引结构 四、企业中为什么不直接使用Lucene 1、Lucene的内建不支持分布式 2、区间范围搜索速度非常缓慢 3、可靠性无法保障 系列历史文章 2021年大数据ELK(三):Lucene全文检索库介绍 ..

  • 「GoCN酷Go推荐」​全文检索库bluge

    推荐理由提到全文检索库,第一个想到的就是Java实现的lucene,今天介绍一款Golang实现的全文检索库bluge。bluge脱胎于Bleve,是当前Github比较火的搜索引擎项目z...

  • 16款开源的全文搜索引擎

    全文搜索引擎就是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。许可证:Apache-2.0开发语言:JavaApache Lucene 是完全用 Java 编写的高性能、功能齐全的全文检索引擎架构,提供了完整的查询引擎和索引引擎、部分文本分析引擎。目的是为软件开发人员提供一个简单易用的工具包,以方便地在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。许可证:Apache-2.0。

  • ElasticSearch全文搜索引擎

    Lucene是apache下的一个开源的全文检索引擎工具包(一堆jar包)。它为软件开发人员提供一个简单易用的工具包(类库),以方便的在小型目标系统中实现全文检索的功能。Lucene适用于中小型项目 ,ES适用于中大型项目(它底层是基于lucene实现的)虽然全文搜索领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene只是一个库。

  • OEM、ODM、OBM分别是什么?

    OEM、ODM、OBM分别是什么? 什么是OEM? OEM(Original Equipment Manufactuce,原始设备生产商)。 是在社会化分工、专业化利益驱动下产生的,其基本含义是:按原单位(品牌单位)委托合同进行产品开发和制造,用原单位商标,由原单位销售或经营的合作经营生产方式。 经济学鼻祖亚当斯的《国富论》(经济学第一本专著)第一篇第一章第一节开宗明义的就是讲专业

  • Elasticsearch:一个方便易用的全文搜索库

    注:本文内容均来自《Elasticsearch权威指南》,是做读书笔记,同时做一个总结。 Elasticsearch是使用基于http的RestFul来实现和使用的,因此使用curl来测试。如果不使用curl,使用各种语言的对应http请求即可使用。 Elasticsearch 集群包含索引,索引包含类型,类型存储文档,文档具有属性 能力 高可拓展、全文搜索、分析、存储 使用举...

  • Lucene(全文检索)索引库维护

    Lucene索引库的维护    Lucene工具类封装package com.xushuai.lucene; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Docum...

  • 全文检索的基本原理

    最近想要学习有关语义搜索的算法知识,听大神讲解了解到lucene全文搜索库,查阅了官网的说明和一些博客,将个人理解到的全文检索方法整理在下面。 一、首先,为什么需要全文搜索? 首先介绍两种数据分类,根据搜索内容格式不同,一般将搜索数据分为两类: 1. 结构化数据:指具有固定格式或有限长度的数据,如数据库、元数据等。针对结构化数据的搜索,例如对数据库的搜索,可以使用SQL语句。再如对元数据的搜...

  • 全文搜索引擎,索引库

      全文搜索引擎的工作原理理论上很简单,关键技术就是“分词”,   “索引库”:使用分词技术把“文档数据”按分词拆分,也就是一个文档拆分为多个分词(一条普通数据拆分为多个词的索引数据)。这个结构就形成了“索引库”,索引库存储的数据就叫索引(索引数据)(所以当普通数据发生变化的时候,与之所对应的索引也要变化,这里就涉及到自动实时更新索引,自动定时更新索引,还是手动更新索引,还有是增量更新索...

  • Lucene快速入门第一讲——你总得知道Lucene是个啥?

    本文我将为大家讲解全文检索技术——Lucene,现在这个技术用到的比较多,我觉得大家还是应该掌握一下,不说多精通,但是应该有所了解。在讲解之前,我们先来看一个案例,通过该案例引出全文检索技术——Lucene。案例实现一个文件的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字的文件都需要找出来。还可以根据中文词语进行查询,并且需要支持多个条件查询。本案例中的原始内容就是磁盘上的文件,如下图

  • Lucene全文搜索原理与使用

    本文中主要是对于Lucene全文搜索的基础原理进行简单的分析,以及Lucene实现全文搜索的流程,之后就是Lucene在Java中的最简单使用:创建索引,查询索引库; 本文中使用的Lucene主要是4.10.3和6.0.0,两个版本的原理相同,但是API的使用并不相同; 1、结构化数据与非结构化数据 2、非结构化数据搜索 3、全文搜索 4、搜索如何实现 5、Lucene实现全文搜索流程

  • 全文检索概念介绍

    1.全文检索概念介绍     今天小编给大家讲解全文搜索的概念,希望大家对全文搜索能够有一个整体的了解。 1.1我们身边的搜索 l        在BBS、BLOG、新闻等系统中提供的搜索文章的功能,如这里的贴吧的例子。搜索的范围是系统内的文章数据,搜索出来之后符合条件的记录高亮、并且按点击率排序 l        Eclipse中的帮助子系统:点击HelpàHelpContents,可以

  • 不看后悔系列——全文检索介绍

    全文搜索是什么         从全文数据中进行检索就叫全文检索(全文搜索)。是基于文本的搜索。 l结构化数据:指具有“固定格式”或“有限长度”的数据,如数据库,元数据等; l非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等; l半结构化数据,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。  全文数据搜索的方式  1.顺序扫...

  • Lucene学习总结之一:全文检索的基本原理

    一、总论根据http://lucene.apache.org/java/docs/index.html 定义:Lucene 是一个高效的,基于Java 的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。那么什么叫做全文检索呢?这要从我们生活中的数据说起。我们生活中的数据总体分为两种:结构化数据 和非结构化数据 。结构化数据:

  • ORACLE网络的几个重点概念

     数据库名(DB_NAME)、数据库实例名(INSTANCE_NAME)、操作系统环境变量ORACLE_SID、数据库服务名(SERVICE_NAME)、数据库域名(DB_DOMAIN)以及全局数据库名(GLOBAL_DB_NAME)是几个使用Oracle数据库容易混淆的概念。1、数据库名与实例名×数据库名(DB_NAME):是区分数据的内部标识(即是给Oracle数据库内部使用的),因为其在数据

  • CHAR,VARCHAR,VARCHAR2类型的区别与使用

    区别: 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。 2.CHAR的效率比VARCHAR2的效率稍高。 3.目前VARCHAR是VARCHAR2的同义词。工

  • SQL*PLUS命令的使用大全

    SQL*PLUS命令的使用大全 ? ? ? ?? ? Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。 ? ?我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql

  • 提高上百万行数据insert速度的方法

    有两个结构相同的表table1,table2 将table1插入到table2中:   现在采用两种方法: 1、指定回滚段,回滚段足够大 set transaction use rollback segment RBS1;       INSERT INTO table1 NOLOGGING          SELECT * FROM table2;      commit; 2、采用定义cur

Global site tag (gtag.js) - Google Analytics