数据是核心
来源:互联网 发布:靠谱的和田玉淘宝店 编辑:程序博客网 时间:2024/05/16 09:59
作者:保罗·W·霍默(Paul W . Homer)
软件开发人员最初一般将软件理解为是由命令、函数和算法构成的系统。在学习构建软件的方法时,从面向指令的视角(instruction-oriented view)来认识软件确有帮助,但也正是这一视角,在开发人员尝试创建较大规模的系统时,开始造成阻碍。
如果稍稍后退站远一点看,计算机只不过是能访问与操作一堆数据的时髦工具而己。对于了解管理庞大系统的复杂性,数据的结构处于核心地位。数以百万计的指令有其固有的复杂性,但是,我们可以把注意力集中于底层那些小得多的基本数据结构集上。
举例而言,如果想了解Unix操作系统,通过源代码逐行挖掘是不大可能奏效的。但是,如果你读过一本讲解Unix内部数据结构的书,由于数据结构与进程处理、文件系统等关系密切,因此,如果你读过了一本概括Unix内部数据结构的书,便可更好地了解UNIX在底层是如何运行的。从概念上来看,数据要比代码更加精炼,也更好理解。
代码在计算机中运行时,底层数据的状态在不断发生变化。在某种抽象意义上,可以认为任何算法都只是数据从一个版本到另一个版本的迁移(transformation)而己。我们可以把功能视为是“多个定义良好的迁移所构成的集合”(a larger set of well-defined transformations),在多个版本间连续推动数据的流动。
即使对于最复杂的系统,通过这种面向数据的视角(data-oriented perspective),即通过底层信息的结构整体来看待系统,也可以将之缩减为细节的有形集合(a tangible collection of details)。为了了解复杂系统是如何构建和运行的,必须降低其复杂性。
数据在大多数问题中处于核心地位,业务领域问题经由数据蔓延到代码中。举例而言,大多数关键算法往往易于理解,频繁变化的反而是结构及数据之间的关系。像升级这类运维问题,如果影响到数据,解决起来也会相当困难。要改变代码和行为不是大问题,将之发布即可,但是要将数据结构从老版本迁移到一个新版本,可能需要付出巨大努力。
诚然,软件架构中的许多基础问题确实和数据相关。系统是否在正确的时间收集了正确的数据?谁能够看到数据或修改数据?如果数据己经存在,其质量如何?增长速度如何?如果数据以前不存在,该如何设计数据的结构?何处是数据的可靠来源?从这种视角看,一旦数据己进入系统,剩下的唯一问题便是:是否己经存在查看和编辑特定数据的方法?还是有待增加这些方法?
从设计角度来看,大多数系统的关键问题,就是要在正确的时间从系统中获得正确的数据。从这种角度出发,对数据执行迁移(transformation)操作,便是获取数据、运行功能,然后保存运行结果。为了提供功能,大多数系统其实并不需要特别复杂的底层,它们只是需要积累起越来越多的数据。最先可以看到的确实是系统的功能,但是,只有数据真正构成了每个系统的核心。
- 60 数据是核心
- 数据是核心
- 探索数据可视化,业务数据是核心
- 互联网的核心是数据不是界面
- 游戏数据定义是引擎的核心部分
- 数据标准是物联网大集成应用的核心
- 大数据思维的核心是落实到价值上
- 为什么说大数据技术的核心是Map技术
- (转)投资AI的核心标准是场景和数据
- 大数据技术全解之数据能力是核心竞争力
- 代码是核心
- 成从武:大数据是地图领域的核心竞争力
- 马云思考阿里下一个15年:大数据是未来核心
- 新零售核心是大数据驱动的线上线下融合
- DataBind数据核心
- 大数据的核心
- 人格的核心是自信- -
- ApplicationContext 是Spring的核心
- django 1.8 官方文档翻译: 6-4-2 编写自定义的django-admin命令
- 二叉树的层次遍历
- iOS CFNetwork Concepts CFNetwork概念 官方文档翻译(三)
- C函数之memcpy()函数用法
- 由get请求引发的中文乱码整理
- 数据是核心
- wmsys.wm_concat(b.name) 在Oracle的应用
- 前端攻城狮第二步---超级经典的HTTP协议讲解
- redolog坏块处理
- Linux平台上apache服务器的搭建和应用
- 基于即时通信的地理信息提供方法和系统
- PCIE协议解析 synopsys IP Register配置空间 读书笔记(7)
- ATMEL AT91SAM9X25官方推荐内核编译方法
- 服务器:eclipse发布web项目到tomcat