什么是 Caché 数据库

你可能听说过MySQL、Oracle、PostgreSQL等等大名鼎鼎的数据库,但看到Caché这个名字你可能会费解。

这篇文章就简单的介绍一下Caché。

InterSystems公司

InterSystems

Caché数据库是InterSystems公司的商业产品,InterSystems成立于1978年,是总资产为2亿美元的私营软件公司,总部位于美国马萨诸塞州剑桥市,在22个国家设有办事处。InterSystems为医疗卫生行业提供重要的网络平台,其创新的产品也广泛应用于其它行业。InterSystems的用户包括TD Ameritrade、英国电信(British Telecom)、美国陆军(U.S. Army)、Cleveland Clinic、德意志银行(Deutsche Bank)、Johns Hopkins、Kaiser Permanente、美林公司(Merrill Lynch)、普天寿保险公司 (Prudential Insurance Co.)、西门子(Siemens)、沃尔沃(Volvo)以及其他数千家成功企业。

除了Caché数据库以外,InterSystems公司的产品还包括Ensemble快速集成平台,HealthShare医疗卫生信息网络平台,InterSystems IRIS 数据平台等。

InterSystems公司的产品主要面向生命科学、医疗卫生行业的数据,也囊括了一部分公共政府、商业行业。

Caché

Caché是 一种后关系型数据库(Post-Relational Database),后关系型代表了它在关系型数据库的基础上,包含了一些更新型的特性。它独一无二地提供了三种整合的、能并发访问同一数据的数据库技术:成熟的对象访问方式,高性能的 SQL 访问方式以及丰富的多维访问。在对象数据、关系型数据以及多维数据视图之间不需要映射,这样就大大节省了开发和运行时间。Caché提供了快速 Web 应用开发、高速的事务处理、大规模的扩展性、对事务数据的实时查询。

Caché 能够以所需的任何形式存储、使用和分析交易与历史数据,从而为客户至关重要的应用提供支持。高速 SQL 能够实现跨数据模型的无缝运行。在吞吐量和数据量需求不断增长的情况下,Caché 能够始终保持极高的性能。

InterSystems Caché

统一的多模型架构

在 Caché 中,数据可以建模并存储为表格、对象或多维数组(层次结构)。不同的模型可以无缝地访问数据,而无需在模型之间进行消耗性能的映射。Caché 内置支持动态数据对象(如:XML 和 JSON)的模块,因此可以实现 Web 应用的简易互操作和快速开发。

高效的查询

SQL 是跨越所有数据模型查询 Caché 数据的通用语言。因为采用了高效的数据架构,所以 Caché 可以提供比其他数据库技术更快的 SQL 性能。它既支持传统的索引,也支持可用于实时交易数据的位图和位片索引。

分布式系统

InterSystems 企业缓存协议(InterSystems Enterprise Cache Protocol)允许众多服务器表现得像单一数据库,从而大幅度提升分布式应用的可扩展性和性能。

通过数据库镜像实现高可用性

Caché 数据库镜像无需高投入的硬件、支持、操作系统许可或存储。此外,Caché 数据库镜像还易于安装和维护,因此管理成本极低。

安全模式

保护静止数据和运动数据,同时最大限度地减轻应用性能的负担。

应用开发

Caché数据库以M技术进行开发,提供了Caché ObjectScript对象脚本语言的独立开发工具Studio,能够基于Caché数据库进行数据库、Web应用等开发,并且面向Java、.Net等其他语言及技术也提供了相应的接口实现对接。内置了Terminal等工具能够实现应用开发的调试等。

Caché Studio

Caché优势(引用自《Caché 面向对象软件开发教程 2004》)

Caché 提供不仅是一种单纯的数据库技术。在 Caché 中包括一个应用服务器,这个服务器提供高级对象编程,并且可以很容易地与很多技术集成。Caché 还提供高性能的运行环境,这一运行环境采用了独特的分布式数据缓存协议技术。

Caché 2016

Caché 还在另一方面远远胜过了传统的数据库技术。Caché 为开发复杂的、基于网页应用程序提供了丰富的集成开发环境。Caché Service Page(CSP)技术可以进行快速开发,动态产生。上千个用户甚至在在比较差的硬件条件下也可以同时访问数据上的应用程序。

对于那些不基于浏览器的应用,用户接口可以用任何一个流行的程序设计语言来编写,例如可以任意选用程序员自己熟悉的 VB,Delphi,Java,或者 C++ 来编程。剩下的工作都交给 Caché 运行,这样可以得到 好的结果( 快的编程效率, 高的性能, 低的维护成本)。另一方面,Caché 也提供了与其他技术的交互,支持大多数通用的开发工具,所以开发方法的选择范围很大。

Caché Management Portal

与关系型数据库不同,Caché 以多维数组存储数据,而关系数据库以两维表存储数据。Caché 除了使现实数据建模成为可能,还因为减少了表连接等处理过程(这在关系型数据库中是非常频繁的),所以运用多维数组能更快地存取数据。Caché 从它的独特的数据机构中获得了许多强大功能,关键之处在于 Caché 的数据库引擎为我们提供了一套完整的服务:包括数据存储、并发管理、事务处理、和过程管理,这就为我们提供了强大的可用于建立复杂管理系统的功能和工具。

Caché 的另一个提高性能的特征就是 Caché 具有独特的分布式缓存协议,它大大减少了分布式系统中的网络通信吞吐量。在有的客户所进行的数据库应用程序性能的比较测试中,Caché 数据库的响应性能要比关系型数据库快 20 倍。

Caché Terminal

虽然在 Caché 中数据是以多维数据结构形式存储的,但 Caché 允许开发者用任何他们选择的方式进行数据建模:对象,表格,或者多维数组。Caché 拥有一个非常易用的图形界面开发环境来建立和开发 Caché 对象。 Caché 还可以接受从 Rational Rose 对象建模工具或以 DDL 文件(数据库定义语言)形式的导入。

Caché 统一的数据架构使所有数据都能以对象和表格形式被访问。既不需要为从一种数据形式到另一种数据形式进行映射,也不需要为不同数据形式的转换进行处理。统一的数据架构提高了编程效率和应用程序性能。

Caché 提供了与 Web 连接和其应用程序开发平台,这些都进一步提高了效率和延展性。在 Caché 独特的网络架构中, Caché 服务器页面( Caché Sever Pages )在数据服务器上运行,与他们要存取的数据放在一处。这样不但提高了效率而且通过降低网络服务器的负荷而大大提高了延展性,从而能处理更多的浏览器请求。

Caché Document

Caché 运用对象技术的快速开发能力来开发 Caché 服务器页面。每一个 Caché 服务器页面本身就是一个对象,它能从 InterSystems 提供的系统对象中继承会话管理方法和各层安全策略。这就使应用程序开发者不需要再开发大量单调的系统代码来维护使用会话期(Session )对象的状态。利用对象继承也保证了能快速地浏览应用程序的所有页面。

此外,因为允许网页设计者和应用程序开发者可以平行地进行开发来完成任务,Caché 便简化和加速了 web 应用开发过程。网页设计者可以运用熟悉而易用的工具,通过添加 Caché 应用程序标记( CAT )来增加网页功能,这项工作类似于通常的添加标准的 HTML 标记的工作。 Caché 不仅提供了一些标准功能的 CAT ,而且还可以户自己定制 CAT 。当应用程序开发者编写 CAT 来完成实用的功能时,不需要考虑包含它们的网页样风格样式的设计。这样就能更快和更有效地开发 web 应用程序,缩短产品进入市场的时间。

小结

Caché数据库的知名度虽然不高,但其独特的特性、检索的快速、应用开发的兼容与稳定性使其在医疗卫生行业一枝独秀,在医疗数字化的实际应用场景中,提供了可靠的后台支持与扩展便利性。

此专栏会陆续增加一些文章,记录作者使用Caché数据库进行开发的一些问题与心得,为本人一些个人的经验与见解,欢迎参与讨论。

知乎一个用户的评价我觉得还是非常到位的,特摘录如下:

一个1970年的pre relational数据库,用着一个1966年的第一代高级语言MUMPS作为脚本语言,现在居然乘着NoSQL的浪潮标榜自己是post relational 数据库,明显带有宣传色彩。
NoSQL定义本不太明确,但是成功的NoSQL数据库都贯彻着do one thing and do it well的原则,身怀绝技,为特殊场景的数据存储和查询提供资源上的高效和/或开发上的便利。而反观Cache,自诩提供Key-value,SQL,Document、Object等多种模式,实则,KeyValue模式不如Redis灵活,SQL模式不如Postgres开放,Document模式比Mongo晦涩,Object模式摆脱不了MUMPS语言的封闭生态。更别提全文搜索、时序数据、图数据这些了,根本没有。拿什么和ElasticSearch,InfluxDB,Neo4j比?
Cache为政府、银行、医院等大单位提供了运维服务,提供了风险规避。但是除开这些,对于中小型企业或个人,它除了是一个没有什么特色的NoSQL/SQL数据库以外,似乎也只能成为“我不想学其他技术”的借口。

Caché 现在自己也在给自己刷存在感,说是一个 post relational 数据库,这个本身就是不严谨的。

Caché 数据库的出现比 R 关系数据库还要早好几年,所以 Caché 本身就是一个文本或者说是文件数据库。

为了就是在有限机器情况下提高查询效率的工具,Caché 的设计和 NoSQL 的思路应该不是完全相同的,Caché 大量使用数组来对数据进行存储。

生态实在是太封闭了。