Odin引擎特色功能详析之二:内置内存数据库 - 减少I/O,提升整体性能

Odin Editor, 21 二月, 2023
关键字

内存数据库、配置流程、提升性能、减少I/O

场景分析 

我们在做一些数据集成中,经常会遇到需要访问不怎么变动的表或者需要临时表存放数据的情况。 比如: 

当我们做医嘱同步时,在流程中涉及到药品,希望能够获取药品规格时,每个消息在流程中均需要用到药品字典表,而这张表一般会在业务系统中,每过一个消息都要访问一下,造成大量的外部I/O; 

有时候我们在做一些统计或者复杂计算时,常常会需要临时表来缓存一些过程数据,避免内存过大; 

涉及到一些安全、系统配置获取时,也需要一个临时存储访问; 

......  

传统做法 

在面对上述场景需求时,通常的解决方法是需要找服务器单独开辟一个储存空间对数据信息进行存储,或者依托已有库建临时表等,这些数据表通过传统方式保存在外部,然而这种方法存在以下问题: 

1. 实现过程比较繁琐,操作和运维不方便、不灵活; 

2. 数据储存在外部,成为外置数据,占用了外部的存储资源和交互链接; 

3. I/O性能低,每次读写都需要服务器从外部读取,数据查询读取的速度慢。 


 Odin方案---内置内存数据库 

Odin引擎采用了内嵌内存数据库的方式,支持的最大单表记录数可达千万,可在线实现通过数据库的脚本对内存库进行管理(创建、修改、查询等),并在项目中使用终端直接调用。 

内存数据库中可存放一些经常用到的路由规则、常用变量或者业务配置和数据集等,在实际运行调用中避免同外部系统的频繁交互,对于整体性能有大幅度提升,同时方便对系统做更深层整合。   

什么是内存数据库? 

内存数据库就是将数据放在内存中直接操作的数据库,它利用内存的读写速度比磁盘快、内存是随机访问而磁盘是顺序访问这两个特点,将数据保存在内存中,在内存中模仿建立表结构和索引结构并针对内存特性进行优化,相比从磁盘上访问,内存数据库访问较快。 

Odin的内置内存数据库: 一次解决上述三个问题 

1. 操作简单 

Odin引擎能将常用或者循环使用的数据直接储存在内置的内存数据库中,不用单独再开辟储存空间,简化操作流程。  

2. 减少外部依赖 

内置内存数据库针对临时性的表格和缓存性的数据,也可以储存常用的数据和变量,服务器就不必每次都去外部读取数据,减少对外部的依赖。  

3. 高性能读取 

由于可以直接从内存数据库读取数据,省去了I/O的开销,减少了系统整合的工作量,在数据访问的时延上内存数据库可以达到传统关系型数据库无法达到的微秒级别,TPS也可以达到千万以上,使Odin引擎在性能上完全满足了医院当下及未来的需求。 


如何使用Odin内存数据库(用户数据集) 

Odin内存数据库在哪儿? 

在Odin引擎中,内存数据库在管理界面被称为 “用户数据集”,可用于用户自定义的数据表管理。 用户在登录引擎后,在左侧功能栏中找到“用户数据集”功能(下图红圈处)。 进入后可开启内存数据库,通过T-SQL脚本直接操作此数据库,实现对库表的管理及数据操作(包括新建数据表、插入数据、检查与已有数据的重复情况等)。 同时用户还可以查看已经建立的库表结构及内容。 


Odin引擎“用户数据集”界面 
 

用户如何在项目配置时使用Odin内存数据库中的内容呢? 

Odin的内存数据库自带数据源连接“loki.internal.dataset”,用户可在“数据库终端”界面中选择配置此数据源,设置成功后就能通过数据源终端查询内存数据库的内容。 

Odin内存数据库使用有什么注意事项? 

由于内存数据库还是处在内存中,总数据量过大或一次查询量过大都会导致内存出现极大负荷,因此正常情况下大多数数据仍需保存在外部。 内存数据库的适用对象是一些访问频率高且不怎么变动的表或者只需要临时性存放的数据表。 

在默认配置下,内存数据库里的全部表的总数据量建议不多于100万行,同时一次执行的字符数量上限为900000。 

结语

本篇主要介绍了Odin引擎内嵌的内置数据库的优势、适用场景和使用流程,未来还会有更多Odin引擎中的细节功能详解,敬请期待。 

Odin文章评论:

如您在使用此平台时遇到问题,可发送邮件至:customer.service@odin.co.nz 获得帮助