从数小时到毫秒
从 SQL 迁移到 Elasticsearch 使 Influence Health 能够运行以前需要数小时才能完成的查询,现在只需 7-8 毫秒即可完成。
满足 HIPAA 要求
使用 X-Pack 的安全功能传输中加密数据的能力使 Influence Health 能够自信且轻松地满足与 HIPAA 相关的安全和隐私要求。
通过 Elastic 支持确保成功
Influence Health 利用他们与 Elastic 支持的关系来加速产品开发,并确保他们的 Elasticsearch 集群针对成功进行了优化。
减轻关键工程师的负担
通过迁移出 SQL,Influence Health 的数据服务团队可以专注于支持公司的基础设施,而不是充当人到 SQL 的翻译器。
公司概览
Influence Health 的消费者参与平台帮助医疗机构将当前和潜在的患者与他们最需要的特定服务相匹配,并通过有针对性的电子邮件、移动、社交、搜索和直邮活动与他们联系。这有助于他们防止需要治疗的健康问题再次入院,甚至可以在患者生病之前就诊。
截至 2016 年,250 个客户在 46 个州和加拿大的多个省份使用 Influence Health 的产品,这些客户代表了 1,100 家医院,管理着超过 8000 万的患者记录。
为更好的医疗保健提供搜索支持
Influence Health 的标语是“改变医疗保健,改变生活”,他们希望通过提高医疗保健效率并降低成本,帮助个人和家庭变得更明智、更健康、更强大。他们通过其消费者参与平台来实现这一点,该平台通过允许医疗机构将当前和潜在的患者与他们最需要的特定服务相匹配,从而帮助他们充分利用其数据,从而使患者在正确的时间到达医院和医生。
当他们的 SQL 数据库阻止客户根据特定条件快速查找患者时,他们转向了 Elasticsearch——将一个需要自定义、手工编写的 SQL 查询的两周流程转变为需要 7-8 毫秒运行的 Elasticsearch 查询。并且,通过他们的 Elastic 订阅,他们能够通过 X-Pack 确保敏感的患者数据安全并满足 HIPAA 要求,并利用 Elastic 支持团队来优化他们的项目。
Influence Health 的 Elastic 之旅
谁:Nathan Stott 加入 Influence Health
Nathan Stott 自称是“数据库极客”,现任架构和运营副总裁,在为该公司咨询几年后,于 2014 年加入 Influence Health。吸引他加入的部分原因是他们正在经历的技术转型。
“Influence Health 开始采取一些大胆的举措,非常迅速地进行创新,”Nathan 回忆说。“他们刚刚将所有代码从 TFS 迁移到 GitHub。他们开始使用 Node.js 来补充他们的 C# 基础设施。我看到事情正在发生变化。这是我想要去的地方。”
什么:遇到 SQL 缓慢问题
Nathan 在 Influence Health 工作的第一个项目是改造公司的营销细分工具,称为 Audience Insights,该工具允许 Influence Health 的客户根据特定标准创建当前和潜在患者的列表,以便针对他们可能需要的服务开展有针对性的活动。
当您构建这些列表时,这是一个过程。您最多可以经历 40 个方面,其中包括各种社会人口统计因素——患者在医院的就诊情况、代表不同疾病的医疗代码、年龄、性别、收入、地点。
当时,Influence Health 的客户无法轻松识别可能需要特定医疗保健服务的患者子集。他们的消费者互动平台构建在 SQL 数据库之上,这意味着每次客户想要为营销活动建立列表时,Influence Health 的数据服务团队都必须通过构建自定义 SQL 查询来执行离线列表提取——这需要花费数小时的手工制作,以及额外的一两个小时来运行。他们最终将数据透视表发送给客户进行批准,这可能会导致对查询的额外修改——这个过程可能需要长达两周的时间。
通过改进受众洞察,不仅可以解放 Influence Health 的数据服务团队,让他们将时间花在他们的主要重点上——继续开发产品——而且还可以与公司提高医疗保健效率和成本效益的总体目标联系起来。通过使客户能够轻松识别需要特定服务的患者,他们能够让人们进行预防性护理,并通过防止再次入院等目标更有效地利用医院资源。
Influence Health 开始研究 SQL 的替代方案。他们研究了 MongoDB,但 MongoDB 的分片和索引方式无法提供他们所需的实时聚合,查询需要长达 8 秒的时间。
根据他过去的经验,Nathan 认为 Lucene 会更适合,并开始探索当前生态系统的状态。那时他发现了Elasticsearch,在查看了它的 RESTful API 以及它们如何使一切变得简单之后,他立即开发了一个概念验证 (POC),将其与 MongoDB 进行比较。Nathan 发现使用 Elasticsearch 进行查询要容易得多。此外,它们的性能也更好。
我们评估了许多不同的技术,例如 MongoDB...但最终,Mongo 不支持我们业务所需的实时查询。Elasticsearch 开箱即用地提供了许多功能,以达到我们所需的速度。
原因:满足 HIPAA 并快速行动
在 POC 表明 Elasticsearch 是正确的选择后,该项目进入了开发阶段——Influence Health 的更多工程师开始熟悉 Elasticsearch。他们还开始探索如何满足与 HIPAA 相关的安全和隐私要求。
这些因素促使 Nathan 联系 Elastic,以获取有关 Elastic 订阅中包含内容的更多信息。在了解了通过 X-Pack 中的安全功能加密传输中数据的能力,以及 Elastic 客户关怀团队在传统的仅限故障排除支持之外提供的深入专业知识和合作伙伴关系之后,Influence Health 意识到 Elastic 订阅将为他们提供满足 HIPAA 相关安全要求所需的额外产品功能,并帮助他们加快项目进入生产的开发速度。
随着我们继续让更多人熟悉 Elasticsearch,我们绝对认为支持会很有用......当你在医疗保健行业处理敏感的患者数据时,你真的会更喜欢使用产品背后公司提供的最成熟、最完整的产品——这就是我们选择 X-Pack 的原因。
如何:人员搜索引擎
Influence Health 使用 Elasticsearch 进行人口细分。他们目前在 Azure 上托管他们的 Elasticsearch 集群,按客户进行分区,以便他们无法查看或暴露彼此的数据。
他们最初以平面文件或 HL7 消息(一套用于交换和开发临床和医疗保健管理数据的国际标准)的形式从客户那里收集患者数据。他们还使用第三方消费者和人口统计数据来丰富从客户那里收到的患者数据。
接下来,一切都通过 Spark 摄取到他们的 Cassandra 数据库中。当新的患者记录进来时,他们通过匹配他们从以前的数据转储中已经了解的患者信息来清理这些记录,并将增量更新到变更捕获源。
然后,他们使用与 Apache Spark 的本机集成,通过 ES-Hadoop,定期将此数据从 Cassandra 同步到他们的 Elasticsearch 集群——他们发现这非常快。例如,对于拥有 300 万患者和 1000 万次临床就诊的客户,将数据从 Cassandra 索引到 Elasticsearch 大约需要 15 分钟。
为了为他们的客户构建特定的患者列表,Influence Health 大量利用 Elasticsearch 的聚合功能——尤其是基数聚合和脚本指标聚合,后者允许他们对家庭层面的指标进行分组计数。
X-Pack 也是 Influence Health 基础设施的重要组成部分。根据 HIPAA 规则,所有受保护的健康信息 (PHI) 都必须在静态和传输中进行加密。静态部分是通过 Elasticsearch 节点的硬盘的透明数据加密实现的。X-Pack 的安全功能为 Influence Health 提供了传输中所需的加密,确保数据永远不会在节点之间以明文形式发送。
结果:不再需要人到 SQL 的翻译器
自从实施 Elasticsearch 以来,Influence Health 的数据服务团队不再需要参与为客户周转列表请求——客户服务团队可以自己创建它们。这改变了过去需要两周的时间,现在可以使用 Elasticsearch 查询在 7-8 毫秒内运行,从而可以在 10 分钟或更短的时间内完成列表的汇总。
我们的数据服务团队有更多的时间来开发我们的产品,而不是成为人到 SQL 的翻译器。
Elastic 支持团队也在 Elastic 之旅的每一步中帮助指导 Influence Health——从查询优化、规划和导航升级、解决故障排除问题、解决高严重性问题,以及就他们共同面临的任何主题提供合理的建议。
我们与 Elastic 支持团队进行了很多互动:当我们从 Elasticsearch 1.5.2 升级到 2.0 时,当我们的一些查询运行缓慢时,我们询问了如何改进它们的想法——甚至只是在其他同事不在时提出一些随机问题...无论问题大小,Elastic 支持团队都能提供有用且快速的回复。这很棒。
Influence Health 集群
- 集群1
- 索引40
- 节点10
- 查询率每秒 80 个
- 托管环境微软 Azure
- 副本2
- 文档>10 亿
- 基于时间的索引40
- 数据总大小5 TB
- 节点规格SSD, 64 GB RAM, 8 个 CPU
- 每日摄取率250,000 个文档