领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Michael Hunger 译者 丁雪丰 发布于 2010年4月5日
3月25日MongoDB(取自“humongous”)1.4版发布后不久,其创始人Dwight Merriman(前DoubleClick CEO/CTO)宣布10gen—— 开源文档数据库MongoDB背后的公司,将为其提供商业培训和支持。
InfoQ借此机会采访了Merriman,了解了MongoDB的特性、适用性以及在NoSQL数据库社区中的地位,文中适当引用了他的一些回答。
MongoDB是一个可扩展、高性能的下一代数据库。MongoDB中的数据以文档形式存储,这样就能在单个数据对象中表示复杂的关系。文档可能由以下几 部分组成:独立的基本类型属性、“内嵌文档”或文档数组。
这样的灵活性让开发者能以一种易于管理且灵活的方式来对大量的问题进行建模,不必将数据打散到不同的数据表中。在数据不宜被构造成单独文档的情况 下,MongoDB有“DBRef”的概念,这是从文档的一个属性指向另一个文档的指针。
从MongoDB数据库中获取和查询数据是十分灵活的——可以基于主文档、文档中的任意属性、任意内嵌文档、数组中的任意文档来动态地查询文档。可以通过 “点”符号来访问内嵌文档。
用C++开发的MongoDB有以下特性:
MongoDB的博客上是这样来介绍他们的目标的:
一直以来,MongoDB的目标都不是处理少数问题的特殊数据库,而是一种新型数据库,是可以为开发者解决大量现实问题的数据库。
MongoDB项目的重点是将非关系模型的优点和传统数据库中常见的重要特性结合起来,前者包括高可扩展性、性能和易于开发,后者在重要的操作型数据存储中很有用。
MongoDB不是在实验室里设计出来的,它源自于我们自己在构建大规模高可用系统方面的经验。
MongoDB在14个月前,于2009年2月11日,发布了第一个正式版本。其背后的哲学告诉大家,尽管出于可扩展性和性能的考虑削弱了事务语义,人们还是需要一个功能更强大的工具来应对常见问题,不仅仅是 纯Key-Value存储。
文档化范式是一种有趣的用于持久化复杂对象结构的途径。尤其是领域驱动设计(DDD)所提出的聚合概念,只有根实体能被其他实体连接到,被依赖的实体和值只能通过根来访问。在DDD的项目里,基于MongoDB的仓库能方便地用于提供持久化功能。另外,还有一个相关的观点,当关系到业务实体时,业务领域中总是会提到文档。因此,也许用文档作为内部表示方式会比其他数据结构或对象更合适一些。
在无模式的文档数据库中,数据建模依然十分重要。在创建文档前有多方面的关系需要慎重考虑,不然会导致数据重复、性能不佳和其他问题。
例如,在一个关系型数据库中,一篇博客(包含文章内容、评论、评论的投票)会被打散在多张数据表中。在MongoDB中,能用一个文档来表示一篇博客,评论与投票作为文档数组,放在正文主文档中。这样数据更易于管理,消除了传统关系型数据库中影响性能和水平扩展性的“JOIN”操作。
> db.blogposts.save({ title : "My First Post", author: {name : "Jane", id :1},
comments : [{ by: "Abe", text: "First" },
{ by : "Ada", text : "Good post" }]
})
> db.blogposts.find( { "author.name" : "Jane" } )
> db.blogposts.findOne({ title : "My First Post", "author.name": "Jane",
comments : [{ by: "Abe", text: "First" },
{ by : "Ada", text : "Good post" } ]
})
> db.blogposts.find( { "comments.by" : "Ada" } )
> db.blogposts.ensureIndex( { "comments.by" : 1 } );
你可以直接在交互式MongoDB Web控制台Shell里运行该范例,其中还嵌入了在线教程。
InfoQ的CTO Alex Popescu在myNoSQL中放了很多新闻、评论和多个NoSQL数据存储(包括MongoDB)的比较,可以参考他的生产环境笔记。
Teach Me To Code发布了3段视频,介绍了MongoDB的诸多特性。
Pivotallabs提供了一段由10gen的Michael Dirolf做的介绍性演讲的录像。Slideshare上还能找到Kyle Banker做的一个比较完整地介绍MongoDB的演讲。
MongoDB数据库遵循GUN AGPL v3.0协议发布,mongodb.org提供的驱动遵循Apache License v2.0。 你能从github上获取它的C++源代码,并在任意操作系统上构建它。
你也能以二进制包的形式在Linux、MacOS X、Windows和Solaris上安装MongoDB。
MongoDB本身以mongod守护进程的形式运行,这是核心数据库服务器,随后通过多种驱动来访问它。分片支持和数据库路由功能由mongos 服务来提供。
有人努力在几乎所有编程语言中支持MongoDB。它有多种语言的驱动:C、C++、C# & .NET, ColdFusion、Erlang、Factor、Java、Javascript、PHP、Python、Ruby、Perl,等等。
MongoDB还支持其他框架,例如gremlin(图数据库)的“blueprints”连接器库。Debasish Ghosh将之集成到了可扩展Actor框架Akka中,作为持久化模块。
从操作角度来讲,MongoDB可以根据应用程序的需要以两种模式来运行。第一种是“单主”(single master)模式,只有一台主服务器来处理所有的写操作。读操作能从中分离出去,通过任意数量的从服务器来进行读操作,这有利于提高读的可扩展性(使用场景:Sourceforge)。
对于那些写数据量很大或写频率过高,单台主服务器无法处理的应用程序,可以使用MongoDB的自动分片模式(正处于alpha阶段)。该模式下写操作会自动分配到任意数量的“片”中(一般是一台或一组MongoDB服务器),它们负责这部分数据集的写和读。
无论使用哪种模式,MongoDB都会采取“强一致性”方法(你可以把MongoDB看成CAP理论中的C-P系统)。高可用性是通过将数据复制到多个MongoDB节点来实现的,每个节点都能及时成为一个分片的主服务器——MongoDB会自动处理故障转移。这能让你在维持相当高的写可用性的同时,拥有强一致性特性,这对一些用例来说非常重要。
mongodb站点里有一个管理员中心提供如下操作信息:
MongoDB的文档位于mongodb.org wiki(PDF), 遵循Creative Commons License。
10gen设计了MongoDB,以此来解决应用程序开发社区中的大量现实问题。我们可以把MongoDB用作很多有数据库后端的应用程序的数据存储部分,实际的客户部署情况也证明了这一点。
今天,10gen为那些在生产应用程序中使用了MongoDB的客户提供支持、咨询和培训。在不久的将来,10gen将提供基于云的服务(例如托管的MongoDB服务)以及针对大规模MongoDB集群的高级管理工具。
1.3版本的MongoDB已被广泛用于生产系统中,比较知名的用例有:
当然,还有很多其他的用例。
MongoDB团队关于数据存储的愿景非常广阔,他们认为目前的1.4版本包含了半数他们想要的特性,明年他们会继续努力。
查看英文原文:MongoDB Growing Up: Release 1.4 and Commercial Support by 10gen
译者 丁雪丰 是InfoQ中文站编辑,满江红翻译组核心成员,出版过《Spring攻略》、《JRuby实战》等多部译著。主要关注领域:企业级应用、海量数据计算、动态语言应用等。
在实施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 条回复
关注此讨论 回复