来自谷歌的开发心得:所有SQL和代码,都没必要藏着掖着

标签: 谷歌 开发 sql | 发表时间:2022-02-19 02:34 | 作者:Galen B
出处:https://www.infoq.cn

至少从工程技术的角度看,你的项目绝没有想象中那么“见不得光”。

谷歌在代码管理上很有特色,他们基于“主干”进行开发,并且将 90% 以上的代码放在名叫 Piper 的单一代码仓库中,由来自世界各国数十个办事处的数万名软件开发人员共享。对于那些开源的、需要外部协作的项目,代码才放在版本管理软件 Git 里,主要是 Android 项目和 Chrome 项目。

整个仓库采用树状结构,每个团队有自己的目录,目录路径就是代码的命名空间。每个目录都有负责人(owner),负责批准该目录的文件变动。

这种方法已经在谷歌运行了 20 年以上。2015 年,谷歌的这个代码库就包含了大约十亿个文件,并且具有约 3500 万次提交的历史。代码一般提交到主干的头部,保证所有用户看到的都是同一份代码的最新版本,支持文件级别的权限控制,99% 的代码对所有用户可见。只有少部分重要的配置文件和机密的关键业务,设有访问限制。所有的读写都有日志,管理员能够查到谁读过这个文件。

与给代码制定各种访问权限的管理方式相比,谷歌的方法带来的好处是很明显的:任何人都可以浏览和使用全公司的代码,大大促进了代码的共享和复用;具有统一的版本和路径,不存在找不到文件的最新版本这样的问题;每次代码变动,很容易撤销或者用预提交测试它所造成的影响…

就连 SQL 的管理,谷歌也在一定程度上遵循了这些原则。本文作者是一名数据工程师,给谷歌当了两年的供应商,在期间发现谷歌的数据工程师对待 SQL 的态度,跟软件工程师们对待代码的态度非常相似。他认为这种态度非常重要,无论大小企业都值得在数据战略中采取这样的心态。我们将作者的文章翻译了出来,通过他的文章,我们将一同了解谷歌这种把 SQL 当成代码的态度有哪些助益,又能给体量较小的组织机构带来哪些启示。

相关 [谷歌 开发 sql] 推荐:

来自谷歌的开发心得:所有SQL和代码,都没必要藏着掖着

- - InfoQ - 促进软件开发领域知识与创新的传播
至少从工程技术的角度看,你的项目绝没有想象中那么“见不得光”. 谷歌在代码管理上很有特色,他们基于“主干”进行开发,并且将 90% 以上的代码放在名叫 Piper 的单一代码仓库中,由来自世界各国数十个办事处的数万名软件开发人员共享. 对于那些开源的、需要外部协作的项目,代码才放在版本管理软件 Git 里,主要是 Android 项目和 Chrome 项目.

开发者应该学习SQL的九个理由

- 飞羽飞之猪 - Solidot
Eric Tou 写道 "Jeremiah Peschka写了他认为开发者应该学习SQL的九个理由(中文):1.SQL是可移植的;2.SQL从不改变;3.SQL易于性能增益;4.SQL使你成为更好的开发者;5.增进团队间的交流;6.工作保障;7.SQL真的不那么难;8.理解什么时候不适合数据库;9.让故障排除更简单".

开发者应了解的一些SQL优化准则(转)

- - SQL - 编程语言 - ITeye博客
虽然本文不能覆盖所有的准则,但还是希望能给开发者带来些许帮助. 下面就来看看在编码实践中哪些应该做,哪些不应该做.  在长时间运行的查询和短查询中使用事务.   如果预期有一个长时间运行的查询,并且有大量的数据输出时,开发者就应该在BEGIN TRAN 和END TRAN之间使用事务.   这样事务会在缓冲区缓存为独立事务,并会被分配特定内存,以此来提高处理速度.

报表SQL存储过程开发中十条军规

- - SQL - 编程语言 - ITeye博客
报表SQL存储过程的特点:. 通过一组变量作为输入参数,根据行控制变量的不同,循环查询,将每个查询的结果值保存到变量里面,够一组了,插入临时表(结果表),如此反复,直到循环结束. 最终查询临时表,返回一个结果集的游标. 报表SQL存储过程十条军规:. 1、存储过程中要尽可能少的定义变量,能复用就复用.

Java开发者写SQL时常犯的10个错误

- - ImportNew
我十分惊讶的发现,我最近的一篇文章——《 Java开发者写SQL时常犯的10个错误》——最近在 我的博客和 我的合作伙伴DZone上非常的受欢迎. (这篇博客)的流行程度说明了几件事:. SQL在专业的Java开发中多么重要. 基本的SQL知识被忘掉(的情况)普遍存在. 通过 embracing SQL,你就能了解像.

PL/SQL动态SQL(原创)

- - ITeye博客
使用动态SQL是在编写PL/SQL过程时经常使用的方法之一. 很多情况下,比如根据业务的需要,如果输入不同查询条件,则生成不同的执行SQL查询语句,对于这种情况需要使用动态SQL来完成. 再比如,对于分页的情况,对于不同的表,必定存在不同的字段,因此使用静态SQL则只能针对某几个特定的表来形成分页.

Derby SQL 分页

- - ITeye博客
    之前在网上看到有人问 Derby SQL 分页实现的问题,网上有人给出这样的解决方案,SQL 如下:. 其实,这样的分页查询,性能不理想,我试过在 300W 数据量中采用这种分页方式,需要 20~30秒之久;其实 Derby 10.6 以上版本有更好的分页支持,直接给出 SQL 实现如下:.

SQL Server--索引

- - CSDN博客推荐文章
         1,概念:  数据库索引是对数据表中一个或多个列的值进行排序的结构,就像一本书的目录一样,索引提供了在行中快速查询特定行的能力..             2.1优点:  1,大大加快搜索数据的速度,这是引入索引的主要原因..                             2,创建唯一性索引,保证数据库表中每一行数据的唯一性..

MySql动态SQL

- - SQL - 编程语言 - ITeye博客
13.7. 用于预处理语句的SQL语法. MySQL 5.1对服务器一方的预制语句提供支持. 如果您使用合适的客户端编程界面,则这种支持可以发挥在MySQL 4.1中实施的高效客户端/服务器二进制协议的优势. 候选界面包括MySQL C API客户端库(用于C程序)、MySQL Connector/J(用于Java程序)和MySQL Connector/NET.

sql优化

- - 数据库 - ITeye博客
是对数据库(数据)进行操作的惟一途径;. 消耗了70%~90%的数据库资源;独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低;. 可以有不同的写法;易学,难精通. 固定的SQL书写习惯,相同的查询尽量保持相同,存储过程的效率较高. 应该编写与其格式一致的语句,包括字母的大小写、标点符号、换行的位置等都要一致.