随着大数据时代的到来,数据已经渗透到各行各业,成为重要的生产要素,数据管理成为当今计算机最重要的应用领域。出于对数据管理领域的关注,不同行业也逐步提升了对数据存储、数据管理及数据分析能力的要求,这一趋势带来了新理念。为此,「巨杉最具价值专家SVP」技术交流会特别邀请巨杉北美实验室核心成员Danny Chen ,讲解数据湖的技术原理与巨杉数据库在数据湖中的应用实践。

01 关于数据湖
数据来源;支持较为方便的将数据按数据原生状态注入到数据湖中。
数据量和种类;可以支持存储多种类的原生数据且支持长期扩展。
数据处理能力;具备对数据进行大数据处理分析能力。
性能和成本;数据湖由于数据量较大,数据类型包含热数据和冷数据,成本是一个考虑因素。

02 巨杉在数据湖的应用

专门针对统计分析审计等场景使用。
多个不同联机交易库中的表可以被直接映射到同一个 SparkSQL 实例中,自身无法使用索引,执行非例行非经常性的分析查询,避免ETL迁移流程。
源和目标均在SDB集群中,Transform相对不十分复杂,可能包含数据过滤、简单聚合等。
支持数据分区的读写分离,确保联机交易业务与统计分析任务在不同物理机中执行。
对于关联查询,约70%使用mysql和pg直接完成,剩下约30%,spark在整体性能上明显占优的情况下,则通过spark实现。
Spark能发现SDB的节点状况,直接访问可读的数据节点,并自动使用可能的并发机制,Task数量由需要访问的数据量决定,保证更大的并发处理。
多模数据支持。
数据可以直接注入SDB或通过Spark/Spark stream。
理想情况,spark集群建议在sdb以外的服务器进行部署,效果会更加理想。
如果需要部署在同一集群中,特别是数据量比较大的情况下,建议限制spark集群的资源使用上限,从而保证内存分配给sdb使用。

03 案例分享
在总体架构上,实际分为以下三层:
「数据采集层」:主要负责从临床业务系统采集海量历史临床数据,历史记录采集方式分为批采集和实时采集。 「存储分析层」:主要负责数据存储以及数据分析两大部分业务。使用JSON格式,大数据存储引用使用SequoiaDB数据库,数据分析部分由Spark集群来完成。分析结果写入临床知识数据库,临床知识数据库也使用SequoiaDB巨杉数据库进行存储。 「应用逻辑层」:主要负责人机交互以及分析结构回馈临床系统的渠道,也为临床系统的业务辅助。


使用SDB的能力包括以下几方面:
多模;具备jason、文档、图像等多种数据格式 对接Spark进行分析处理 联机查询 批量导入与实时数据采集
MySQL数据能否存储上线以来所有的投票明细数据以及统计结果。 当投票数据量达到一定量之后,在实时查询和统计上的性能已经不能完全满足客户需求,与此同时,作为使用者基金公司管理员和投资人亦不能实时看到大会的最终统计结果。 投票明细数据达到一定的量之后,大会结束,准确统计投票结果的耗时以及频率下降。

能够快速,实时,并发的获取基金投票明细数据。并保证数据唯一,零丢失。 基金投票明细数据按照顺序获取统计。 基金投票历史数据存储备份至高可用,高性能可应对海量数据的数据库中。 基金投票明细数据实时统计入库。实时统计结果在短时间内入库。

使用Spark Streaming 流数据处理模式,分别从kafka topic 中获取基金投票明细数据,并过滤清洗,批量入SequoiaDB库的集合中,在SequoiaDB库的集中建立唯一联合索引。 每个数据批基于Spark Streaming流数据处理的API进行实时统计,并将统计结果更新至MySQL库实时统计结果表中。 SequoiaDB即可以作为流计算的sink,又可以作为批量数据处理和实时访问数据源。同时利用其弹性扩张能力解决海量数据存储和查询。


04 SequoiaDB未来发展
分析型计算引擎
优化访问计划 高性能并发计算 低延时数据访问
列存储
提高数据压缩 提高数据访问效率
云原生与跨平台的支持
不绑定 线上线下都支持
讲到这里,相信大家对于巨杉数据库在数据湖中的应用实践也有了一定的了解,若还有疑问或想要了解更多,欢迎大家留言与我们交流。
往期技术干货
巨杉Tech | 常见问题参数调优实践(数据库优化系列一)





