Bottled Water-PostgreSQL与 Kafka的实时数据整合

Bottled Water-PostgreSQL与 Kafka的实时数据整合

Bottled Water: PostgreSQL与 Kafka 的实时数据整合

英文版: Bottled Water: Real-time integration of PostgreSQL and Kafka 中文版: Bottled Water: PostgreSQL与 Kafka 的实时数据整合

写数据库相对容易,读数据库则异常困难。当然,如果你只是查询数据库,拿到一部分值,也还行。但如果你想要将整个数据库中的数据复制到其他系统中去,比如使用Elasticsearch来 做索引,做快速的pre-fill缓存,或是将数据导入到一个数据仓库供统计分析,或是迁移到其他类型的数据库中。

如果数据不会发生变更,实现起来也很简单。只需要一份数据库的快照(通过备份dump整个数据库),复制然后载入到其他系统即可。但问题是如果数据库是持续变更的, 在你载入数据的时候快照中的数据已经不是最新的,即使你采用每日一次快照的方式,在下游系统中你只能拿到滞后一天的数据,对于数据量大的数据库而言,快照和大数据量的加载(bulk load 本身成本就很高。

从一个数据库复制数据到另外的系统中有哪些解决方案呢?

  • 1、第一种是系统实现双写“dual writes”。每当系统进行数据库的写操作的时候,同时更新/校验缓存条目,对搜索引擎的数据重新索引,将数据发送到用于统计分析的系统等等

然而之前我就谈到,双写的方法其实是有很多问题的,主要是Race Condition(也叫做资源竞争)和可靠性的方面。如果稍有差异的数据写到2个不同的数据库中,数据库的内容会慢慢的相差甚远,随着时间的推移会变得越来越不一致。 要想从这样的渐进式的数据损坏中恢复是很困难的。

  • 2、CDC 变更数据捕获 如果是从数据库的快照中重新构建缓存或索引,这样做的好处在于从新的数据库备份中重新构建时会消除任何的不一致性。但对于大型数据库而言,每天要处理整个数据库备份速度太慢,效率太低,怎么样才能提速呢?

典型的,不同的快照之间数据库只有一小部分会发生变化。如果你只是处理自上次快照之后数据库中发生的那些变更?这样只用处理一小部分数据,也可以频繁的进行比对。比如说每分钟比对一次,每秒比对一次?1秒100次呢?

当比对频率达到极限的时候,数据库的变更就变成了stream流。每次写数据库时,也就是流中的一条消息。如果你把这些消息严格按照原来数据提交时的顺序应用到数据库上,你就可以得到一份和数据库一模一样的副本,这其中的原理也就是数据库复制的原理

复制的方法来保持数据同步比双写的方法要好一些。首先,你只需要写一个数据库。然后从数据库中拿到2个东西: 1、某时刻下满足一致性的快照 2、自那个时刻之后的实时的变更流

你可以将快照导入到其他系统(比如搜索索引或缓存),然后持续的应用这些实时的变更。如果管道是警告调优的,那么你的延迟可能低于1秒,下游系统也可以保持尽可能最新。由于变更流本身包括了写的顺序,资源竞争就不再是问题

这种方法常常称为变更数据捕获,目前现有的一些工具都不是很好用。但在一些公司里,CDC已经成为了系统构建的关键模块,比如Linkedin有Databus。Facebook有Wormhole

CDC 变更数据捕获能够让你释放你已有数据中的价值。你可以将数据“喂”给一个中心式的数据流 这样就可以实时与来自其他数据库的数据或时间流整合起来。这种方式使得新的数据分析或新的数据格式试验更加容易,允许你以一种最小化的风险渐进式地从 一个系统迁移到另一个系统,也比 data corruption更加健壮,如果出了任何问题,你都可以很快的利用快照和流恢复数据库。

获取实时的变更流

获取数据库的一致性快照是一个通用的特性,因为你需要利用它进行备份。但获取实时的变更流是传统数据库一直忽略的一个功能。 Oracle GoldenGate, the MySQL binlog, the MongoDB oplog or the CouchDB changes feed 都是类似的功能,但要想用好都不是那么容易。近来一些数据库如 RethinkDB or Firebase 正在朝着实时变更流的方向努力。

这里我们主要看看PostgreSQL. 它是一个很古老的数据库,但是很好用,很稳定、性能不错,也拥有绝大多数的功能

以前你如果想从Postgres中拿到变更流你必须使用触发器。这样是可以实现,但fiddly,需要变更schema,且性能不大好。但去年12月份发布的Postgresql 9.4引入了一种叫 logical decoding逻辑编码的新特性,

有了logical decoding之后,Postgres的变更数据捕获突然变得更加吸引人。因此,当发布了这一功能之后,我立即利用这一特性开始为Postgres构建一个变更捕获工具Confluent赞助了我这个项目,目前我们发布了一个alpha的开源版本 Bottled Water.

Bottled Water: Data streams freshly bottled at source

Bottled Water简介

Logical decoding利用了数据库的write-ahead log (WAL),能够让我们访问行级别的变更事件:每次一张表的某一行出现插入、更新删除操作。这类事件是利用事务来分组的,是以它们提交到数据库的顺序出现的。流中并不会记录Aborted/rolled-back事务。因此,如果你以同样的顺序应用这些变更事件,就能得到一个与数据库的事务保持一致的副本。

Postgres logical decoding 的设计是很精巧的:利用变更流能够构建出一个一致性的快照来。你可以使用快照来做整个数据库某个时间点的备份,无需锁库即可完成备份,然后通过变更流获取所有自快照之后发生的写操作。

Bottled Water 利用这些特性来复制数据库中的所有数据,将数据编码成 Avro format格式.然后把编码后的数据发送给Kafka — 数据库中的每张表作为一个Kafka topic,数据库中的每一行作为Kafka中的一条消息。

一旦数据导入到Kafka里面,你可以按你所需来编写Kafka consumer that does whatever you need:发送数据给Elasticsearch, 生成一份缓存,在 Samza job中进行处理, 利用Camus将数据导入到HDFS with … 等等

为什么选择 Kafka?

Kafka 是一个消息系统,以大量事件的传输闻名,诸如web服务器日志,用户点击事件。在Kafka里,此类事件通常保留一段时间然后就丢弃掉。 Kafka是否真的适合数据库的变更事件。我们不希望丢掉任何的数据库数据。

事实上, Kafka 是不二之选— 最关键的是Kafka’s log compaction feature, 简直就是为了这个目的量身定做的. 如果你启动log compaction,就不会存在按照时间对数据进行丢弃。相反,每个消息都有一个key,Kafka会无限保留某个 key对应的最新的消息。某个key值之前的消息最终通过garbage-collected来采集。这与key-value键值数据库中使用新的值覆盖旧的值是一样的道理。

Bottled Water确定了 (or replica identity)Postgres中每张表的主键,并将其用作发送给Kafka消息的主键。消息值取决于事件的类型:

  • 对于插入和更新操作,消息值包含了每行所有字段的值,编码成Avro格式
  • 对于删除操作,消息值为null。这样 Kafka 就会在 log compaction时移除消息,这样就释放了磁盘空间

通过log compaction,你不再需要一个系统来存储整个数据库的快照,用另一个系统来处理实时的消息-二者可以在同一个系统中并存。 Bottled Water把最开始的快照按照数据库中每行作为一个消息发送给Kafka,主键作为消息的key,发送给所有Kafka brokers.当处理完了快照,插入的、删除的或更新的每行都被转换成一条消息。

如果某一行频繁更新的话,同一个key就会存在多条消息(每次更新都会产生一条消息)。所幸的是,Kafka’s log compaction会对其进行排序,对以往的值进行garbage-collect处理,这样就不会浪费磁盘空间。另一方面,如果某一行从不更新或删除,在Kafka中也再也不会发生变化,-永远不会进行 garbage-collected.

整个数据库的备份和实时流位于同一个系统中是很有益处的。如果你想从头开始构建一个下游的系统,你可以从一个空的数据库开始,慢慢consuming Kafka topic,浏览所有的topic, 将每一条消息写入到你的数据库当中。完成之后,你便得到了整个数据的最新副本。另外,你可以通过不断的消费流数据来保持最新。给原有的数据做一些新的视图相当之容易。

用Kafka的方式来维护数据库的副本给熟悉传统的企业消息和局限性的人带来了诸多惊喜。事实上,这个应用场景也正是为什么Kafka是基于 replicated log abstraction所构建的:它使得这样一类大规模的数据data retention and distribution 保持和分发成为了可能。下游系统可以自己的意愿重载和重新处理数据,不会影响要求低延迟查询的上游数据库的性能。

为什么选择 Avro?

从Postgres抽取的数据可以编码成JSON, or Protobuf, or Thrift,或其他任意格式. 但是,Avro才是最佳选择。Gwen Shapira 曾经撰文讨论了Avro在schema management中的优点,我也写过一篇 Avro 与Protobuf and Thrift比较的文章 .Confluent流数据平台指南 stream data platform guide中给出了为什么Avro 适合于数据集成的若干理由。

Bottled Water首先检查数据库表的schema,自动为每个表格生成Avro schema,利用Confluent’s schema registry对schema进行注册,将schema的版本嵌入到Avro中 以消息的形式发送给Kafka。也就是说是于流数据平台serializers一起使用:你可以将Postgres中拿到的数据以有价值的业务对象和丰富的数据类型来使用,无需编写大量的解析代码。

Postgres datatypes 到 Avro的转换已经基本上很全面了,涵盖了所有常见的数据类型,提供了一种lossless and sensibly的类型转换。后续我打算对其进行扩展以支持所有Postgres内置的数据类型-虽然工作量很大,但是是值得的,因为一个好的schema对于数据是相当重要的。

Inside the bottle factory

logical decoding输出插件

Postgres’ logical decoding feature的一个有趣之处在于说它并没有定义一种wire format来表示在网络中如何传输变更数据。相反,它定义了output plugin API, 其中对于每一次插入、更新或删除都会收到一个函数调用。 Bottled Water使用这个API来读取数据库内在格式的数据,并将其序列化成Avro格式。

由于 Postgres 扩展机制的原因,输出插件必须用C来编写,并且以共享库的形式导入到数据库服务器中去。这里要求使用超级用户的权限和数据库服务器的文件 访问权限,所以并不是很容易就完成的。这里我理解很多数据库管理会被在数据库服务器上运行自定义代码所吓到。不幸的是,这是目前能够使用logical decoding的唯一方式

所幸的是,你无须在主数据库中安装该插件-你可以使用从属机(replica, hot standby).这样你就能保证该插件不会损坏你的数据,引起主数据库的崩溃或影响其性能。

Bottled Water architecture

** client daemon**

除了数据库服务器上运行的插件之外, Bottled Water还包含了一个你可以在其他地方运行的客户端程序。它能够连接Postgres 服务器,能够连接 Kafka brokers,接收来自数据库的Avro格式编码的数据,将Avro数据推送给 Kafka。

客户端是使用C编写的,是因为这样使用Postgres 的客户端库文件的最简单的方式,由于客户端和插件之间一部分代码是复用的,相当轻量级,且无须写到磁盘中。

如果客户端发送崩溃,与Postgres or Kafka的连接发生中断会有哪些影响?完全没影响。它会跟踪那条消息已经发布过了,那条消息Kafka brokers已经确认过了。 当出错之后重启客户端时,它会重新发送哪些没有确认过的消息。因此Kafka 中一些消息可能会出现2次,但不会有数据丢失。

相关工作

其他人解决同样问题所做的工作:

  • Decoderbufs是一个试验性的Postgres plugin by Xavier Stevens,将变更流转换成Protocol Buffers 格式.它只是提供 logical decoding plugin —并不包括一致性快照或客户端的部分 (Xavier提到他以前写过一个客户端,读取Postgres中的数据写到Kafka,但目前还不是开源的).
  • pg_kafka (同样是Xavier写的) 是一个Postgres函数形式的Kafka producer client,你可以使用触发器来生成数据给Kafka
  • PGQ 是一个基于Postgres的队列实现, Skytools Londiste (developed at Skype)使用它来做基于触发器的复制。 Bucardo是另一款基于触发器的复制器。就我理解基于触发器的复制是有些黑客味道的(相当有技术含量), 要对schema进行变更,需要fiddly的配置,要承担巨额的花销。另外,这些项目似乎都没有得到PostgreSQL core team的认可,而 logical decoding is fully supported.
  • Sqoop 最近增加了支持writing to Kafka. 就我所知,Sqoop只能利用数据库的完整快照,无法捕获持续的流数据,同样也无法保证不同快照之间的事务一致性
  • 对于MySQL, James Cheng整理了从MySQL into Kafka的change capture projects的列表,这些项目主要围绕着binlog的解析,并没有做一致性快照的部分、

Bottled Water目前的状态

目前, Bottled Water只是一款alpha的软件.充其量也就是个概念验证— 虽然经过了详细的设计和实现—但仍未在现实世界的系统中得到测试。现阶段还不适合在生产系统中使用,但经过一些测试和调整,希望将来能用在生产系统之中。

我们将其以开源的形式发布出来是希望能够得到社区的反馈。同时,知道我正在完成这个项目的人一直在帮我测bug。

README 包含了如何入门的更多信息。

Related Posts

译自2011- A Year in Review at HIMSS12 by Keith Boone

译自2011- A Year in Review at HIMSS12 by Keith Boone

译2011: A Year in Review at HIMSS12 by Keith Boone Keith Boone是我一直在关注 在follow的老头子,虽然好像还是蛮年轻 ,一直找不到很好的地方 很好的网站 大多数网站在外面实验室糟糕的代理模式下是压根发表不了新帖的。不幸的科学网就这样躺在中枪了。 周一 2月20日 2012 2011:HIMISS12 过去一年的回顾 通常H

read more
CDA快速入门

CDA快速入门

在大概了解了CDA文档实例的模样,手头上也有了各式各样自己喜好的XML编辑器,那么我们可能就希望实践一把。该怎么做呢? 如果你希望先了解CDA前前后后的一些东西,那么你需要看看下面的PPT 1.参考各个机构所带来的对CDA介绍的PPT 台湾范士展老师整理的相关资料 [mayo的资料](http://dl.dbank.co

read more
Health eDecision 项目收尾Clinical Quality Framework项目启动

Health eDecision 项目收尾Clinical Quality Framework项目启动

[原文链接](http://www.healthit.gov/buzz-blog/electronic-health-and-medical-records/interoperability-electronic-health-and-medical-records/standards-interoperability-framework-milestones-health-edecision

read more
Data Versus Information- The EMR Readability Problem  by  Bruce Friedman

Data Versus Information- The EMR Readability Problem by Bruce Friedman

两篇来自 Bruce Friedman的博文 http://labsoftnews.typepad.com/lab_soft_news/2012/08/data-vs-information-the-emr-readability-problem.htmlhttp://labsoftnews.typepad.com/lab_soft_news/2012/08/data-vs-informati

read more
EHR架构与设计相关材料

EHR架构与设计相关材料

EHR Architecture and Design by Jerome Carter on March 25, 2013 **Updated August 26, 2014 **<span style="color

read more
对FHIR的一些浅显认识

对FHIR的一些浅显认识

FHIR标准 大多数在HIT这个行业浸淫略久的人都听到过HL7的字眼,HIT 行业的标准不外乎有2个目的,交互共享数据(HL7 V2消息,V3消息,CDA,X12,共享文档规范诸如此类),表达医疗行业的知识(各类术语字典,数据集数据元标准,Arden syntax,CDSC,GELLO诸如此类),而FHIR应该归属于第一类,与它的前辈不同的是,它抛弃了既往顺着发展了10多年,乃至于20年的那块

read more
FHIR——介绍

FHIR——介绍

http://www.hl7.org/implement/standards/fhir/introduction.htm 介绍Introduction Fast Healthcare Interoperability Resources 定义了一个医疗卫生资源的集合。这些资源所表达的是一个个模块化的医学概念,通过交换它们以达到在医疗保健及相关流程中快速高效地解决问题。这些资源涵盖了医疗卫生的基

read more
FHIR概览

FHIR概览

自去年Grahame Grieve引出v3 has failed的讨论之后,RFH的出现似乎给HL7带来了一些生机。从RFH到FHIR 自是经过一番努力。越来越多的人对此表示出极大的兴趣,菜鸟我也不例外。故拟在后面的一些篇章中对目前所有的一些的资料进行一些简单的介绍和试译。 来到Grahame Grieve自己维护的博客主站(链接)上,在右侧links处即可看到一些相关信息,点击Fast Hea

read more
译自Good Exchange Specifications- Microsoft vs Apple  by Grahame Grieve

译自Good Exchange Specifications- Microsoft vs Apple by Grahame Grieve

译自Good Exchange Specifications: Microsoft vs Apple by Grahame Grieve 构建一个标准之初你必须要做的选择之一是如何进行领域分析。这是一个你如何使用story board故事版的问题。这里有苹果的做法,也有微软的做法。 苹果的做法 苹果的方法很简单:你以文档形式记录下你的story board,然后为你所接受的story

read more
HL7 need a fresh look

HL7 need a fresh look

此间,由Grahame Grieve发表的一篇题为HL7 Fresh Look Task Force的博文引起了人们的热烈的讨论,RIMBAA的邮件列表里讨论了很久,随后Grahame Grieve 又发表一些后续的相关博文,Keith Boone也有一些,今日又看到Wes Rishel的一篇题为Lessons From the Putative Failure of HL7 V3的博文,当然

read more
how to understand  Health Concern

how to understand Health Concern

Health Concern的概念是我一直捉摸不透的, 为什么要有这样的一个概念 最近在FHIR 的mailing list上有一些探讨 收集以供自己了理解The conundrum of the observation-concern-

read more
译自Implementing IHE SVS Over the Trifolia Consolidated CDA by  Keith Boone

译自Implementing IHE SVS Over the Trifolia Consolidated CDA by Keith Boone

Friday, March 9, 2012 BY Keith Boone Implementing IHE SVS Over the Trifolia Consolidated CDA Database 这个32行的程序是为了让JSP页面能够根据Trifolia Workbench database 构建一个 IHE SVS Value Set 的实现。它完全没有处理任何错误,如果变量匹配

read more
译Introducing NHIN Direct NHIN Direct的介绍 by Keith Boone

译Introducing NHIN Direct NHIN Direct的介绍 by Keith Boone

原文链接 之所以关注这篇文章的作者是因为之前一直在看Keith Boone的Blog,从他的首页上看到了几个人的Blog的外链,Keith这么胸猛,他推荐的人自然不会逊色。他们也将成为我在茫茫Healthcare Standards的知识海洋中学习的几

read more
译自Liberating Consolidated CDA Templates from the Trifolia  Keith Boone

译自Liberating Consolidated CDA Templates from the Trifolia Keith Boone

Tuesday, March 6, 2012 By Keith Boone Liberating Consolidated CDA Templates from the Trifolia Workbench Data CDA Consolidation project的目标之一是从模板的模型驱动数据中自动化的构建验证和开发工具。我曾期望与MDHT项目有更加紧密的合作,我希望最终能够实现。几个星期

read more
译《A Perfect Implementation Guide》by Keith Boone

译《A Perfect Implementation Guide》by Keith Boone

分类: What the New Meaningful Use Standards for Electronic Health Records Mean 原文链接 http://www.dietsinreview.com/diet_column/07/new-standards-for-electronic-health-records/ 就在周二,联邦政府发布了题为“Electronic

read more
译自The XSLT document() function  by  Keith Boone

译自The XSLT document() function by Keith Boone

Thursday, January 26, 2012 BY Keith Boone The XSLT document() function 有人在Structured Document 工作组邮件列表中问了一个如

read more
译自Value Sets and QueryHealth  by  Keith Boone

译自Value Sets and QueryHealth by Keith Boone

Tuesday, November 1, 2011 By Keith Boone Value Sets and QueryHealth Query Health的一大难题就是一个特殊的measure就可能引用大量的编码值。在HL7中

read more
译《A Perfect Implementation Guide》by Keith Boone

译《A Perfect Implementation Guide》by Keith Boone

Tuesday, February 1, 2011 A Perfect Implementation Guide 英文原文链接 在上周HL7/IHE/ONC Consolidation Project的电话会议上,其中两个人同意新增

read more
a-review-of-all-most-common-api-editor-API-Specification-Automated-Testing-Documentation-Generation

a-review-of-all-most-common-api-editor-API-Specification-Automated-Testing-Documentation-Generation

需求1、DSL:要能够使用DSL来描述定义API 2、DSL编辑工具:要有易用的编辑工具来编写API定义 3、API的校验:最终的AP定义要能够可执行,可以用来确认API的动作 最好是cURL或者浏览器的服务交互来分析请求响应 4、API文档:从API定义中可以自动生成文档 5、解析器:支持多种语言,能从IDL中生成客户端代码,java、js、php、ruby、pytho

read more
<微服务架构在Netflix的应用>系列博文-4 微服务架构在Netflix的应用:团队和流程设计相关的经验教训

<微服务架构在Netflix的应用>系列博文-4 微服务架构在Netflix的应用:团队和流程设计相关的经验教训

第四篇-微服务架构在Netflix的应用:团队和流程设计相关的经验教训 <微服务架构在Netflix的应用>系列博文-共四篇 英文版: [第一部分: The Four-Tier Engagement Platform]((http://blogs.forrester.com/ted_schadler/13-11-20-mobile_needs_a_four_tier_eng

read more
CDA文档编辑器

CDA文档编辑器

CDA文档均为XML文件,故我们采用一些市面上常用的XML编辑软件。列举如下: 1.Oxygen XML Editor 它是一款基于Java的XML编辑器,支持XML, XSL, TXT, XSD, DTD文档,能自行校验XML, XSL, XSD代码,提示脚本错误。Oxygen能自动完成结束标签,代码高亮现实,支持Unicode。 Oxygen XML Editor是一款简洁并且功能一流

read more
CDA文档实例

CDA文档实例

关于CDA R2的学习,很多人可能想直接看看这样那样的一些例子,下面是我所搜集的一些 1.来自Rene Spronk整理的压缩包,里面有丰富的内容 包含了很多国家不同项目的一些实例 下载链接一(原作者提供的) [下载链接二(方便一些无法下载一)](http://dl.dbank.

read more
 第一篇-CDS应该集成到那些业务流程当中

第一篇-CDS应该集成到那些业务流程当中

一.美国卫生部的网站上对这个问题进行了一个归纳和总结,见Workflow Taxonomy,大致上翻译了一个版本参考附件[Reference Taxonomy of Clinical Workflows.xlsx](http://

read more
译自Defining a Summary Care Record for MeaningfulUse Stage2 by Keith Boone

译自Defining a Summary Care Record for MeaningfulUse Stage2 by Keith Boone

Wednesday, March 14, 2012 By Keith Boone Defining a Summary Care Record for MeaningfulUse Stage2 作者在文中提到“他在昨天的post中 描述了Meaningful Use Stage 2 rules中所存在的对于Summary Care Record的描述的混乱之处。今天他将进一步来简化它们。

read more
一些关于encounter就诊的概念

一些关于encounter就诊的概念

文中的文字和图片均来自http://gforge.hl7.org/gf/project/patient-admin/docman/?subdir=311

read more
一些读医学信息学论文时遇到专业词汇的解决办法

一些读医学信息学论文时遇到专业词汇的解决办法

读论文是每个学生必修课之一 不管是主动抑或被动 其中一些专业词汇 对于我等非医学专业的it逼来说 着实困难。 解决办法 1网上查呗 最直接的就是google 关键词 如 episode of care 请具备基本的鉴别能力 推荐网站 http://www.reference.md/ 应该是美国FDA的网站吧 还是比较全 http://www.wisegeek.com/health.htm

read more
关系型数据库向KAFKA迁移 FROM RELATIONAL INTO KAFKA

关系型数据库向KAFKA迁移 FROM RELATIONAL INTO KAFKA

关系型数据库向KAFKA迁移 FROM RELATIONAL INTO KAFKA 英文版: FROM RELATIONAL INTO KAFKA 中文版:[关系型数据库向KAFKA迁移](http://wanghaisheng.github.io/2015

read more
Github pages 个人主页和项目主页的不同设置

Github pages 个人主页和项目主页的不同设置

Github pages 个人主页和项目主页的不同设置 如果你想利用github pages来搭建属于自己的博客 亦或是为某个小项目做一个宣传页面 这里有点小坑 大家需要提防一下。 1.如果你想做一个个人主页的话,比如我在github建了这样一个repo,除了需要有

read more
中文版GraphQL标准

中文版GraphQL标准

title: 中文版GraphQL标准 date: 2015-07-29 16:52:33 updated : permalink: tags:API GraphQL categories: API 译文GraphQL Working Draft – July 2015 Introduction This is a Draft RFC Sp

read more
API 文档编写工具

API 文档编写工具

API 文档编写工具 https://github.com/mashery/iodocs

read more
理解JSON Schema

理解JSON Schema

1、http://spacetelescope.github.io/understanding-json-schema/index.html 2、https://github.com/e-plus-healthcare-alliance/Open-mHealth-generic-and-clinical-schemas 理解JSON Schema

read more
 从零开始学临床决策支持 CDSS-第一篇 扒扒美国卫生部网站上的资料

从零开始学临床决策支持 CDSS-第一篇 扒扒美国卫生部网站上的资料

美国卫生部网站上有关CDS的内容 What is Clinical Decision Support (CDS)? Clinical decision support (CDS) provides clinicians, staff, patients or other individuals with knowledge and person-specific information,

read more
从零开始学临床决策支持CDSS-第二篇 如何将临床决策支持与医疗信息系统的业务流程整合起来

从零开始学临床决策支持CDSS-第二篇 如何将临床决策支持与医疗信息系统的业务流程整合起来

title: 从零开始学临床决策支持CDSS-第二篇 如何将临床决策支持与医疗信息系统的业务流程整合起来 date: 2015-2-11 19:53:12 updated : permalink: tags:医疗信息标准 CDSS HIT 临床决策支持 categories: 医疗信息标准 临床决策支持如何将临床决策支持与医疗信息系统的业务流程整合起

read more
<微服务架构在Netflix的应用>系列博文-3 微服务架构在Netflix的应用:架构设计的经验教训

<微服务架构在Netflix的应用>系列博文-3 微服务架构在Netflix的应用:架构设计的经验教训

第三篇-微服务架构在Netflix的应用:架构设计的经验教训 <微服务架构在Netflix的应用>系列博文-共四篇 英文版: [第一部分: The Four-Tier Engagement Platform]((http://blogs.forrester.com/ted_schadler/13-11-20-mobile_needs_a_four_tier_engagemen

read more
<微服务架构在Netflix的应用>系列博文-1 移动应用所需要的四层架构

<微服务架构在Netflix的应用>系列博文-1 移动应用所需要的四层架构

第一篇-移动应用所需要的四层架构 <微服务架构在Netflix的应用>系列博文-共四篇 英文版: 第一部分: The Four-Tier Engagement Platform 中文

read more
医疗开源实现

医疗开源实现

Cross Enterprise Document Sharing 跨机构文档共享 IheOS http://sourceforge.net/projects/iheos/ IheOS源自NIST本来做原始的XDS规范测试的(现在不做这个了)的参考实现的工作。Bill Majurski是XDS的创始人,并且不止是XDS规范的核心人员之一,也是这个开源项目的核心之一,也是很多由IHE开发

read more
openCDS系列 I——内部数据结构

openCDS系列 I——内部数据结构

译自Notes on OpenCDS Internal Data Structure 目的 openCDS的内部数据结构大致上是基于HL7 2011年9月份投票版中VMR(虚拟医疗记录)的逻辑模型。该逻辑模型中严格定义了所有的数据元素,数据元素的定义都有对应的内部数据结构。 内部数据结构更多地与schema保持一致,schema是对逻辑模型的说明性补充材料。schema 提供了2种方式来定义

read more
openCDS系列 II——使用openCDS中的概念

openCDS系列 II——使用openCDS中的概念

使用openCDS中的概念Using OpenCDS Concepts内容 1 什么是openCDS中的概念1.1概念类型1.2openCDS中的概念1.3概念映射规范1.4概念映射实例<div

read more
共同构建互联网医疗大共荣圈-FHIR标准的汉化和产品的开发

共同构建互联网医疗大共荣圈-FHIR标准的汉化和产品的开发

互联网医疗在过去的一年里如火如荼,希望大家能够一起来汉化和开发FHIR相关的产品 FHIR – Fast Health Interoperable Resources (hl7.org/fhir) – 是由HL7创建的新一代标准框架.FHIR 整合了 HL7 V2,V3 和 CDA 的优点,同时利用了最新的Web标准,紧紧围绕着 implementability 可实现性. FHIR 解决方

read more
病人记录的健康信息PGHD指南

病人记录的健康信息PGHD指南

病人记录的健康信息PGHD指南 为的是定义和提出一个将患者记录的健康信息整合到临床实践中的流程。有人在GG的博客上问了这样的一个问题,随着各种穿戴式设备和消费者端的网站越来越多,如何使用Fhir来记录和表达患者记录的健康信息,这些信息又如何与传统的医疗信息系统整合,在患者的诊疗

read more
病人记录的健康信息PGHD概念

病人记录的健康信息PGHD概念

病人记录的健康信息PGHD patient-generated health-information (PGHI) or patient-generated health data (PGHD). 这样一些在医院、医疗机构之外由患者或护理人员创建、收集、记录的与某个健康问题相关的观察、检验结果、 抑或是对已有EHR中某项数据的确认或变更等信息。 这样的信息在患者诊疗或健康管理过程中究

read more
piqi学习

piqi学习

#piqi学习 *目标一:·piqi是什么 *目标二:piqi与FHIR整合的可能性评估 *目标三:piqi用在文档内容校验上的可能性 *目标四:基于piqi的消息引擎的设计 ##piqi FAQ *1. piq和JSON的区别在哪里Piq语言适合与人机交互,JSON则只是一种标准的、轻便的、高效的结构化数据的表达方式。 The Piq language is optim

read more
Docker玩转Rhadoop

Docker玩转Rhadoop

Docker 玩转 RHadoop 网络上已经有了太多的 RHadoop 的安装使用的教程,鉴于其中的配置配置繁复,对软件版本的要求又极其苛刻,故笔者想用时下热门的 docker 来尝尝鲜,以下是心路历程,供看客参考,希望能给大家一些帮助。 1、软硬件环境 操作系统:OXS 10.10.1 docker安装版本:boot2docker(推荐大家使用https://gi

read more
Yelp公司总结的微服务架构的实践经验

Yelp公司总结的微服务架构的实践经验

Yelp公司总结的微服务架构的实践经验 英文版: Service Principles 中文版: Yelp公司总结的微服务架构的实践经验/ Service

read more
显示特定的标签值

显示特定的标签值

From looking at your XSLT and expected results, it looks like that for each a element in your XML, you want to output infomation on the following c elements present, if any occur before the next a e

read more
关于科研-启动翻译计划

关于科研-启动翻译计划

关于科研-启动翻译计划 一个人的战斗 两个人的战斗 三年的时间眨眼间逝去 无outcome可言 可我也self-study了不少。 决定了的事就去做 每天进步一点点 书籍 Principles of Health Interoperability HL7 and SNOMED Benson, Tim 1st Edition., 2010, XXIV, 263 p. 68 illus

read more
<微服务架构在Netflix的应用>系列博文-2 是时候转移到四层架构上来了

<微服务架构在Netflix的应用>系列博文-2 是时候转移到四层架构上来了

第二篇-是时候转移到四层架构上来了 <微服务架构在Netflix的应用>系列博文-共四篇 英文版: 第一部分: The Four-Tier Engagement Platform 中

read more
TWITTER REST API研究

TWITTER REST API研究

原文标题:REST APIs 原文作者:Twitter Inc 原文来源:Twitter Inc 译者: edwin_uestc REST APIs 这样就能够以编程的方式读写Twitter数据。发一条推或者读取某个人

read more
ubuntu下sqlplus上下光标键乱码解决方法

ubuntu下sqlplus上下光标键乱码解决方法

ubuntu下sqlplus上下光标键乱码解决方法 我的系统是ubuntu10.10,oracle版本为10gXE 遇到如题所述的问题时,可以这样解决该问题: 1 、安装插件: sudo apt-get install rlwrap 2、在当前用户下设置一个命令别名: alias sqlplus='rlwrap sqlplus' 3、重新键入

read more
读< 与Roy Fielding谈论版本化、超媒体以及REST >

读< 与Roy Fielding谈论版本化、超媒体以及REST >

第一篇,读< 与Roy Fielding谈论版本化、超媒体以及REST > 全系列Web APIs: From Start to Finish 第一篇,读< 与Roy Fielding谈论版本化、超媒体以及REST > [中文版](http://www.in

read more
读< 从业务角度看API >

读< 从业务角度看API >

第二篇,读< 从业务角度看API > 英文 中文 作者:Matt McLarty 观点1:API是当今信息技术趋势的核心,比如说移动终端、云计算、物联网、大数据、社交网络。涉足各行各业,如能源、汽车、电商等 观点2:虽然和API在整个技术领域

read more
医疗质量改进-表达知识的概念模型

医疗质量改进-表达知识的概念模型

HL7 Domain Analysis Model: Health Quality Improvement, Release 1 September 2014 US Realm Informative Specification文档 9/16/14 Introduction简介 目前在美国,电子化的医疗质量测度eCQM和临床决策支持CDS是采用不同的数据模型来表达的

read more
招妓小伙伴打小怪兽了

招妓小伙伴打小怪兽了

本人正在致力于FHIR(FHIR is a new emerging and appealing healthcare exchange standards, with the all difficulty embedded,through the off the shelf Web standards,you can flood health information anywhere on

read more