架构设计

刚开始接触软件工程的时候,知道其中一个步骤叫做“总体设计”,做这项工作的人就叫“软件设计师”。当时觉得这个名称比软件开发工程师酷多了。到了现在,又开始流行“架构师”(Architect)
刚开始接触软件工程的时候,知道其中一个步骤叫做“总体设计”,做这项工作的人就叫“软件设计师”。当时觉得这个名称比软件开发工程师酷多了。到了现在,又开始流行“架构师”(Architect)

,这个名称
听起来比软件设计师又酷了几分。

如今,如果你偶尔遇到一个年轻人,也就是二十出头、三十不到的样子,却客客气气地给你递上一张注明“数据仓库资深架构师”的名片。这个时候,你千万不要诧异。说来也不奇怪, BI在国内刚

发展起来没几年,在这个领域干个四五年就足以混个资深的名头了。
不过,话说回来,拿着“资深架构师”的名头去忽悠是一回事,但架构师究竟该干什么,架构设计究竟怎么进行,如何架构一个BI系统?的确是需要认真研究一番的!

第一截:模块

BI系统(或者说数据仓库系统)也同样需要架构,它作为一种软件系统,是符合一般架构原则的。首先,我们来看看架构设计中包括那些内容。 架构的重点是描述系统的结构,以及它们之间的

关联、交互接口。

BI系统可以划分成业务模型、元数据、数据质量、接口平台、报表集市、指标库等若干模块。可以看出,在这里,这些模块的命名都是静态的名词,而不是动词(例如业务建模、数据质量管理等)

。之所以如此,是因为这是在描述系统的结构而非功能。

具体来讲,业务模型是存放业务数据的结构,可以再往下细分,并有不同的分层方法。例如可以分成ODS、EDW、DM等层,也有的会根据业务复杂度或数据量考虑,舍弃ODS层。业务模型是支撑

业务分析需求的,例如报表、仪表盘、OLAP、专题应用等。

元数据为整个系统数据的形态和数据流动的过程起到支撑作用,也就是说,数据从源头开始,到最终用户眼前,其来龙去脉,每个环节的状态都需要掌握。还有人将它比喻成模块之间的粘合

剂,但我更愿意将它称作是“数据”之间的粘合剂,因为模块之间自有它们的交互接口规格来粘合。数据质量模块为衡量数据源质量、ETL 过程处理质量提供支撑。

接口平台是处于源系统和数据仓库系统之间的玩意儿,作用在于可以更方便地明确界定双方职责。当然,通常有很多系统似乎并不大愿意将职责搞得过于明确了倒宁愿糊涂一些。糊涂一些的

好处在于一开始省了好多事,但在以后扯皮的事情就少不了了。此外,报表集市为报表应用提供支持,指标库为绩效管理需求提供支持。其实,这两者还可以归入业务模型一类,因为它们都是

服务于分析需求的。

第二截:需求

之所以分成若干模块,是为了让架构清晰,降低这些模块之间的耦合,这符合“分离变化”的原则。那么,这一结构到底是否合理呢?还得看这个架构面临的需求到底是什么。做好这一步,就需

要把系统的用户分为两大类角色:一是系统运营角色,他们对系统的正常运行、维护负责;二是业务分析角色,他们需要从这个系统得到数据分析的功能。

显然,第二种角色的分析数据来源都将来自业务模型模块,而第一种角色将从剩余模块中满足自己的需要,而不直接和业务模型这个模块打交道。在架构设计中,重点应该放在如何满足系统

管理用户的需求上面。当然,只是"重点",而非舍弃业务分析角色,毕竟在业务模型模块中,还需要根据业务、数据量、分析应用等方面的特点,来进一步细化。

就笔者个人经验认为,架构设计应该是与具体业务关系不大的,这种架构应该是半通用的。之所以是半通用,是因为在系统功能上面,BI项目大同小异,而在业务需求上面,架构只需要对客户

的业务、分析需求分成几个大类,例如按行业为业务模型分类,按OLAP、报表来为分析应用分类,不需要太过细致。

下面,让我们来看看系统运营角色的需求。

首先,我们可以把这类角色再细分成两类:一是开发设计及实施者。之所以将开发者作为系统的用户,是因为数据仓库项目应该看作一个过程,而不是产品,因此在开发阶段,其实其架构最

重要的用户就是开发者,当然要为之提供便利。二是系统管理员。系统交付之后,如何监控系统运行、发现数据质量问题、应付新的分析需求等,当然都是系统管理员的分内之事。

那么,对于开发实施人员,他需要进行系统部署、ETL的开发调试、质量的稽核;对于设计人员,则需要进行模型的变更、系统调优、系统一致性分析等;而系统管理员则需要监控ETL过程、监

控系统运行、响应系统警报、接口数据管理等。这些都可以看作是用例。

这些用例就是架构设计的"需求",如何满足他们,并且保持良好的体系和清晰的结构,能够易于维护且能够满足日后肯定会增加的业务需求等等,这些都是架构师们仔细斟酌的事情。

最后,看一下分析人员的需求。举个例子来讲,某销售总监说:“我需要了解近半年来东区和西区的销售量、收入、成本对比”,这可以算是一个用例。对这个需求,架构师该如何做呢?正确做法

是,在架构中不能考虑东区、西区这些业务概念,那样就太过于细致,而是应当将这种需求抽象成一种分析应用,例如 “即席查询”。如此,架构师所着重考虑的事情就是如何满足这一类需求,

而非这一个需求。

链接:

架构设计四项原则:

1、架构设计主要面向系统用户为主;
2、架构设计的内容主要包括:系统功能需求、分析需求分类;支持这两者的后台结构,对结构进行粗略划分,以让其内部能够保持简单的交互方式;
3、架构设计中不要包含过于细致的业务术语(除非为了说明方便),要尽可能保持架构的复用;
4、如果架构设计确实包含不能被其他项目复用的地方,将这部分独立出去。(网界网-CCW)
【基础架构】——架构设计目的是什么 摘要: 架构设计不是为了盲目追求高性能或套用流行方案,而是为了解决系统复杂度带来的问题。常见误区包括为设计而设计、生搬硬套大厂架构或过度追求“高可用”等指标。正确的做法是先识别核心复杂度(如学生管理系统的数据可靠性),再针对性设计(如MySQL主备方案)。架构应基于实际需求,而非形式化流程或技术趋势,避免资源浪费和过度设计。通过案例可见,合理分析复杂度(性能、扩展性、成本等)能简化架构,聚焦真正痛点。 阅读详情

相关推荐

架构设计三部曲之如何写架构设计说明书

架构设计是需求分析到软件实现的桥梁,也是决定软件质量的关键。编制架构设计说明书是开发人员向架构师转变一定会经历的过程。在架构师整个的成长过程当中,一定会经历编制架构设计说明书、评审架构设计说明书以及根据业务需求分析设计系统架构的三个过程。 架构设计是需求分析到软件实现的桥梁,也是决定软件质量的关键。编制架构设计说明书是开发人员向架构师转变一定会经历的过程。在架构师整个的成长过程当中,一定会经历编制架构设计说明书、评审架构设计说明书以及根据业务需求分析设计系统架构的三个过程...

hsabrina的博客 1291

一次性讲清楚常见的软件架构图

业务架构服务于业务目标,通过描绘业务上下层关系,梳理一整套完整、简单的业务视图,降低业务系统的复杂度,提高客户理解度,最终给客户最直观的业务体现。画业务架构图需要对业务熟悉掌握,并对业务进行收集、拆解、提炼、归纳、分类,从而绘制出业务的上下层级关系和主要结构模块。为后续围绕业务内容展开的工作提供可视化支持。比如做一个团购网站,你只需要把商品类目、货品库存、订单服务、支付退款等进行清晰划分,而不需要考虑以下问题:我用什么技术开发、我的并发大怎么办、我选择什么样的硬件等。

uzong 2万+

互联网架构演进之路

目录 1 单体架构 2 分布式架构 2.1 应用集群 2.2 分布式缓存 2.3 业务拆分 2.4 分库分表和读写分离 2.5 静态化和CDN 2.6 异步解耦 3 微服务架构 3.1 为什么需要服务化 3.2 服务化的好处 3.3 服务化的问题

赵广陆 3021

架构设计5步曲

狭义上的架构设计过程就是“分+合”的过程,一个系统=架构元素+架构+整合机制。那么怎么切,依据什么切?切了以后怎么往一起整合?我们这里做个简单的介绍。 架构设计大的步骤:理清楚要建设的系统的环境上下文要求和需求、梳理出关键核心问题、根据核心问题定义边界、根据边界切分架构元素(子系统、模块、服务、类)、定义架构元素之间的交互机制。一共5个步骤,按照这5个步骤进行...

坐忘峰 1632

架构设计(1)-谈谈架构

1、什么是架构和架构本质 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。 Linux有架构,MySQL有架构,JVM也有架构,使用Java开.........

黄规速博客:学如逆水行舟,不进则退 8万+

架构设计(2)-架构设计原则

如何设计出一个好的架构,不像数据公式或者定律,很难一概而就。很多时候是设计者(架构师)的各种设想,各种权衡折中而符合系统需求的智慧输出。但我们掌握前人总结的经验,让我们站在巨人的肩膀上高山远瞩。一些好的架构设计原则可以确保设计决策在一定程度上能够满足需求。 一、形成架构原则的过程 形成架构原则的过程: 架构原则要SMART ......

黄规速博客:学如逆水行舟,不进则退 2万+

常见的系统架构设计介绍

系统架构设计介绍分布式架构初始阶段架构特征应用服务和数据服务以及文件服务分离 分布式架构 初始阶段架构 特征 应用程序,数据库,文件等所有资源都放在同一台服务器上 应用服务和数据服务以及文件服务分离 ...

攻城狮Chova的博客 3502

LightTools中VBA宏的编写入门

LightTools和VBA联动

bestgamer的博客 2348

为什么要做架构设计?架构设计包含哪些内容?

优秀的架构设计需平衡系统复杂性、可扩展性、稳定性与业务需求之间的矛盾,最终实现系统的高效运行与可持续演进。避免陷入“为设计而设计”的陷阱,同时警惕“无架构”的野蛮生长。建议通过架构评审会、技术债管理看板等机制持续优化设计,确保架构始终服务于业务目标。

IT孟德的编程世界 3232

【实战指南】EC-Engineer中ESI配置与PDO Mapping全流程解析

本文详细解析了EC-Engineer中ESI配置与PDO Mapping的全流程操作,包括环境准备、ESI文件导入技巧、在线配置细节及故障处理。特别强调了WinPcap驱动的兼容性问题和PDO Mapping的最佳实践,帮助工程师高效完成EtherCAT总线配置,适用于工业自动化领域的伺服控制与运动协同场景。

weixin_28730927的博客 395

解决西门子Step 7 basic 找不到许可证问题

你在使用博图软件是否遇到过Step 7 basic 找不到许可证的问题呢!不言怕,今天我就来告诉你该如何处理吧!看步骤: 1.删除原授权的License: 打开Automation License Manager应用,然后我们可以发现仅有的License Key前面有一个时钟,说明它已经过期不可用,我们就要去寻求新的Key. 打开“我的电脑”,选择C盘,点击上方查看 点击选项–>查看 然...

让技术没有门槛 14万+

架构设计实践:熟悉架构设计方法论,并动手绘制架构设计图

需求是贯穿整个研发、架构设计生命周期的。以下是架构的V型图,从左往右是从业务需求到架构设计,最底下是产品开发到逐层的功能验证。当一个需求完成以后,我们会有新的需求进行迭代,然后不断地循环这个过程。1、明确公司业务战略,明确业务需求和非业务需求。2、了解行业标准、限制和质量要求。3、搞明白公司目前IT状态和架构状况。(已有的架构图、设计文档、资产)3、产出系统上下文。4、产出用例模型。5、找出公司/业内的所有资产(将狗资产、方法论的资产),输入到整个架构设计的环节中。

秃了也弱了 3049

[华中科技计组实验]logisim完成单周期5级流水MIPS CPU

[华中科技计组实验]logisim完成单周期5级流水MIPS32 CPU hu~,终于完成了,真是费劲呐 支持24条指令,5级流水线,可以对分支指令处理,寄存器冲突处理,指令ROM为1K,数据RAM为1M,32位MIPS指令集CPU 但是… 大量使用比较器造成硬件开销巨大,测试一下发现这尼玛真是个老爷车还没单周期跑的快,自己电脑cpu占百分之八九十只能跑到20多赫兹,一个走马灯跑了半天,可优化空间太大了,写了那么多天造成这个破样,有点悲剧。。。 先放个图大伙参考就行了,要是有人想听思路的话接下来再更 .

zrc的博客 1万+

架构设计基础

迭代的过程就是一个否定之否定的过程,随着分解的逐步推进或系统的架构演化,后面的分解除了会识别出新的架构元素,也可能会对先前识别出的架构作出调整。有了 TP99 这样的概念,就可以定义系统的 SLA 了,SLA 是 Service-Level Agreement, 它是系统对于它的客户所承诺的可以提供的服务质量,既包括功能,也包括性能。应该认真分析当前业务的特点,明确业务面临的主要问题,针对核心需求,设计合理的架构,快速落地以满足业务需要,然后在运行过程中不断完善架构,不断随着业务演化架构。

jakeswang的博客 2054

智能手表 BOM 表与版本管理记录

试产与量产阶段 智能手表 BOM 表与版本管理记录

hoony123的博客 1053

【图像去噪】基于加权核范数最小化算法实现图像去噪附matlab代码

1 简介 WNNM是一种约束矩阵奇异值稀疏性的低秩算法,在NNM理论基础上增加了核范数权重,有效利用了自然图像的先验信息并提高了核范数的灵活性. 2 部分代码 ​clcclear allclose allnSig = 100;O_Img = double(imread('Monarch.png'));​randn('seed', 0);N_Img = O_Img + nSig* randn(size(O_Img)); ..

qq_59747472的博客 3114

架构设计的目的

架构设计的误区 关于架构设计的目的,常见的误区有: •因为架构很重要,所以要做架构设计 这是一句正确的废话,架构是很重要,但架构为何重要呢? 例如:不做架构设计系统就跑不起来么? 其实不然,很多朋友尤其是经历了创业公司的朋友可能会发现,公司的初始产品可能没有架构设计,大伙撸起袖子简单讨论一下就开始编码了,根本没有正规的架构设计过程,而且也许产品开发速度还更快,上线后运行也还不错。 例如:做了架构设...

qq_37657601的博客 2838

RK3588平台MIPI DSI屏幕调试记录

本文是基于RK3588平台,MIPI屏调试总结。调试过程中遇到的问题:一开始很久没亮,测量了电源电压和波形都正常。后来换了一组板子和屏幕做对比。最后是因为屏幕的座子没焊接好,二是接MIPI屏幕的排线太长会影响数据传输。换了一根短的线之后屏幕亮起。vp2vp3。

bingdund的博客 1389

C++架构设计

设计模式是在软件开发中经常出现的问题的通用解决方案。使用设计模式可以帮助开发者编写可复用、可维护的代码。创建型模式(Creational Patterns)创建型模式关注于对象创建过程的优化和抽象。a. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。这在需要控制资源访问或维护全局状态时非常有用。b. 工厂模式(Factory Pattern):通过一个工厂类来创建对象,而无需指定具体的类。这有助于实现代码解耦,降低依赖性。

红军不怕远征难,万水千山只等闲 2744

Qt C++ 电子海图与作战叠加(Overlay)系统

lab_pos->setText(QString("坐标: X%1 Y%2").arg(p.x(),0,'f',0).arg(p.y(),0,'f',0));lab_distance->setText(QString("距离: %1 海里").arg(dist,0,'f',1));lab_bearing->setText(QString("方位: %1°").arg(bear,0,'f',1));// 绘制S-57海图基底。scene->addText("封锁线").setPos(450,180);

寒寒豆豆软件公司的博客 496

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

架构设计三部曲之如何做架构设计

人、外部系统、数据是我们在发掘关系时可以参考的方向,根据系统各自的特点,在架构设计过程中还会有一些需要实际去考虑的关系,这些关系一般都是所谓的系统最大的特点或特殊情况,常见于重大需求,特色需求,亮点需求等形式,一般也不难找出。待把所有这些关系找出后,可以先做一个粗略的重要性分级,分级的依据是关系的相关性,一般是重要需求相关>特色亮点需求>甲方相关>用户相关>乙方相关>外部系统相关>外部数据相关>内部数据相关>其他次重要的数据,在进行架构设计时优先满足重要性高的关系,得出一个基本的架构雏形,再根据弱一级的关.

hsabrina的博客 2121

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

架构设计技巧——架构设计模板

需求介绍主要描述需求的背景、目标、范围等性能问题:当用户发布了一条微博后,微博发布子系统需要同步调用“统计子系统”“审核子系统”“奖励子系统”等共 8 个子系统,性能很低。耦合问题:当新增一个子系统时,例如如果要增加“广告子系统”,那么广告子系统需要开发新的接口给微博发布子系统调用。效率问题:每个子系统提供的接口参数和实现都有一些细微的差别,导致每次都需要重新设计接口和联调接口,开发团队和测试团队花费了许多重复工作量。基于以上背景,我们需要引入消息队列进行系统解耦,将目前的同步调用改为异步通知。

jakeswang的博客 2058

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

架构设计的本质

简介:实际上架构只是系统设计里面的一个重要环节,除了架构还包含了商业诉求,业务建模,系统分析,系统设计等重要领域。本文尝试从更高视角重新审视架构设计的工作,把架构设计的上升到系统设计的立体空间去探索,最终勾勒出系统设计的全域知识体系。作者 | 编程原理林振华【问题】 什么是系统设计,系统设计的核心是什么? 如何训练系统设计的思维模式? 有什么方法来帮助我们理解复杂的系统? 如何进行系统分析? 架构设计的本质是什么? 如何进行架构设计? 如何进行业务领域建模? 模型如何推导出架构设计? 架

阿里云开发者 4329

聊聊架构设计

深夜,聊聊架构设计 原创刚哥玉刚说7月5日 之前写过架构设计的文章,最近一直在看《从0开始学架构》这个技术专栏,有一些自己的思考,分享给大家,如果在面试中被问及这个问题,大家就可以按照这个思路来回答。 很多读者都是移动端开发,而市面上的书或者专栏基本都是后端,难道架构是天然为后端而生的吗?其实不是,但确实后端架构比客户端以及前端要复杂。 经过我的思考,我试图抽象一些移动端架构的特性出来。 高并发、负载均衡和容灾是后端架构设计的几个核心点,但这几个点在移动端上不存在,原因是所有的请求都会发送到...

高磊的专栏 544

软件工程:架构设计

早些年,软件很简单的时候,不需要需求分析和架构设计,直接采用边写边改模型,也能做出来了。后来软件复杂了,就对程序员要求特别高了,所以早些年的软件开发,但是个人英雄注意盛行。比如张小龙一个人完成了 Foxmail,求伯君完成 WPS… 不过,那时候对普通程序员来说,去写这样复杂的系统,也是可望不可及的。再后来软件产品越发复杂之后,靠高手的开发模式也就不可行了。 软件需求越来越多,而高手又是稀缺资源,所以要解决的一个问题就是:让普通程序员也能参与其中,一起实现复杂系统,而不必依赖于很多精英。 ...

OceanStar的博客 7921
上一篇: 架构设计
下一篇: 怎样的架构设计才是真正的数据仓库架构(转载)
lexloo_x
博客等级 码龄21年 28粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值