领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Srini Penchikala 译者 郭晓刚 发布于 2009年8月3日
在软件开发领域,数据持久化方案在最近数年中已经取得长足发展。除了先前持久化的默认选项——关系数据库系统,数据库的疆土上出现了更多样化的选择。在日前举行的Lone Star Software Symposium软件研讨会上,Scott Leberknight做了一次题为“Polyglot Persistence ”演讲,讨论现在的新情况,即开发者们在选取数据持久化方案时可以有众多备选的数据库产品,诸如Amazon SimpleDB、Google Bigtable、Microsoft SQL Data Services (SDS)和CouchDB等。
早在2006年12月,Neal Ford就写过一篇“ Polyglot Programming(多语编程)”,预言了我们现在所见的一波趋势,即为手头的特定工作选用最适合的语言。与确立一种“默认”语言(如Java或C#)的做法相比,多语编程要点是为特定工作挑选适当的语言,而不仅仅是挑选框架。这番说法用在持久化方面也成立。
Scott说开发者在MVC和AJAX框架等领域有许多选择,如Struts、Apache MyFaces、Spring MVC、Wicket、Rails、Grails、jQuery、dojo、Ext JS……而在解决企业应用的数据持久化问题上,开发者同样拥有众多选择。“多语”持久化着眼于考虑持久化需求,然后选取一种最能满足需求的持久化机制。
由于企业应用在功能和技术需求上的多样性,不可能有普适的方案。以下是一些推动数据持久化领域创新的因素:
应用管理之下的数据,其类型也有很大区别。可能是结构化的(关系数据)、半结构化的(如医疗记录系统中的文档)或者是无结构的(音频/视频流)。面向对象的数据库、面向文档的数据库、Bigtable、键值存储、实体属性(Entity Attribute)值数据库等不同类型的数据库纷纷出现,各自瞄准了不同的数据持久化需求。
他还谈到ACID和BASE的概念会极大地影响数据库系统的事务和可用性。ACID和BASE提供的保证不同、代价也不同。例如,ACID系统以可用性为代价去保证数据的一致性,所以在两段式提交中,只要有一项事务性的资源倒下,系统的可用性就是零。而BASE牺牲即时的数据一致性去换取高可用性的分区容忍性。问题的具体情况决定了我们是否可以牺牲一致性去换取高可用性、容错、冗余等好处。
面向文档的数据库的例子有Lotus Notes,、Apache CouchDB、Amazon SimpleDB和ThruDB。Scott演示了通过REST API访问Simple DB数据库和CouchDB视图,并根据数据库中的文档生成汇总和报表。
Project Voldemort是另一个数据持久化方案,它是一个分布式的键-值存储系统,并有跨服务器自动复制、透明的服务器失效处理、自动数据项目版本化等特性。LinkedIn用它解决高伸缩性存储的问题,适用于简单的功能分区力所不及的场合。来自LinkedIn的Jay Kreps将于即将召开的 QCon 大会上介绍Voldemort 项目。
Scott也讨论了其他数据库产品,如Amazon的Dynamo——一个键-值数据存储系统、Apache HBase——开源、分布式、面向列的存储模型,仿照了Google Bigtable实现。数据持久化的疆域上还活跃着更多的物种,如XML数据库、Semantic Web/RDF、Triplestores、Tuplespaces等等。
大多数新的数据持久化系统都提供了基于REST的API,API语言也有Java、C#、PHP、Visual Basic和Ruby等。Scott建议开发者考虑数据库方案的时候,应该思考自己的应用到底需要什么,而不要去想现在流行什么。决策时应该从以下方面去考查:
查看英文原文:Scott Leberknight on Polyglot Persistence
译者 郭晓刚 是InfoQ中文站架构社区编辑,创建并终结过数家软件小企业,翻译过多本技术书籍。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
3 条回复
关注此讨论 回复