一、数据中台、数据仓库与数据湖的定义与定位
架构类型
定义
定位
数据中台
集中管理企业数据资产的平台,实现数据的共享和高效利用
支持业务部门的数据需求,提供数据服务和分析能力
数据仓库
面向主题的、集成的、相对稳定的、反映历史变化的数据集合
支持管理决策
数据湖
存储原始数据的仓库,允许用户按需对数据进行查询、分析和处理
支持多种数据类型和格式,进行探索性分析和数据挖掘
二、数据中台、数据仓库与数据湖的优势与特点细化对比
架构类型
优势与特点
细化说明
数据中台
强调数据的统一管理和共享
通过集中管理,打破数据孤岛,实现数据的跨部门共享
提供灵活的数据服务和分析工具
根据业务需求,提供定制化的数据服务和分析工具,支持多样化的数据需求
注重数据的实时性和动态更新
能够实时处理和分析数据,支持业务的快速响应和决策
数据仓库
面向特定主题,数据结构化程度高
数据按照特定主题进行组织,结构化程度高,便于查询和分析
数据质量较高
经过清洗和整合,数据质量较高,能够提供准确的分析结果
主要用于历史数据的查询和分析
适合进行大规模的历史数 ...
cap原则-分布式系统设计的指导思想大数据系统几乎都是分布式的,CAP 定理是分布式系统的基本定理,是理解分布式系统的起点。
什么是cap?分布式系统有三个指标:
Consistency-一致性
Availability-可用性
Partition tolerance-分区容忍性
它们的第一个字母分别是 C、A、P。这三个指标不可能同时做到。这个结论就叫做 CAP 定理.
Partition tolerance-分区容忍性
the system continues to operate despite arbitrary message loss or failure of part of the system。
大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信。上图中,G1 和 G2 是两台跨区的服务器。G1 向 G2 发送一条消息,G2 可能无法收到。系统设计的时候,必须考虑到这种情况。一般来说,分区容错无法避免,因此可以认为 ...
前言布隆过滤器 (Bloom Filter)是由Burton Howard Bloom于1970年提出,它是一种space efficient的概率型数据结构,用于判断一个元素是否在集合中。在垃圾邮件过滤的黑白名单方法、爬虫(Crawler)的网址判重模块中等等经常被用到。哈希表也能用于判断元素是否在集合中,但是布隆过滤器只需要哈希表的1/8或1/4的空间复杂度就能完成同样的问题。布隆过滤器可以插入元素,但不可以删除已有元素。其中的元素越多,false positive rate(误报率)越大,但是false negative (漏报)是不可能的。
传统HashMap数据结构的不足
一般来说,将网页 URL 存入数据库进行查找,或者建立一个哈希表进行查找就 OK 了。
当数据量小的时候,这么思考是对的,确实可以将值映射到 HashMap 的 Key,然后可以在 O(1) 的时间复杂度内 返回结果,效率奇高。但是 HashMap 的实现也有缺点,例如存储容量占比高,考虑到负载因子的存在,通常空间是不能被用满的,举个例子如果一个 1000 万 HashMap,Key ...
背景如何分配请求?大多数网站背后肯定不是只有一台服务器提供服务,因为单机的并发量和数据量都是有限的,所以都会用多台服务器构成集群来对外提供服务。
但是问题来了,现在有那么多个节点(后面统称服务器为节点,因为少一个字),要如何分配客户端的请求呢?
其实这个问题就是「负载均衡问题」。解决负载均衡问题的算法很多,不同的负载均衡算法,对应的就是不同的分配策略,适应的业务场景也不同。
最简单的方式,引入一个中间的负载均衡层,让它将外界的请求「轮流」的转发给内部的集群。比如集群有 3 个节点,外界请求有 3 个,那么每个节点都会处理 1 个请求,达到了分配请求的目的。
考虑到每个节点的硬件配置有所区别,我们可以引入权重值,将硬件配置更好的节点的权重值设高,然后根据各个节点的权重值,按照一定比重分配在不同的节点上,让硬件配置更好的节点承担更多的请求,这种算法叫做加权轮询。
加权轮询算法使用场景是建立在每个节点存储的数据都是相同的前提。所以,每次读数据的请求,访问任意一个节点都能得到结果。
但是,加权轮询算法是无法应对「分布式系统」的,因为分布式系统中,每个节点存储的数据是不同的。
当我们想提高系 ...
前言什么是数据结构?什么是算法?
数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。
为什么要学习数据结构和算法?
为了提高代码的性能,利用数据结构和算法解决如何更省、更快地存储和处理数据的问题
如何衡量?
使用时间和空间复杂度来考量效率和资源的消耗
本篇主要介绍10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
学习数据结构和算法,应该学习它的由来、特性、适用的场景以及它能解决的问题。
参考:
《数据和结构之美》–王铮
在线阅读推荐: Hello算法
复杂度分析-大 O 复杂度表示法时间复杂度分析1. 只关注循环执行次数最多的一段代码
12345678int cal(int n) { int sum = 0; int i = 1; for (; i <= n; ++i) { sum = sum + i; } return sum;}
时间复杂度就是 O(n ...
运行环境jvm和跨平台1.jvm(java虚拟机):java运行程序的假想计算机,主要用来运行java程序的2.跨平台:java代码可以在不同的操作系统上运行(一次编写,到处运行) 跨:跨越 平台:操作系统 -> windows linux mac os 3.关系:java程序想要在不同的操作系统上运行,实现跨平台,就需要安装不同版本的jvm
JDK和JRE1.jdk:(Java Development Kit):java开发工具包,包含了jre javac 编译工具 java 运行工具 jdb 调试工具 jhat 内存分析工具 … 2.jre:(Java Runtime Environment):java运行环境,包含了jvm以及后面开发用到的核心类库 3.jdk和jre以及jvm的关系: jdk包含了jre,jre包含了jvm,所以我们只需要安装jdk即可
但是从jdk9开始jdk目录中就没有单独的jre目录了,因为jre作为一个运行时,里面不需要包含太多的东西浪费空间,降低运行效率,在jdk9的时候引用模块化的技术,让开发者能按照 ...
一、什么是数据湖关于数据湖的定义其实很多,但是基本上都围绕着以下几个特性展开。
1、 数据湖需要提供足够用的数据存储能力,这个存储保存了一个企业/组织中的所有数据。
2、 数据湖可以存储海量的任意类型的数据,包括结构化、半结构化和非结构化数据。
3、 数据湖中的数据是原始数据,是业务数据的完整副本。数据湖中的数据保持了他们在业务系统中原来的样子。
4、 数据湖需要具备完善的数据管理能力(完善的元数据),可以管理各类数据相关的要素,包括数据源、数据格式、连接信息、数据schema、权限管理等。
5、 数据湖需要具备多样化的分析能力,包括但不限于批处理、流式计算、交互式分析以及机器学习;同时,还需要提供一定的任务调度和管理能力。
6、 数据湖需要具备完善的数据生命周期管理能力。不光需要存储原始数据,还需要能够保存各类分析处理的中间结果,并完整的记录数据的分析处理过程,能帮助用户完整详细追溯任意一条数据的产生过程。
7、 数据湖需要具备完善的数据获取和数据发布能力。数据湖需要能支撑各种各样的数据源,并能从相关的数据源中获取全量/增量数据;然后规范存储。数据湖能将数据分析处 ...
奇门遁甲
未读简介定义:是一种运行在客户端(浏览器)的编程语言。组成:ECMAScript(基础语法)、webapi(DOM、BOM)配套视频: https://www.bilibili.com/video/BV1Y84y1L7Nn
入门体验DOM切换按钮
1234567891011121314151617181920212223242526272829303132333435<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>01-体验js ...
奇门遁甲
未读前言通过 git –version 命令,确认是否安装Git,显示当前安装的版本,则说明已安装。为同一个设备,配置多个 git 账号,主要流程如下:
清空全局 user.name 和 user.email
为当前项目配置git用户名和邮箱
为不同的 git 账户生成不同的 ssh-key
将以上的 ssh-key 分别添加到 ssh-agent 信任列表
添加以上的公钥到自己的 git 账户中
在 config 文件配置多个 ssh-key
测试ceshiceeccee
1. 清空默认的全局 user.name 和 user.email12git config --global --unset user.namegit config --global --unset user.email
查看git配置: git config --global --list
2、配置多个git的用户名和邮箱a、单个配置
12git config --global user.name "yourusername"git config --global u ...
行存和列存-大数据存取的选择
目前大数据存储有两种方案可供选择:行存储(Row-Based)和列存储(Column-Based)。
定义我们常用的关系型数据库mysql,oracle等都是基于行存储,以最常用的mysql数据库innodb引擎为例。多个连续的行记录,组成一个data page(大小16k),然后按照B+树的结构进行组织存储。
列式存储(column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表:
Row-based storage storesatable in a sequence of rows.
Column-based storage storesatable in a sequence of columns.
行存 Vs 列存写入
行存储的写入是一次完成。如果这种写入建立在操作系统的文件系统上,可以保证写入过程的成功或者失败,数据的完整性因此可以确定。
列存储由于需要把一行记录拆分成单列保存,写入次数明显比行存储多,再加上磁头需要在盘片上移动和定位花费的时间,实际时间消耗会 ...