数据存储那点事:数据湖和数据仓库

数据湖是个筐,什么都能往里装……物联网设备传感数据、网站、APP、社交媒体和业务系统的非结构化数据和结构化数据统统往里装。

数据仓库就不同了,既然是仓库,就需要事先规划,按品类分区,原料、半成品以及成品分开存储,以提高出入库、调拨的效率。

事实上确实如此,数据仓库(DW, Data Warehousing),通常分为:

  • 操作数据层(ODS, Operational Data Store)
  • 明细数据层( DWD, Data Warehouse Detail)
  • 汇总数据层(DWS , Data Warehouse Summary)
  • 应用数据层(ADS, Application Data Store)

另外还有一个公共维表层(DIM) 。

先不要被这些概念吓住,以后讲数据仓库建模的时候会详细说,先初步有个印象。

类比来看,这就是一个数据原材料——原材料半加工——半成品全加工——按需食用的过程。

  • 结构化的数据先原样存入 ODS 层。要用到数据采集、同步的技术,上篇文章有写到。这一步相当于把原材料拉进仓库里。操作数据层和数据湖有点像,但不包含半结构化、非结构化数据。
  • 明细层和汇总层,存的都是事实表,事实表又是个啥?就是反应了一项事实,比如谁什么时间花了多少钱购买了哪个商家的某个产品。这正好是一张数据表的各项字段。明细层存的是详细的事实数据,而汇总层,是按业务需求,做了一定的汇总后存放的数据,比如最近 7 天北京地区活跃的男性和女性用户数量,这是一行汇总数据,是根据明细数据汇总而成的数据。
  • 明细层的数据,是从 ODS 加工而来的,如何加工?最简单常见的就是 JOIN、UNION,写一些复杂的 SQL。这一步是半加工。
  • 我们建数据仓库,最终还是为数据分析(OLAP)、可视化等业务应用提供支撑。为了更好地调用、分析数据,数据是按主题分类的,就是后文要说的「面向主题」。
  • 公共维表层,存放用于分析时的那些维度,维度是衡量和观察业务的角度。比如省市区、年月日、用户等级等。

说清楚了数据仓库,再来回顾下数据湖和数据仓库最大的不同。

数据湖是一个庞大的混合存储库,一般是集中式的,可以存储所有结构化和非结构化数据。

而数据仓库,是一个「面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。」这是数据仓库之父Bill Inmon在 1991 年出版的《Building the Data Warehouse》一书对数据仓库所做的定义。

  • 面向主题,简单来说,就是按目的(比如分析的指标大类)把数据分类,比如电商的数据运营,会对商品、会员、销售、物流等各项指标分析,可以按以上分类把数据分表存放。
  • 集成的,意思是多个供应商(业务系统)的货(数据),我们都有序地存放在一个中央仓库(数据仓库)里,康师傅和统一的方便面,我们都放在方便面的货架里。
  • 相对稳定,这是区别于 OLTP 数据的特点,比如一条订单数据,状态会不断变化,有下单(待付款)、付款(待发货)、发货(待确认收货)……等一系列更新(UPDATE)过程,这就是不稳定,而存入数仓的数据,一般不会再更新。
  • 反应历史变化,是指要把反映过程的数据尽可能地存储下来,以便支撑更为精细的分析。这样一来存入的数据会很多,以上面的订单数据为例,在 OLTP 中只有一条记录,可能只有状态字段和时间字段更新,其它商品、用户字段不发生变化,而在数仓中,会把每次更新都存下来,这样会有多条数据。而「拉链表」就是优化这种存储场景的一种方法(以后详述),可以有效降低存储成本。

数据仓库这种「数据集合」,需要根据业务的需要,事先规划定义数据结构,因此它可以用传统的关系型数据库来搭建,因为要存储很多历史数据,所以要对单表的存储容量和性能有所要求,传统数据仓库很多都是用 Oracle 搭建的。

那么说数据仓库和大数据又有什么关系吗?数据仓库是种方法论,大数据能提供技术手段。比如 Hive,就是大数据里用来搭建数据仓库的好组件。

数据湖是不是就是一个简单的混合存储库?也不是。数据湖并不是存储方案,它的目的也是用于分析和指导决策。

  • 数据湖本身要支持运行不同类型的分析(如 SQL 查询、大数据分析、全文搜索、实时分析和机器学习),不需要将数据移至另外的分析系统。
  • 数据湖要能够对数据进行爬网、编目和建立索引来让用户了解和使用湖中的数据。这项功能的难度很高,因为数据湖中的数据更为复杂。

数据仓库可以充当用户可信任的「单一信息源。」数据湖则是以更丰富的数据格式和类型,以及更全面的分析工具,提供更广泛价值挖掘的可能性。

对于当前大部分公司的数据应用水平来说,应先建立规范的数据仓库,这是对理念和方法的考验,而不是技术和手段(用关系型数据库就能建立)。数据湖,在更先进的技术屏蔽了复杂的存储、编目和底层分析工具后,将会是趋势,可逐步关注。

关耳爷

微信号wei-talk

理解大数据本应很简单:什么是数据集成和数据治理

本文是《极简大数据》系列第二篇。

不管出于什么目的,假设你要利用一批数据。那么你期望数据是什么样的?

答案很简单:全、快、对。

当然也可以换三个词:全域数据、实时数据、高质量数据。

我个人还是喜欢上面接地气的词。

如果你关注大数据,或者是做数据产品经理,应该了解数据集成和数据治理。

它们都是手段,最终为数据的使用而服务。

经过集成和治理后的数据,我们期望是能高效使用的、高质量的、高价值的数据。

实现高价值,前提条件是数据要全和快,这是对数据集成能力的要求。

数据的主要来源有三种,一是业务发生后系统产生的数据,存放在关系型数据库或 NoSQL 数据库中,比如在淘宝剁手下单,就会产生一条订单记录,谁什么时间在哪个店铺购买了一件什么商品,付款多少钱等。

第二类是系统服务环境产生的日志文件,如 Nginx、Apache 等对于 HTTP 请求和响应生成的记录文件,在浏览器里输入淘宝网址回车,淘宝的服务器就记下哪个 IP 在什么时间访问了淘宝,打开了哪几个页面,停留了多长时间,客户端有什么特性(如分辨率大小、浏览器版本、操作系统版本等)。

第三类是从客户端(浏览器、APP)采集到的用户行为日志文件,称为埋点日志,是程序员开发出来的一小段程序,可以采集到你做了什么动作,如点击商品加入购物车、切换到评论页面等,便于运营人员更好地分析用户如何使用应用。

当然数据还有更多的来源和格式,如传感器采集到的数据等,可以看这一篇

这三类数据都要能从源服务器上采集过来。有的数据是结构化的,如关系型数据库,有的是半结构化的,如 NoSQL 数据库、日志文件。更大的范围来说,图片、音频、视频等非结构化数据,也要能够支持采集。

这是对所能采集的数据类型的要求。在采集方式上,还要能支持全量、增量采集。

全量采集就是每次都完整拉一遍。缺点很明显,需要带宽流量和时间,不符合对快的要求;增量采集,程序要记得每次采到了哪里,采过的数据如果某些发生了变化,也要能感知,在下一次采集时把变化的数据带回来。

传统上,增量采集可以用时间戳、标志位、触发器等方式搞定,这需要数据源的配合,有时候,我们没有条件干涉数据源。

大数据技术下,对于关系型数据库,可以采集数据库的日志,再解析日志还原数据,实现增量的流式采集。如 MySQL 配置好 Binlog 日志,通过 Kafka 把日志实时发送过来。其它数据库也都有类似的方法。

对于关系型数据库,Apache 社区有开源组件 Sqoop,它主要用于在关系数据库和Hadoop之间传输数据。对于日志文件的采集,开源组件有 Flume、Logstash 等。

不仅多种类型的数据能够采集,还要速度快,讲究实时、准实时,达到秒级的同步。

数据时效性的价值不言而喻。数据一旦产生,就能感知和传输过来,与之前采集的数据增量合并形成最新最完整的数据。

只有足够快,才能不错过一些重要的分析和监控,许多实时的数据业务对此都有要求,如风控、推荐等。

数据量大,要求采集吞吐率高,而吞吐率和延迟(快慢)又是一对矛盾体,意思是说,大数据规模下,想要实时,是很有挑战的,例如天猫双 11 活动的大屏,看着只是几个数字在变,这背后的技术是相当硬核的。

再来说数据的质量问题。

高质量,代表数据不多、不少、不错、一致。

展开来说就是不重复冗余,没有其它数据混杂在内造成干扰;数据不残缺,行列记录都是完整的;标准一致,代表相同意义的数据字段类型、格式最好都能统一。

这些都是数据治理功能所要解决的问题,对已经是结构化的数据从库、表、字段不同级别进行标准和质量的监控、基于规则模型去校验和纠错等。

对应的就是数据标准管理和数据质量管理。

治理的另一个范围是数据安全,包含敏感和隐私数据不能泄露,数据不能被非法访问,对数据访问进行监控和审计。涉及到脱敏、数据权限和监控审计等功能。

在 DAMA(国际数据管理协会)中,对数据治理定义了九个方面的内容。

元数据也是很重要的一部分,元数据是指「关于数据的数据。」就是全方位、多角度地描述一份数据所形成的数据。就像简历之于人的关系,如果简历内容十分丰富,那我们就可以全面地了解这个人。

对于数据也是一样,从技术(数据格式、存储大小、更新时间……)、业务(描述什么业务的数据,属于哪个信息系统等……)、管理(谁在负责该数据、安全等级……)多个角度充分地描述数据,那我们就能对这个数据有清晰的了解和认识。

我们可以通过元数据快速查找和定位数据,也可以通过分析元数据,看清数据的来龙去脉,它产生的过程,以及它对别的数据的影响,这就是所谓的数据血缘。

总结来说,数据集成和数据治理的功能范围,就是为实现上述目标所框定的。

首先确保可用性和性能,真正能把多源异构的数据接入进来,保证传输的可靠性。

原始数据落地之后,需要对它进行有效的治理,通过元数据、数据标准、数据质量、数据安全等多种手段,确保数据是精确、完整、有效的,以便于下一步数据能更好地利用。

关于数据集成和治理,我们先明确目标和架构,以后的篇幅我会细讲里面每个小的模块。

关耳爷

微信号wei-talk

— 你也可能感兴趣 —

别被时代抛弃,读完这 6 点,你就明白了大数据

「大数据」这个热词,我们都有所耳闻。但究竟什么是大数据?大数据有什么特点?大数据能用来干什么?大家又语焉不详。

从技术角度讲,大数据当然很高深,但对于我们普通人来说,了解大数据的常识和原理其实很容易,读完以下 6 点,你就能明白大数据到底是什么。从而——不再只是被技术支配,还能在理解的情况下被支配:)

数据不只是数值

一提到数据,你是不是首先想到了「数字」或「数值」?那些存放在 Excel 表格中的,用于统计、分析的数字。

大数据中所说的数据,可不止是数字和数值这么简单,它包含电脑上所能存储的全部文件类型。如数据库、文本(文档)、图片、音频、视频等。

也就是说,所有能数字化的内容,全都是大数据存储、处理的对象。

什么样的数据才能称为大数据?

普通的数据肯定不能称得上大数据。几个硬盘就能装下,几台电脑短时间就能处理完的数据都不是大数据。

无法用一般技术存储、处理的数据,就称为大数据。

存储需要硬盘资源,处理需要 CPU 计算资源。单台计算机无论硬件性能有多强悍,总归是有限的,人类自古以来搞社会工程的经验非常丰富,如数万人、数百万人修建长城和金字塔,自然就想到了解决思路。

像搞人海战术一样搞「机海战术」,问题不就解决了吗?

「分布式」就是「机海战术」,蚂蚁咬大象。思路是有了,但技术实现方案相当有难度。

就拿存储来说,联合多台计算机去存储一份数据,该以什么格式存储,谁去指挥存储,谁去执行存储,任务如何分配,有的计算机存得快、有的存的慢,有的硬盘可能有故障,或存的过程正好断电了,该如何保障数据完整、没有错误、效率最高,又如何从多台电脑上读取文件……全都是问题。计算任务也面临类似问题。

Google 公司发表了三篇论文,出发点是如何利用大量廉价的低配置电脑(而非昂贵的服务器)去做海量数据的存储和运算,率先解决了分布式存储和计算的技术难题,奠定了大数据技术的基础,从此以后,大数据行业就开始发展了。

总结:大量联网的计算机,以某种协同算法,将硬盘和 CPU 联合起来,共同对多样化的数据进行存储和处理,称为大数据技术。

想想看什么情况会产生上面这种场景?

很简单,一种是周期性产生的数据量特别庞大,如 Facebook 2013 年时全球用户每天发布的照片数量达 3 亿 5 千万张,YouTube 2018 年时每分钟用户上传的视频时长达 400 小时;另一种是数据短时间内爆炸式地产生,像天猫 2016 年 双 11 大促活动,每秒钟产生 17.5 万笔订单数据。

这样规模的数据,称为海量数据,远远超过了单台设备存储和处理的物理极限。

数据从哪里产生?

目前世界上计算机存储的海量数据,都是来自于哪儿呢?大体上说,来自人的活动和机器的记录。细分为五类:

第一类是人在互联网上主动发布的数据,称为 Web 和社交媒体数据,如各种微博、博客、社交网站、电商网站中的评论内容。

第二类是机器对机器的数据,比如 RFID 数据、GPS 数据、智能仪表、监控记录数据以及其他各种传感器、监控器的数据。

第三类是系统的交易记录和行为日志数据,比如电信运营商的上网记录、信令数据,金融行业的交易记录、理财记录等,还有用户访问网站、使用 APP 系统所产生的各种行为日志。

第四类是生物计量学数据,指的是和人体识别相关的生物识别信息,如指纹、DNA、虹膜、视网膜、人脸、声音模式、笔迹等。

第五类是人工生成的数据:比如各种统计调查问卷、电子邮件、工作文档、纸质文件、扫描件、录音、摄像和电子病历等。

存储成本下降,硬件性能和网速提升,促成了大数据的繁荣。

以前存储大数据是成本和负担,现在能保留的数据尽量保留,数据成了企业、个人重要的资源和资产。

大数据有什么特点?

大数据著名的 4V 特征来了,这属于基础知识。海量(Volume )、多样(Variety)、高速(Velocity)、价值密度低(Value)。

海量和高速(实时)不细说。

多样,指的是数据类型和结构多样。数据类型在上文提到了,你能想到的所有格式的文件,都属于大数据的范畴。

结构,是指的数据的组织方式,有没有一定的规律。最有规律的,称为结构化数据,人类比较容易理解数据结构和关系,计算机也很容易读写和处理分析,像关系型数据库(MySQL、Oracle、PostgreSQL……),就是典型的结构化数据。数据有序地存储在「单元格」中,每一列都有固定的格式标准并代表相同的业务含义。

| 用户 | 商品 | 商品评价 | 物流评价 |

| —- | —————– | ——– | ——– |

| 李某 | iPhone 11 Pro Max | 好评 | 好评 |

结构化数据

结构性比结构化数据稍弱一些,但仍然保持有一定的结构的,我们称为半结构化数据。如 xml 文件和用于传输和交换数据的 json 文件等。一般是文本文件。

半结构化数据

结构化更弱的文件,如图片、视频等,以及自然语言,称为非结构化数据。但理论上非结构化数据是不存在的。

一上市我就下单了,到手后和想象的一样,屏幕贼细腻,面容识别更快了。物流小哥骑着火箭送到的。

非结构化数据

价值密度低,有点反直觉。但也容易理解,这是一个相对说法,数据量越大,无效数据也会越多,有价值的数据会稀释到整个数据池里。数据量级每上升一个等级,挖掘出的价值等比都有衰减。所以称为价值密度低。比如摄像头监控视频,连续录制,但关键的事件可能只需要其中的几分钟。

理论层面,还有一个对大数据特点的总结:那就是「全面而非抽样、效率而非精确、相关而非因果」。

传统统计学理论都是基于抽样数据建立的,这是成本所限。样本的质和量决定结果好坏。大数据利用分布式技术,可以采集和分析全量数据。这就可以比抽样数据揭示出更多的信息。

精确也是抽样数据分析所必须的,如果不够精确,放到全量数据中,偏差就会更大。而大数据是尽可能全量和实时分析,不追求个例的精确,更注重全量分析的效率。比如搜索引擎,能很快发现某时间段某地区的用户,搜索和「流感」相关关键词的趋势上升,可得出一个可能性的结论:某地区爆发了流感。

同样是由于更全面的数据,我们能发现【更多】的「因」导致的「果」,这就是所谓的相关。以往我们发现了一个现象,会假设有限的原因,再用数据验证,验证通过,因果链条就建立起来了。而大数据全量的分析,可能会找出更多影响结果的要素,它们和结果是相关的关系。

大数据能用来干什么?

你能想到最常用的一个大数据应用是什么?

答案是搜索引擎,像百度。它爬取全互联网的网页,将快照存储在服务器(相当于复制了网页内容,想象看数据量有多大),建立关键词和网页的索引关系,并排序,把排序结果也存储起来,在你输入关键词的时候,毫秒级地把相关网页排序结果展示出来。

大数据的第一个应用,就是搜索。

第二,大数据可以做画像,对一切实体做标签,最常见的是用户画像。原理是根据用户搜索的关键词、手机安装的 APP 清单、操作某应用的时段频次、手机的定位轨迹、历史的消费记录……融合起来清晰地描绘出用户的属性和行为特征,如年龄、性别、兴趣爱好、经济能力……贴上全方位的标签。这就是所谓的大数据比你自己更了解你。

第三,大数据还用来做推荐。像今日头条、抖音,根据你的行为,判断你的喜好,推荐相关信息流。电商购物,根据你的浏览、收藏和添加购物车记录,以及和你相同标签的人的购物记录,向你推荐可能感兴趣的商品。广告系统的核心也是推荐,你刚查了:「牙痛怎么办?」接下来在很多网站和应用中,你可能都会收到医院和药品广告。

第四个应用方向是风控。常见的有身份伪造、垃圾广告、虚假交易、黄牛秒杀、活动套利、数据泄露、垃圾注册、推广作弊、信用套现、账号盗用、盗卡交易、信息爬取等。互联网公司以多种方式补贴用户的推广费用,经常被黑客、羊毛党利用技术手段和专业设备套取。如何从大量正常的业务中识别这类非法操作,是大数据风控的重点。

另外比较传统的应用是分析和查询。共同之处是对延迟有较低的容忍度。传统小规模关系型数据库的查询响应一般会很快,也有比较成熟的优化方式,比如索引、缓存、读写分离、分库分表等。但大数据有非常大的不同,为了更快在海量数据中根据查询条件获得某值,可以把数据放入内存中,内存比硬盘读写更快,这就是内存计算。还设计了列式存储,预聚合等多种方法加快分析和查询的速度。预聚合就是提前把分析和查询结果处理好,等待被调用。

对于分析和查询,在本系列文章里,后面会介绍 OLAP 和交互式查询,感兴趣的同学请关注微信公众号「关耳爷」。

以上应用中,风控和推荐,属于实时计算的领域,数据连续地接入、处理、计算,像水流一样,不间断,也叫做流计算,保证业务的即时性。其它应用属于离线计算,所谓离线计算,就是可以分批次,周期性地处理历史数据,如当天处理前一天的数据,所以又称为批处理。在分析应用里,有实时也有离线。有的大数据厂商和产品,也把批流结合作为技术突破点或宣传卖点。

大数据和云计算、物联网、人工智能有什么关系?

云计算,核心是虚拟化技术。卖的是存储、计算和网络,你不知道按配置购买的主机是来自一台物理服务器分割出来的一部分,还是由多台服务器组合而来。云计算最大的优点是可以灵活地调整配置,就是所谓的弹性扩展。这是大数据所需要的一项重要功能,因为大数据技术的基础是分布式,所需要的内存、CPU、硬盘资源根据需求扩展,两者具有天然的亲密性。

云计算平台作为基础设施,对大数据平台起支撑作用,大数据平台利用资源管理的组件去请求和释放云计算平台的资源,完成数据处理。

物联网的智能设备、传感器,会产生很多数据,这类数据和业务系统的数据有不同的特征,比如写多读少,一般不会更新,存储频率较稳定,每条记录一般都带时间戳,对应的有专用的时序数据库的支持。物联网产生的数据存储在大数据平台中,大数据平台完成清洗、处理,经过离线计算供分析和数据可视化使用,也有实时计算,用于监测和预测设备的异常。

大数据平台为物联网提供数据功能服务和支撑。

人工智能重点是算法平台,在机器学习的编程框架支撑下,大数据平台中的数据样本供给各个算法做训练,不断调整算法,最后选出最优算法,以达到人类一些智能活动的标准,比如图像识别,能像人一样分出猫猫狗狗,识别出图片的文字;自然语言的语义分析,能像人一样听懂人类的语言,达到较准确的程度,这是人工智能的目标。

大数据像食物一样喂养人工智能的算法。使算法越来越精确、高效和低功耗。

Linux 内核漏洞简单解决方法:升级内核

最近阿里云安全中心提示 ECS 操作系统 Ubuntu 18.04 存在内核漏洞。如下图:

解决 Linux 内核漏洞,最简单的方式就是升级内核。方法如下:

一、检查可安裝的 Kernel 版本

apt-cache search linux-image-\*
apt-cache search linux-headers-\*

二、安装新 Kernel

apt-get install linux-image-X.X.X.X-generic
apt-get install linux-headers-X.X.X.X-generic

注意要安装相同版本的内核。

三、更新 initramfs image

update-initramfs -u -k all 

update-initramfs -u -k `uname -r`

四、更新 Grub

update-grub

更新后重启系统:

reboot

重启之后检查新内核是否生效:

uname -a

按以上步骤操作后,重新检查系统漏洞,均已消失。

如何发挥你的内在领导力

作者:Kenneth Berger,Slack 公司产品经理

翻译:关尔也

注:这里的 Leadership,直译是领导力,通过对全文的了解,更准确的意思是「内在张力」,包含内省、选择与判断,译文中仍以领导力来阐述。

几乎每个人都对自身的领导力没有足够的信心。人们想通过讲座、书籍和资讯来补足领导力的短板。 但 Kenneth Berger 解释说,领导力不是来自哪一本书,人本身并不缺少这项技能。大多数人具有限制性的信念,阻止了自身张力的形成,而他们自己并不知道这一点。

什么样的信念限制了你的潜力?

有些不习惯去思考的东西,拖了我们的后腿。

Kenneth 在多个著名的硅谷公司工作,收获了很多经验和教训,过程中学到了许多关于领导力的内容,我们将在下面去探讨。

在 Adobe 公司的经验教训:倾听你的内心

Kenneth 在 Adobe 公司工作了8年多。开始是一个充满激情的新人,很快就变成了一个「老油条」。他舒服地享受着自由的时间和可观的薪水,尽管觉得不应该停留在舒适区,但他还是一直留了下来。直到 8 年后,他被解雇了。

这里的关键教训是听从你的内心和直觉,对内心的感受保持警觉。这些感受可能有点让人不舒服,但它正是要告诉你去突破舒适区。这样做的回报很大,能让你以符合你价值观的方式工作,也意味着你是充实的。

在 YesGraph 公司的经验教训:你的工作不是争斗

Kenneth 和别人合伙创办了 YesGraph 公司。另一位合伙人有工程背景,而 Kenneth 具有设计背景。两个人很快就陷入激烈的争论中。谁对谁错看起来至关重要。事实上,创始人的工作不是为了证明自己对,而是要让公司成功。当创始人把权利斗争置于效率之上时,公司就遭受了巨大的损失。

你的工作不是赢得会议中的争论,而是关于更宏大的东西。当你放弃争斗中赢的良好感觉,而专注于更大的使命时,你就成为了真正的领导者。

在 Slack 公司的经验教训:认清本质

Kenneth 离开 YesGraph 公司后,他决心避免无谓的冲突,而是专注于埋头干活儿。他从一开始就相信 Slack 公司,相信他们所做的正在产生影响。但他并没有完全理解他的岗位职责。他认为这是传统的产品经理工作:做用户访谈,确定功能等。

Kenneth 没有意识到 Slack 是老板的「宝贝」,他不是被雇来写需求文档的,而是被请来好好培育这个「宝贝」,这有很大的不同。1 个月后,Kenneth 差点被老板解雇。他被要求做能证明自己价值的事。

突然间,工作充满了恐惧,显然哪里有些不对。3 个月后,Kenneth 的岗位被取消,他换了岗。Kenneth 为旧职位做了努力,又一次获得了职位。但是终归不行,9 个月后,Kenneth 永久地离开了 Slack 公司。

这里得到的教训是要弄清不良处境的根本原因。如果不弄清楚,它只会越变越大。一旦你定义错了一个问题,你就不可能找到解决它的正确方法。

自我价值选择

离开 Slack 公司后的一年内,Kenneth 觉得自己是个失败者,但他也没有一直停留在这种消极状态中。他选择了自己的方式,开始写作和演讲。Slack 公司的经历并非失败,而是一个了不起的教训。Kenneth 重新定义自己的观点,并拥抱新的可能性。

Kenneth 发现自己在产品工作中获得的经验教训,可以通过一对一的对话方式为人们提供价值。他意识到这种方式可能对某人的生活和事业造成影响时,他知道这就是他的选择,于是他成了一名教练。他找到了他的赛道。

当有人说「这就是唯一的路」时,不要接受它,而要挑战它。去尝试更多的可能。

领导力来自于内省

领导力不是你做了什么,而来自于你是怎么认为的。它们是关于这些:

当你倾听你的内心时,你就是内省和警觉的。

当你放下对错的执念后,你就是谦虚的。

当你精确定位问题时,你会变得敏感和勇敢。

当你选择更多视角时,你就是一个有远见的人。

Facebook 产品管理的 9 个经验教训

作者:David Breger,Facebook 公司产品经理

翻译:关尔也

David Breger 将他在 Facebook 担任产品经理时所领悟到的 9 个宝贵经验分享出来,希望对新的产品经理更好地处理常见问题有所帮助。

1、为成功做好准备

产品经理往往具有数据和工程背景,这意味着他们通常具有逻辑分析能力和批判质疑精神。他们为失败做了充足的准备,但往往为成功没有做足准备。包括:如果产品成功,功能将如何设计?如果用户迅速增长,你能否应对?对职业规划也应采取同样的态度——你准备好跟上发展的节奏了吗?

2、坚定信念,轻装上阵

发自内心地相信,轻松灵活地坚持,这对于领导创新和多元化的团队至关重要。产品经理需要拥有坚定的信念,但也愿意在客观处境下改变方向。这是一种微妙但必不可少的平衡行为。

3、保持弹性

作为产品经理,会与开发工程师、UI 设计师和其他人组成团队。团队氛围可以采用预先计划好的方式。或根据人员的特点去调整,总之不是强加你的方式。不要期望别人都能适应你。

4、预测趋势

公司在产品层面做好准备之前,更重要的是增加市场份额和保持领先优势。预测规模如何扩大,比其他人更快达成。这是在竞争性产品领域中脱颖而出的关键方式——在趋势明朗之前,成为新事物的第一批专家之一。

5、想要了解用户,要有一支多样化的团队

Breger 表示,拥有一支多元化的团队对于了解用户和开发用户想要的产品至关重要。通过与具有不同背景的团队成员协作,可以引入了新的观点,从更多的见解中获益。

6、与互补的人在一起

让自己的周围有一群能够弥补你弱点的人,同时你也要能够弥补他人的弱点。这要求你诚实地对待自己的局限性,找出那些拥有你不具备的才能的人。

7、让聪明人参与项目,不要担心其背景

在分配任务时不要担心团队成员的背景,不要担心他是否具备足够的相关经验,而是要考察其是否足够聪明,聪明的人即使没有背景,也会从一个全新的角度来看待问题。产品的世界变化如此之快,需要不同背景的聪明人给出更好的解决方案。

8、适时扩充团队,确保成员为产品成功已做好准备

了解产品和功能所处的阶段,根据明确的战略和路线图,将合适的人员分配到正确的位置。确保他们有成就感,这样才能形成可扩展的团队,当团队没有获得所需资源或关注时,很容易受到挫折丢掉信心。

9、了解你在职业生涯中的真正目标,并尽力去实现

产品经理必须有职业目标和实现目标的动力。没有这种持续上一个台阶的想法,你就会停滞不前,你的团队也会如此。始终有职业目标,并关注实现这些目标的机会。个人的积极进取会感染其他成员,从而形成一个更有成效、更积极的团队。

产品经理职业的演变

作者:Helen Sims,Airbnb 公司产品经理

翻译:关尔也

Airbnb 公司产品经理 Helen Sims 拥有超过六年的产品相关经验,她非常愿意分享职业生涯。从她的分享中我们可以了解产品经理职业演变的更完整的过程,了解各个阶段产品经理的工作重点,也能更加熟练地掌握其中的窍门。

50 年职业规划

在正式进入产品经理职业发展这个话题之前,Sims 首先要求你用 50 年的轨迹来描绘你的职业生涯。这样,你就可以确定你预期投入的时间和希望得到的结果——把时间线拉长,来看待投入产出比。如果没有目标,你可能会在职业生涯中迷失方向,不知道自己想要什么以及如何得到。

脑子里有了这个远期规划的框架后,我们来探讨产品经理之路的每个「阶梯」,深入研究其工作类型,并思考每个级别所需的东西。

入门级别

与其它岗位一样,大多数人都应该是从入门级开始。Sims 表示,入门级产品经理的作用都类似于助理,逐步了解组织架构和岗位职能。

入门级产品经理的工作需要学习和了解其它学科如何运作,并以这些理论解释产品所呈现的结果,以此来对现有产品进行迭代。请记住,理性思考的结果可能会有出入,人类感性的世界相当复杂,因此,要灵活地应用理论。

独挡一面级别

下一个阶段是「在没有人帮助和监督下开展工作」,你不再处于入门级别,这个级别已经是一名成熟的产品经理。

此时,你将从头到尾构建产品并分析解释大量数据,需要主动与团队沟通。传达愿景、鼓励团队、承担责任是这个阶段里非常重要的。

产品经理级别

这个级别里涉及到「帮助他人工作」。Sims 表示,你需要专注于吸引和留住优秀人才,提高团队整体效率。此外,你还必须精简管理流程,如解决问题和提供建议或反馈的流程。

Sims 说:「人们不会留下糟糕的工作,他们会留下糟糕的经理」,因此,请确保关注团队成员的问题和诉求。

管理级别

产品经理职业发展的最后一步是成为产品总裁。除了确定很多问题的主要目标,你还必须通过有效的领导力来提升团队的绩效。有效的领导力意味着你有明确的产品目标和理念,以及清晰的公司方向。如果你的团队没有统一的理念,那将会遇到致命的问题。

Sims 举了自己公司理念的例子供我们参考:「客户优先,商业其次,公司最后」。

如何破解产品经理面试

作者:Gayle McDowell,CareerCup 公司创始人/CEO

翻译:关尔也

众所周知,产品经理是互联网行业中最具吸引力的职位之一。开发、设计、市场以及销售等不同岗位的人激烈竞争着这一岗位。

好的一方面是,只要你肯付出多一点努力,你就可以超越很多人。

Gayle McDowell 出版了几本书,其中之一是《破解产品经理面试》。她是 CareerCup 的创始人兼 CEO,她的公司提供科技行业的职业咨询服务。

她积累了很多关于产品经理面试的经验。让我们从基础的部分开始。

寻找最合适的产品经理

Gayle McDowell 首先强调了「完美的产品经理是不存在的」。产品经理要求的综合素质非常高,一般人不可能在每个学科中都具备高超的技能。因此,产品经理应该了解自己的优点和缺点,并且能够以互补的方式描绘它们。

如果你缺乏经验,在面试时,就要多讲一些你解决未知问题的思路。

为了能准确地宣传自己,你应该了解岗位的要求及你如何匹配要求。如果你有技术背景,你可能会被认为技术扎实,但缺乏商业决策能力。如果该职位需要较强的商业思维和其他技能,你可以准备一些实例,来说明你能胜任商业方面的工作。

强化而不重复

当你展示自己时, McDowell 说,最重要的是,面试官会挖掘你过往的经验是否与未来的工作相匹配。这就是为什么要展示相关成功经验是如此重要。请记住,面试官只有你的简历,所以你必须以一种更加强化的方式展示自己,而不是重复简历。

爱好和兴趣能很好地弥补你的「刻板印象」。兴趣能作为一种驱动力,向面试官表现你很有学习的热情,想要了解职业以外的东西。如一个数据分析师喜欢绘画,这说明他具有严谨的逻辑分析能力,还有创意设计的相关能力。

典型的面试问题

产品设计问题:面试官会要求你叙述设计某种产品的思路。这时要尽可能多地提出问题。你需要了解用户特征、行为属性、使用场景等。这就像是给教室设计的书架和给家中只有少数几本书设计的书架大不相同。

最喜欢什么产品:如果没有最喜欢的APP、To C、To B 产品等,你就不应该参加产品经理面试。对于这个问题,你应该准备相关的答案:

  • 它解决了哪些问题?
  • 为什么人们喜欢它?
  • 为什么你喜欢它而不是别的产品?
  • 你会如何改进它?

重要的是,你需要展示出洞察力。你要像这个产品的产品经理一样,向面试官展示出来你的想法。将竞品、用户和优化加入答案中,表明你了解产品的成功方式,并知道如何改进。

快速准备答案的提示:罗列优势和劣势,从中各选出五个。针对十个特征中的每一个,写下你的经验或教训。通过使用情境、动作和结果来构建内容,确保干货十足。

为什么金融科技很重要

作者:Amrit Pal,Square 公司产品经理

翻译:关尔也(微信公众号:关耳爷)

金融科技如何破局和改变金融机构

目前全球有 40 亿人拥有智能手机,大多数人都与数字生态系统相连接。这意味着金融科技在世界大部分地区已畅通无阻,其边际成本已接近于零。初创公司不需要从耗费大量投资的数据存储开始——万物上云,触手可及。

在美国,从 20 世纪 90 年代末以来,发生了很多变化。 从经济角度看,银行承担了金融中介的角色,它核心职能是管理资本风险。银行依赖线下的实体——当地分行,以及私人银行家。

这种结构导致不同金融类型的人被排除在体系之外,只有富人才能被银行所重视,获得良好的服务。这符合二八法则,最富有的前 20% 的人获得所需的服务,剩余的 80% 则不然。

现在,银行最大的危机来自于互联网金融科技。后者的成本急剧下降,因此可以覆盖更多的用户群。

银行提供了许多服务,这些服务按部门独立处理,如贷款、抵押、转账、储蓄等,并没有解决个人整体财务的需求。随着技术的快速发展,传统银行业务正在被分拆。很多 APP 都能为特定服务提供非常出色的用户体验。如支付宝、贝宝等众多公司提供了曾经只有银行才能提供的转账服务。

过去获得信贷是大多数人面临的难题。银行只允许已经获得信用的人得到更多额度,其他人则被排除在外。现在技术允许贷方向尚无信用记录的人提供有限贷款。通过对用户的各项数据进行评级就可以获得信用分数。

投资也变得更加容易。过去想要投资,只能通过昂贵的中介。现在有了像 Robinhood 这样的 APP,任何人都可以参与投资,手续费很少或几乎没有。随着银行业务被分解得越来越细,应用程序功能由原来只有一种变得越来越丰富,逐步形成了金融生态系统。

如何建立金融科技产品

1.培养同理心

人们如何对待金钱的态度是高度个人化的,这构成他们心理的一部分。你怎么理解金钱对某人意味着什么?

  • 想要理解用户对金钱的心理最好的方式是实际和用户在一起,和他们交谈,了解他们生活的具体情况和他们面临的问题。数据无法揭示所有。
  • 了解金钱背后用户的情绪和态度。是激进抑或保守?

2.培养用户的信任感

无论做什么金融科技业务,信任是最基本的因素。人们需要知道他们的钱会被用在什么地方,资金用途要求一定是可跟踪的。

3.服务邻接

为货币需求提供相邻服务的对接,金融科技本身就是一项基础设施。没有这项基础设施,就无法处理金融需求。完善基础设施能服务于核心市场后,应进一步利用现有资源来满足相邻的需求。

从哪里出发?

整体竞争环境越来越公平。20 年前某些金融运营特权会开放给今天所有人。新玩家会成为明天的老将,新的生态系统会越来越健全,每个人都能获得高度定制的金融服务,人们都可以按照自己的方式安排财务计划。现在财务数据都集中在金融机构内部,未来有望控制在个人手中。

Drupal 8 开发笔记

目标是知识付费平台(视频+会员订阅),选型结果为 Drupal 8。

开发方法用服务器 Docker 加 VS Code Remote 远程开发。

一、准备工作

1、服务器配置

服务器操作系统:Ubuntu 18.04

安装 Docker、docker-compose、git

2、本地配置远程开发

本地操作系统:macOS Mojave 10.14.4

安装 VS Code Insiders、Remote Development 插件

微软在 5 月 3 日的 PyCon 2019 大会上,发布了 VS Code Remote,利用它开发者可以连接到远程服务器上进行开发。历史真是轮回,最早硬件性能差的时候,就是瘦工作站的模式,所有的运算处理工作都由中央计算机完成,等到了 PC 电脑性能变高了,大部分工作都放到了本地。现在性能更高了,工作方式又变回去了,开发者不用在本地搭建开发环境,可以在统一的远程环境进行开发了。

给微软点赞。

(1)安装 VS Code Remote

该功能目前仅支持在 Insider 版本中使用,最终也会在 Stable 版本中提供。安装好 VS Code Insiders 后,在插件库中搜索 Remote Development 进行安装。

(2)编辑 SSH 配置文件

点击 Remote-SSH 标签,在展开的面板中点击 CONNECTIONS 右侧的齿轮图标,点击选择第一行的文件进行编辑。

格式为:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host alias
    HostName hostname # ip 地址
    User user
	IdentityFile ~/.ssh/id_rsa

这里注意需要把本地的公钥上传到远程服务器,并开启公钥认证方式。

登录服务器的各项信息配置正确的话,保存后就能进行连接。

(3)打开服务器项目文件

连接成功后,像打开本地文件一样打开远程服务器的文件进行编辑。

二、Drupal 8 配置

1、启动 Drupal 容器

只包含 web 部分的配置。我有另外一台云数据库服务器,所以没有在容器配置数据库。

进入项目目录,写入 docker-compose.yml 文件,内容如下:

version: '3'
services:
  web:
    image: "drupal:${DRUPAL_VERSION:-latest}"
    restart: always
    ports:
      - "8080:80"
    volumes:
      - ./app/modules:/var/www/html/modules
      - ./app/profiles:/var/www/html/profiles
      - ./app/themes:/var/www/html/themes
      - ./app/sites:/var/www/html/sites
      - ./config/php/conf.d/php.ini:/usr/local/etc/php/conf.d/php.ini

启动容器:

docker-composer up -d

2、安装 Drupal 8

浏览器打开 http://ip:8080 按提示完成在线安装。需要注意文件夹的所属和权限。如提示不能写入、复制等错误,执行:

chown www-data:www-data ./app -R
chmod a+w ./app/sites -r

3、安装 PHP Composer、drush

(1)安装 composer

Drupal 8 系统核心、扩展、模板的管理与升级,官方推荐使用 composer,它可以自动地安装依赖,减少一些折腾。

推荐手工安装 composer:

# 在服务器上下载 composer.phar
wget -c https://getcomposer.org/composer.phar
# 将脚本从服务器上拷贝到容器中,CONTAINER_NAME替换为 Drupal 容器的名称
docker cp ./composer.phar CONTAINER_NAME:/usr/local/bin/composer
# 进入 Drupal 容器内部
docker exec -it CONTAINER_NAME bash
# 赋予 compser 执行权限
chmod +x /usr/local/bin/composer

测试是否安装成功,输入 composer 回车,看到下面界面即为成功。

(2)安装 Drush

Drush 是 Drupal 的命令行管理工具,可以更快效率地执行一些命令,比通过后台界面操作要快很多。用 composer 安装:

composer require drush/drush

4、升级 Drupal 核心

composer outdated "drupal/*"
composer update --dry-run
composer update drupal/core --with-dependencies
drush updatedb
drush cr

5、安装 PHP 7.2-bcmatch 扩展

Drupal 的 Commerce(电商)模块要求 PHP-bcmatch 扩展,而 Drupal 官方 Docker 并没有安装,需要自行安装。

进入 Drupal 容器内部运行:

docker-php-ext-install bcmath

然后重启 apache 使扩展生效:

/etc/init.d/apache2 restart

6、安装扩展

composer 安装扩展的命令形式为:

composer require drupal/module_name