首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DolphinDB:金融高频因子流批统一计算神器!

这几天,公众号发现了一个超高性能分布式时序数据库神器: DolphinDB DolphinDB为海量结构化数据的极速存储、检索、计算与分析提供了一站式解决方案,特别适合金融行业用来处理大规模数据,尤其是...公众号将会有一个专题系列来测评DolphinDB这款神器,同时会叠加多个量化金融场景。 大家敬请期待! 今天我们先从如何实现批流一体这个让很多机构头疼的问题讲起。...今天的推文为大家介绍如何使用DolphinDB发布的响应式状态引擎(Reactive State Engine)高效开发与计算带有状态的高频因子,实现流批统一计算。...数据源节点开始,按照既定的路径,层层推进,得到最后的因子输出。这非常类似excel的单元格链式计算。当一个单元格的数据发生变化时,相关联的单元格依次发生变化。...无状态的算子比较简单,使用DolphinDB已有的脚本引擎,就可以表示和计算。因此,问题转化为两点: 1、如何解析得到一个优化的DAG。 2、如何优化每个有状态的算子的计算。

3.9K00

新型行情中心:基于实时历史行情的指标计算和仿真系统

1:行情中心用户分类 用户服务角度,行情中心的核心服务如下图所示,自上而下可以概括为:(1)数据获取,(2)指标计算,(3)数据存储,和(4)数据分发。...分布式数据库,分片的co-location存储是提升分布式关联性能的最有效手段。 时序建模 + 关系建模 行情中心数据库的大部分基础数据都可以用时序建模。...流式计算和批流一体 行情中心既要处理研发环境历史数据,又要处理生产环境的实时数据。研发环境历史数据是全量数据,可以用批处理的计算方法。...宽存储天然适合面板数据,并能减少数据冗余,提高查询速度。 5:DolphinDB存储 如表5所示,在一张宽存储4500只股票的1098个因子。DolphinDB支持32767列大宽。...多级存储 DolphinDB支持多级存储,可以将最常用的热数据存储到SSD固态硬盘中提高数据的读写速度,较冷的数据存储到HDD机械硬盘,不太使用的历史数据存储到S3

3.2K21
您找到你想要的搜索结果了吗?
是的
没有找到

计算、建模到回测:因子挖掘的最佳实践

同时,DolphinDB 自带的数据回放和流式增量计算引擎可以方便地解决因子挖掘研发和生产一体化的问题。DolphinDB分布式存储和计算框架,天生便于解决工程的可靠性、扩展性等问题。...流数据可以看作是一个简化版的消息中间件,或者说是消息中间件的一个主题(topic),可以往其发布(publish)数据,也可以其订阅(subscribe)数据。...前面三个例子展示了 DolphinDB 如何通过流计算引擎实现因子在生产环境的增量计算。...6、因子回测和建模 很多时候,计算因子只是投研阶段的第一部分,而最重要的部分其实在于如何挑选最为有效的因子。在本章节,将会讲述如何DolphinDB 做因子间的相关性分析,以及回归分析。...在因子计算的工程实践,可以通过并行来加速的维度包括:证券(股票),因子和时间。 在DolphinDB,实现并行(或分布式)计算的技术路径有以下4个途径。 通过SQL语句来实现隐式的并行计算。

6.2K22

干货 | 高频多因子存储的最佳实践

面对如此庞大的数据量,如何保证高效的数据写入是因子库存储的一大挑战,如果不能支持并充分发挥多块磁盘的 IO,写入耗时将达数小时以上。...对于读取随机标的(A股市场目前约5000 股票)、随机多个因子(10000个因子随机取1000个因子)的场景,要能从海量的因子数据尽可能高速并精准读取数据,减少无效 IO ,并以需要的方式(通常是因子面板模式...为了方便用户计算因子,DolphinDB 实现了所有 191 个因子的函数,并封装在模块 gtja191Alpha 。...1、新增因子:在新增因子的场景,窄模式只需要进行 Insert 操作,将新增因子数据写入;而宽模式需要先进行addColumn 操作,然后更新新增因子列数据,DolphinDB 目前的更新机制是重写...而宽模式在当前设计下,如果要更新一列因子数据,需要把所有的分区数据全部重写,所以耗时非常长。 2、更新因子:量化投研,重新计算因子数据是常见的场景。

1.6K20

基于腾讯云存储COS的ClickHouse数据冷热分层方案

ClickHouse使用分布式实现数据的分布式存储和查询。下图演示了一个分布式如何存储的: 1.png 分片(Shard):包含数据的不同部分的服务器,要读取所有数据必须访问所有的分片。...在创建分布式的过程,ClickHouse会先在每个Shard上创建本地表,本地表只在对应的节点内可见,然后再将创建的本地表映射给分布式。...在ClickHouse重新加载配置后,能查询到刚才我们定义的磁盘及存储策略: 7.png 在后面的章节我们会详细演示如何将ClickHouse的数据存储在本地存储或者对象存储COS上。 3....ClickHouse清除。...虽然绝大多数的查询都集中在最新的数据上,但是业务方偶尔还是会有访问老的历史数据的需求,如何平衡成本以及业务方偶尔访问历史数据的需求成为ClickHouse系统管理者头疼的问题。

5.9K51

硕士毕业半年的茫茫社招路

去之前秋招不同,这次我几乎没怎么投递公司,而是之前挖我的公司挑出了自己有一定兴趣的公司来面试。...我期望工作获得什么呢?我写下了以下几点: 从事的行业和工作内容要有意义,对社会有贡献。最好是那种能帮助国家突破卡脖子技术的领域。...DolphinDB是一款完全自研、拥有完全自主产权的国产分布式时序数据库,拥有强大的计算引擎和存储引擎,支持每秒百万级数据写入,在万亿级规模下支持数据毫秒级查询和秒级计算分析(突然有种广告的感觉是怎么回事...从事的工作内容要有意思,我得喜欢,工程味道要重而且能够内到外理解每一个细节:数据库可以说是完美的符合这些要求,而在技术方面,分布式时序数据库显然也是站在最前沿的。...DolphinDB就是我此次选择的项目,Davis和xj就是我此次选择的人。 于是最后,我就和xj一起加入了DolphinDB,工作至今。我加入公司到现在也差不多有三个月了。

1.2K31

11年逆袭,寒门专升本职高生终成MIT博士生!自学CMU课狂发5篇顶会,全网热议

随后,他用了11年,职高->大专->专升本->考研到浙大,一路逆袭成MIT博士生。 期间,不仅在各大数据库顶会顶刊上发表了多篇论文,担任审稿人,而且还在大会现场做了精彩的演讲。...论文地址:https://dl.acm.org/doi/10.1145/3448016.3452819 离开腾讯之后,周信静又来到了知名数据库公司DolphinDB。...而周信静在面试时,展现出的对raft协议原理和实现细节的熟悉程度,甚至让面试官惊掉了下巴: 在30分钟的对话过程,基本上捋了一遍如何使用raft协议实现一个分布式数据库,客户端到服务端的框架设计。...在入职之后,便直接让他以实习生的身份参与到了DolphinDB分布式时序数据库的内核研发当中。 期间,团队在用哈希方法来改进SQL引擎分组计算的性能时,遇到了瓶颈。...v=8e8KMnGKHwE 视频可以看出,他的英文口语水平也是极佳。

46820

动手实现一个localcache - 设计篇

思考:如何实现一个高性能本地缓存 数据结构 第一步我们就要考虑数据该怎样存储;数据的查找效率要高,首先我们就想到了哈希,哈希的查找效率高,时间复杂度为O(1),可以满足我们的需求;确定是使用什么结构来存储...在本地缓存读操作是远高于写操作的,但是我们本地缓存不仅支持进行数据存储的时候要使用锁,进行过期清除等操作时也需要加锁,所以使用map+sync.RWMutex的方式更灵活,所以这里我们选择这种方式保证并发安全...,可能会使缓存的数据被历史数据替换,降低缓存命中率。...Two Queues Two Queues是FIFO + LRU的结合,其核心思想是当数据第一次访问时,将数据缓存在FIFO队列,当数据第二次被访问时将数据FIFO队列移到LRU队列里面,这两个队列按照自己的方法淘汰数据...存在问题: 这种算法和LRU-2一致,适应性差,存在LRU的数据需要大量的访问才会将历史记录清除掉。

31520

全面拆解实时分析数据存储系统 Druid

Druid 的目标是支持近实时的和历史数据访问模式,这让它变得非常独特,并被应用在非常广泛的场景——例如,近实时的数据摄取可以让应用程序(如生产警报)基于日志快速发现问题(类似于 Netflix 的应用场景...Zookeeper,存储系统的当前状态(包括片段的副本保存在系统的哪些分布式节点上)。 实时节点 实时节点有两个职责:生产者那里获取数据和响应用户对最新数据的请求。...每个(时间段、数据源)缓冲区在被清除之前会暂时保留在节点上——由于资源有限,节点需要定期内存清除记录缓冲区。在回收时,内存缓冲区的数据将被写入“深度”存储系统(如 S3 或谷歌云存储)。...为了响应这些请求,实时节点会使用内存的临时索引进行扫描。  历史节点 历史节点存储读取不可变的数据片段,并对查询做出响应——协调节点(将在下一小节介绍)控制一个历史节点可以获取哪些片段。...每一个片段都与一个数据源(Druid )相关联,并包含特定时间段的数据。 片段由两种类型的数据组成:维度和指标。维度是行聚合或过滤的值,而指标对应于数值数据(如计数)。 片段还包含了版本号。

86220

云数据库技术行业动态@2022-09-30

显示内网和外网的地址及端口等功能:参考[火山云] 火山引擎DTS产品,新增对已存在的迁移、同步任务的复制功能和跨Region展示功能:参考[火山云] 火山引擎文档数据库 MongoDB,新增对副本级和分片监控功能:参考[DolphinDB...存储过程、级分区管理、密码、审计优化等。...在传统行业,不少用户是数据库的存储过程、分区重度使用者。此次PolarDB-X的更新,优化了存储过程内存管理,这些改动会给这部分用户带来较好的体验。...Azure MySQL 数据库高可用性解析Azure是如何做数据库的HA,通过这篇文章或许可以管中窥豹基于火山引擎 EMR 构建企业级数据湖仓虽然是一篇火山云的软文,但是对数据湖仓的趋势和挑战有比较深入的介绍...韩锋解读《分布式数据库发展趋势研究报告》看看业界大牛对分布式数据库过去、现在和未来的解读近40年银行核心系统变迁历程及新建设模式金融业是信息化比较高的传统行业,也是比较愿意在信息化建设上投入的行业,也是

92940

干货 | 携程日志系统治理演进之路

4.2 类分库分设计 图18 (1)数据跨如何跨集群 假设我们有三个数据集群1、2、3和三个A、B、C(如图18)。在改造之前,我们单张(如A)只能坐落在一个数据集群1。...我们只能用双写的方式将A同时写入到集群1和集群2,等到集群2的数据经过了TTL时间(如7天)后,才能将A数据集群1删除。这样,对我们的集群运维管理带来了极大的不方便和慢响应,非常耗费人力。...这样,我们便解决了跨集群的问题,不同集群间的磁盘使用率也会趋于平衡。 (2)如何修改排序键不删除历史数据 非常巧妙的是,这种方式不仅能解决磁盘问题。...旧数据会在时间的推移一下被TTL清除,最终数据都使用了正确的排序键。...(3)如何解决删除大表字段导致元数据不一致 更美妙的是,Clickhouse 的分布式设计并不要求A在7月和8月的元数据字段完全一致,只需要有公共部分就可以满足要求。

1K51

.NET 7+Vue 前后端分离框架Admin.Core

/Admin.Core 技术栈 dotnet7 FreeSql Autofac CAP Mapster 特点 快速启动,上手简单 系统模块化 Swagger的模块化封装 读写分离 分库分 分布式事务...9、缓存管理:缓存列表查询,支持根据缓存键清除缓存 10、接口管理:配置接口,支持接口同步功能,用于新增权限点选择接口,支持树形列表展示。...2、插入历史数据,修改字段名称情况注意 3、删除旧表,重命名临时为新 生产上该自己执行脚本的还是自己执行 同步数据 syncData:true sysUpdateData:false 同步更新数据...添加到数库,默认新增所有数据 如果是租户数据,格式为 .tenant.json syncDataCurd:false 监听同步数据Curd操作 设置是否将syncDataPath文件夹下的 名.json...为空则不生成分布式事务 validate 验证开关 登录,接口权限,数据权限验证 swagger Swagger文档s http://localhost:8000/admin/swagger apiUI

34310

vivo 全球商城:优惠券系统架构设计与实践

为了解决以上问题,19年优惠券系统进行了系统独立,提供通用的优惠券服务,独立后的系统架构如下: 优惠券系统独立迁移方案 如何将优惠券从商城系统迁移出来,并兼容已对接的业务方和历史数据,也是一大技术挑战...在实现过程,需要注意以下几点: 1)如何保证性能 领取多张券,如果每张券分别进行校验、库存扣减、入库,那么接口性能的瓶颈卡在券的数量上,数量越多,性能直线下降。...但如上所述,因为做了分库分,大量的需要添加唯一字段,并且需要兼容历史数据,需要保证历史数据新增字段的唯一性。...第二个考虑的问题:怎么兼容历史数据和业务方?历史数据增加了唯一字段,需要填入唯一值,不然无法添加唯一索引。我们采用脚本刷数据的方式,构造唯一值并刷新到每一行历史数据。...数据库读写分离 优惠券除了上述所说的分库分外,在此基础上还做了读写分离操作。主库负责执行数据更新请求,然后将数据变更实时同步到所有库,用库来分担查询请求,解决数据库写入影响查询的问题。

2.2K41

TDSQL 全时态数据库系统-理念与愿景

一部分数据来源是从不同系统(关系数据库或NoSQL系统)的日志数据来,称为流水日志。但某个这样的系统每天的日志流水数据近百G且趋势看增量数据递增很快。...另外,有些数据是在TDSQL按时间分,需在一段时间结束后对按时间分的数据利用流水日志进行对账计算。 对账主要是解决几种异常情况: 1.  系统存在BUG,或者在故障时,未表现出预期的情况。...数据逻辑割裂:TDSQL按时间分,只能按确定的时间段进行结算,不能灵活、方便的计算。...第4.3节讨论了如何利用索引高效读取历史态数据。 这些特性的实现,践行了“历史数据富有价值”,是的历史数据能够被存储、管理、参与到计算当中。  ...第二,数据可以单机系统脱机,然后联机到一个集群计算系统,把多个单机的海量数据聚集到一个集群,并支持在集群中进行计算。

92220

看完这一篇,ShardingSphere-jdbc 实战再也不怕了

5 扩容方案 既然做了分库分如何实现平滑扩容也是一个非常有趣的话题。 在数据同步之前,需要梳理迁移范围。...另外确保每个是否都有唯一索引,一旦没有唯一索引,就会在数据同步过程造成数据重复的风险,所以我们先将没有唯一索引的根据业务场景增加唯一索引(有可能是联合唯一索引)。...因为历史数据也会存在不断的更新,如果先开启历史数据全量同步,则刚同步完成的数据有可能不是最新的。...所以我们会先开启增量数据单向同步(旧库到新库),此时只是开启积压 kafka 消息并不会真正消费;然后在开始历史数据全量同步,当历史全量数据同步完成后,在开启消费 kafka 消息进行增量数据同步(提高全量同步效率减少积压也是关键的一环...实战过程,需要配置数据源信息,逻辑对应的真实节点和分库分策略(分片字段和分片算法) 实现分布式主键直接路由到对应分片,则需要使用基因法 & 自定义复合分片算法 。

1.3K52

揭秘大数据时代秒级查询响应引擎的架构设计

那可以秒级查询响应的秒算引擎是如何设计的呢?易观 CTO 郭炜与易观架构师高俊,给出了详细的分析和解读。 1 基于 IOTA 架构的秒算引擎如何设计?...除此之外,秒算引擎数据结构是由收到的真实数据动态生成,用户可以随时上报自己感兴趣的数据和字段,解决了过去分析系统 Schema 维护难的问题。...一、实时数据缓冲层架构升级 秒算引擎历史数据都保存在 Hive ,不过 HDFS 文件对追加写的支持不友好,需要将最近一段时间内上报的数据暂时存储在支持高吞吐、低延迟写入更新的数据库。...其次根据分桶策略,在数据 Buffer 层 Dump 到 HDFS 时,将对应的事件数据放到该事件的分桶文件。最后是查询引擎根据查询涉及的事件读取该事件对应的 HDFS 文件。...DolphinScheduler 是一个分布式、去中心化、易扩展的可视化 DAG 工作流任务调度系统,致力于解决数据处理流程错综复杂的依赖关系,使调度系统在数据处理流程开箱即用。

1.3K10

大数据查询——HBase读写设计与实践

背景介绍 本项目主要解决 check 和 opinion2 张历史数据历史数据是指当业务发生过程的完整中间流程和结果数据)的在线查询。...原实现基于 Oracle 提供存储查询服务,随着数据量的不断增加,在写入和读取过程面临性能问题,且历史数据仅供业务查询参考,并不影响实际流程,系统结构上来说,放在业务链条上游比较重。...本项目将其置于下游数据处理 Hadoop 分布式平台来实现此需求。...下面列一些具体的需求指标: 数据量:目前 check 的累计数据量为 5000w+ 行,11GB;opinion 的累计数据量为 3 亿 +,约 100GB。...技术选型 数据量及查询要求来看,分布式平台上具备大数据量存储,且提供实时查询能力的组件首选 HBase。根据需求做了初步的调研和评估后,大致确定 HBase 作为主要存储组件。

1.3K50

分库分如何部署上线?

你们自己摸着良心想一下,如果你真的做过分库分,你会不知道如何部署的么?因此我们来学习一下如何部署吧。 ps: 我发现一个很神奇的现象。...假设,我们是对一张叫做 test_tb 的进行拆分,因为你要进行双写,系统里头和 test_tb有关的业务之前必定会加入一段双写代码,同时往老库和新库写,然后进行部署,那么 历史数据:在该次部署前...在迁移过程,只迁移 db-old test_tb 表里,主键小等于该 max(主键) 的值,也就是所谓的历史数据。...(2)在代码,与 test_tb 有关的业务,多加一条往消息队列中发消息的代码,将操作的sql发送到消息队列,至于消息体如何组装,大家自行考虑。...交流学习群号:478030634 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系

1.3K10

vivo 全球商城:优惠券系统架构设计与实践

在实现过程,需要注意以下几点: 1)如何保证性能 领取多张券,如果每张券分别进行校验、库存扣减、入库,那么接口性能的瓶颈卡在券的数量上,数量越多,性能直线下降。...但如上所述,因为做了分库分,大量的需要添加唯一字段,并且需要兼容历史数据,需要保证历史数据新增字段的唯一性。...采用新建这种方式,不需要兼容历史数据,但缺陷也很明显,增加了一层的关联,对性能和现有逻辑都有很大影响。综合考虑,我们选取了在现有添加唯一字段这种方式,这样更利于保证性能和后续的维护性。...第二个考虑的问题:怎么兼容历史数据和业务方?历史数据增加了唯一字段,需要填入唯一值,不然无法添加唯一索引。我们采用脚本刷数据的方式,构造唯一值并刷新到每一行历史数据。...主库负责执行数据更新请求,然后将数据变更实时同步到所有库,用库来分担查询请求,解决数据库写入影响查询的问题。

1.5K12
领券