数据系统_-数据的思维-产品-项目-技术

数据密集型

  数据密集型-IO密集型
  计算密集型-CPU密集型
数据系统的架构--Architecture
    存储和处理数据的工具和技术--技术迅速变化的背后总会存在一些持续成立的准则
        数据量--数据量特别大,特别多
     	数据复杂--数据理解
        数据更新和变化速度--速度快			
数据
    数据的正确性和完整性
数据系统
    数据存储-数据传输-数据搜索<查询查找>-数据处理
	    都会存储一段时间的数据--数据存储贯穿整个流程,只是在数据存储环节中更为关键
    可靠性-可扩展性-可维护性
	
	旧版本的代码,以及新旧数据格式可能会在系统中同时共处。
	   系统想要继续顺利运行,就需要保持双向兼容性
	    新代码读取老数据,老代码可以读取新数据(旧版的程序需要忽略新版数据格式中新增的部分)
	 
    老人老办法、新人新制度,中人逐步过渡-进入实质性启动阶段,平稳过渡,公平体系渐成	
    数据版本控制		
两种形式的数据:
    内存数据-数据位于内存中--进程中的指针对于其他进程没有意义,所以内存中使用的数据结构和
	    将某些数据发送到 不共享内存的另一个进程  --它编码为一个字节序列
		将某些数据发送到 共享内存的另一个进程
    字节序列-数据写入文件或者通过网络发送--从内存中表示到字节序列--编码-序列化	   
	字符等 
数据版本控制 
    json xml csv
    Thrift和Protocol Buffers都需要一个模式来编码任何数据 依赖于代码生成
	Apache Avro 是另一种二进制编码格式,
	Avro PB Thrift 使用模式来描述二进制编码格式
	   模式不可避免地需要随着时间而改变。我们称之为模式演变。基于模式的二进制编码
	   数据类型的变化

可靠性

	fault--fault-tolerant 容错和韧性--安全阈
	       阻止错误和容忍错误--消灭错误-预防错误
	硬件故障--软件错误--人为错误
	   常见措施: sandbox-沙箱  版本管理--快速回滚
	              监控--遥测(telemetry)
				  服务降级--服务分类分级

数据流动

什么是数据流:数据流:应用代码与状态变化的交互	
   将数据库的变更日志视为一种我们可以订阅的事件流
现状 :
   无状态客户端和请求/响应交互的假设	
 
离线优先(offline-first) 的应用  --本地数据库--可以看作服务器状态的缓存
从请求/响应交互 转向 发布/订阅数据流
    更具响应性的用户界面与更好的离线支持
	到更多的自我验证(self-validating) 或自我审计(self-auditing) 系统,不断检查自己的完整性,而不是依赖盲目的信任

数据流动

	   通过数据库的数据流
	   通过服务调动的数据流  REST使用URL来标识资源  
	   通过异步消息传递的数据流
   
	远程服务调用(Remote Procedure Call,RPC)   远程过程调用(RPC)
	   先解决两个进程间如何交换数据的问题,也就是进程间通信(Inter-Process Communication,IPC)
	     单机多进程 
	         消息队列和共享内存只适合于单机多进程间的通信,
	     不同机器之间的进程--host之间
	     	套接字接口是更为普适的进程间通信机制,可用于不同机器之间的进程通信 
        RPC 的定义:远程服务调用是指位于互不重合的内存地址空间中的两个程序
		  如何表示数据?
		  如何确定方法?
		  如何传输数据?
		二进制编码格式的自定义RPC协议  
    JSON over REST
	
	消息队列: 发送者通常不期望收到其消息的回复-单向数据流
	   actor模型 为actor模型
		 分布式的Actor框架实质上是将消息代理和角色编程模型集成到一个框架中
		 
		 
    Unix和关系数据库以非常不同的哲学来处理信息管理问题。 
	   Unix 认为它的目的是为程序员提供一种相当低层次的硬件的逻辑抽象,Unix发展出的管道和文件字节序列,
	   关系数据库 则希望为应用程序员提供一种高层次的抽象,以隐藏磁盘上数据结构的复杂性,并发性,崩溃恢复以及等等。 数据库则发展出了SQL和事务		 
	 
	 跨系统同步写入的问题,跨多个不同系统的只读查询问题	 
	 
	 只有当没有单一软件满足您的所有需求时,才会出现拆分和联合的优势。
	 使用应用代码组合专用存储与处理系统来分拆数据库的方法
	   Docker,Kubernetes等部署和集群管理工具专为运行应用代码而设计

生态系统

生态系统:是由生物群落及其生存环境共同组成的动态平衡系统
    组成成分:
	食物链--食物网
生态系统的自我调节能力的强弱关键在于生态系统的稳定性强弱,
   内在原因是生态系统的自我调节,负反馈调节是生态系统自我调节的基础,正反馈调节是一种促进性调节机制,它能打破生态系统的稳定性
	      而稳定性有两方面——抵抗力稳定性和恢复力稳定性
        受损生态系统的恢复和重建-生态系统发育具有阶段性,即具有相对稳定的暂态
   假设和约束

复杂性和变化性

 应用程序不可避免地随时间而变化--可演化性(evolvability)	

分而治之

epoch 一个epoch意味着模型已经见过了所有的训练数据一次

batch  每个batch中,Batch Size	 
   1.一个Batch中的数据分为若干个小批次(mini-batch),每个小批次都会经过一次前向传播和反向传播的过程,这个过程就是一次迭代(Iteration)

Iteration 神经网络在训练过程中每一次参数的更新

项目和产品

分拆系统vs集成系统	
    项目:最重要的是--利益相关方
	      最重要的把握--变更
		  检验标准--客户满意度
	产品: 最重要的是--核心价值
	       最重要的把握--迭代
		   检验标准-- 核心价值交付的成功率和用户体验
	解决方案:
         有什么产品不是最重要的,最重要额是客户要什么		
	在项目交付中充分积累开发经验和领域知识,最终再合适的时机和市场环境以及获得相应的额
	
	项目是把事情作对,产品是做对的事情。
	   项目的重点是交付--衡量方法-日程和时间表-平衡的思维
	   产品的重点是结果--了解客户,解决什么问题,真有这种问题吗?
产品--项目--技术
   每个系统都服务于一个目的;我们采取的每个举措都会同时产生期望的后果与意外的后果
   让我们做一个思想实验,尝试用监视(surveillance) 一词替换数据(data),再看看常见的短语是不是听起来还那么漂亮
   并不是所有的数据收集都称得上监视	用户几乎不知道他们提供给我们的是什么数据   

参考

 数据系统的未来https://vonng.gitbooks.io/ddia-cn/content/ch12.html  
posted @ 2024-12-24 17:58  辰令  阅读(23)  评论(0)    收藏  举报