PostgreSQL:世界上最好的数据库系统

导读:发展多年的PostgreSQL,如今越来越现代,越强大,越可扩展,也越来越有趣。

图片

不是标题党,也不是引导关注。本文打算证明,通过良好的设计与实现,有没有费用方面的考量,PostgreSQL都以客观可衡量的证明比现有数据库工作得更好。


如何证明这个标榜如此牛的观点?温柔的书呆子们,不会浪费你的时间,请继续阅读。


Postgres是一个真正为数据库设计的产品。


以前看这个数据库的设计是那么复杂,如今让人刮目相看,以前我经历过不爽的感受,如今的对比真的不一样,生活变得很美好。虽然它仍然不是完美的,但是体验让人感觉到愉快。


当人们对某种观念持有固有模式和形态时,很难有公正的看法。人们使用的每个关系型数据库都有自己的独特功能。


在之前,我在项目中使用SQL Server或者MySQL,这些有些是由合作公司的技术部门的CTO预先决定的。


在微软.NET世界里,大多数情况只有一种数据库解决方案,那就是 SQL Server,它也很好,但是我们要关注PostgreSQL?


PostgreSQL具有和SQL Server的所有功能,在实际应用方面比SQL Server功能更多。PostgreSQL不仅是一个关系数据库,而且还是一个对象关系数据库。它没有特殊许可证等牵绊,安装即可使用。


它具有现代数据类型,比如用于存储IP地址的Inet类型,存储JSON的,全文检索等,并且具有非常好的扩展性。


在本文中,我打算详细证明,通过设计与实践,也没有金钱方面的顾虑,PostgreSQL都可以客观、可衡量地比目前其它数据库更好。


许可证


Postgre是免费的,我们用它是不是不太好?我们需要对许可证的各个方面和之后的扩展性进行了解。


SQL Server:微软提供了26页的许可说明,用户需要花时间阅读,不仅是这些文本,而且要支付给微软费用和支持多少费用是艰苦的,不仅仅是付款,要确保遵守相关法律,还必仔细研究销售和许可条款,保障合规使用,让自己不会越线。


而使用PostgreSQL,则无需担心这一点。许可证可能只有1年,或者5年以内,这些涉及到钱的问题交给财务部门,而开发团队希望越简单越好,工具简单方便强大。


StackOverflow在使用SQL Server


著名的技术问答网站Stack Overflow使用SQL Server,但在管理许可证和支付许可费用上花了大量精力。


创始人Jeff Antwood这样解释说:


『我们选择微软技术栈是因为非常了解它,我们有多年的开发经验,也真喜欢ASP.NET和IIS7,现在.NET框架非常成熟了。』


他说,对于企业来说许可证费用不是问题,创业公司在几年转换为成功的企业后,不会计较拿出1%的费用放在软件许可支出上。


以下摘录Stack Overflow的首席执行官Joel Spolsky关于相关主题的看法:




只所以选择SQL Server没有任何问题,但需要有一个充分的理由,就像上面StackOverflow的人说的那样,因为他们熟悉.NET技术栈,而且SQL Server经过自己的调优,因此也不太容易移除它。



PostgreSQL 也需要一些费用


世上没有免费的午餐。PostgreSQL使用BSD开源许可证,允许最大化使用和分发自由。如果使用PostgreSQL,在工具和服务器托管方面要为PostgreSQL支持一点费用。是的,不管干什么,支持和维护都要花钱。


在此处需要仔细分析,然后再决策。总有不止一个解决方案。


透明安全


PostgreSQL有一个关于安全的邮件列表,并学习其它组织关于***等方面的数据。在这里没有任何东西是隐藏的,发现任何BUG都会快速处理,而不要被一些软件供应商提供一段短的修正清单而蒙蔽。


在Postgre的世界,所以已知的***与***事件都会在公开后立即处理,这种安全响应在商业机构都无法想像,软件供应商一侧,希望在解决之前尽量想法保密,然后再去解决。而PostgreSQL会减轻人们的负担。


安装快速


刚出道时,我曾经和同事们自夸在笔记本上安装成功Oracle了,他们都笑了。是的,安装Oracle是一件复杂或者麻烦的事,不知道你有没有这样的体验。


而下载和安装PostgreSQL则相对来说非常容易,不用在网上找一堆博客、文章来了解安装教程。


并发控制方法


PostgreSQL提供了一种并发控制方法,非常适合高INSERT和SELECT的负载场景。


使用PostgreSQL,容易设计但要考虑它一些方面的限制:UPDATE和DELETE。通常情况下,如果尊重数据,那么就会喜欢上PostgreSQL提供的数据安全性。


PostgreSQL提供DDL事务处理,包括部分或完全回滚,另外还支持标准的事务隔离,包括序列化,提交后读取以及可重复读取等ACID特性。


稳定且可靠


PostgreSQL在内核中内置了逻辑复制这一强大功能,允许跨版本迁移,如果没有锁定在特定的软硬件环境,这个解决方案可以无限升级。PostgreSQL中几乎所有东西最近都出现了CONCURRENTLY关键字。


大多数平台都支持PostgreSQL,包括Linux、FreeBSD等。你有超过3到5年的ROI解决方案吗?即使不升级任何硬件,PostgreSQL也能永远为你稳定服务,费用为0.


能做所有事情的PostgreSQL


想使用NoSQL,RIAK,Redis,Mongo吗?Postgre已经完成这些全部工作,如分片可以使用pg_partman,使用列数据存储,可以用Hstore,想做部分复制,可以用数据流式逻辑复制,高流量并发可以用负载均衡,队列,连接池,双向复制...


目前很难想到一个在PostgreSQL上没有的功能。


如果想从其它系统抽取数据,PostgreSQL提供一个叫联合对象集合的工具,也称外包数据包装器,就像把胶带绑在鳄鱼身上一样对待自己的数据。


PostGIS社区比PostSQL社区还要大,利用后者非常好的扩展性和数据功能多样性,这些功能可以直接开放给其它项目使用,可以连接任何东西。


而这些功能,费用仍然是0。


完善的的标准与文档


PostgreSQL在整个生命周期内严格按标准实现,包括ANSI SQL/SQL以及Med,支持SQL 2016的大部分功能,符合179种强制性功能中的160多个,比任何一个数据库引擎都要多。


PostgreSQL项目要求所有提交代码的人员都要提供完善的文档,用来开发应用功能的文档。有多种格式提供,文档还用来评估功能组件本身,作为未来功能组件的参考。


总体上,PostgreSQL是个要求文档的产品,很多PostgreSQL开发人员在使用C编写代码,文档中包含了使用数据库如何工作,以及如何通过PostgreSQL来管理项目。


语言功能


PostgreSQL实现并提供了全局表达式,语言控制结构,结构化的错误处理,包括现有编程语言中过程化开发的所有优点。


测试驱动开发


PostgreSQL经过最完整的测试,确切的说,是详尽的测试,每个错误都要通过测试来验证,并使用代码来满足其测试。


首先通过创建测试文档来开发新功能,然后对其进行编码,直到功能完整。


接着把这些测试集成到构建服务器进行回归,保证在后面的PostgreSQL版本中不会重现这些错误,这表示每个构建周期的测试都是最新的,可以确保PostgreSQL保持最稳定并高度可用


经过所有回归测试后,才会提供给用户『0个已知错误』的版本。


国际化与本地化


PostgreSQL的开发者来自世界各地。PostgreSQL是从大学的毕业论文项目而来的,从一开始就使用多种地区语言协作,国际化与本地化做为一个实践标准纳入

PostgreSQL,随着全球化商业市场的不断加深,PostgreSQL的本地化工作正在更平滑的实现。


小结


以前我使用SQL Server,还有MySQL,现在我更喜欢PostgreSQL。


建议各位也去尝试它,相信你不仅会喜欢它,也会全面提高工作效率,比如将实体层用ORM,在数据访问层上使用LINQ等等。


PostgreSQL还有丰富的用户组,IRC以及博客文章,导师大牛组成的开发者社区,还有更多跨文化的哲学思考,演讲,视频,讲座。


下载个PostgreSQL安装一试,看它是否超过你的想象?相信你会感到非常惊喜!


猜你喜欢

转载自blog.51cto.com/15127566/2665141
今日推荐