暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

kdb+水平扩展的好处

kdb中文教程 2021-02-03
277

注:本文编译自https://blog.neueda.com/kdb/kdb-benefits-of-horizontal-scaling,作者为Patrick Dooher


数十年来,银行和其它金融机构一直使用kdb+来获取和分析持续增加的海量数据,这是因为kdb+具有水平扩展和垂直扩展(伸缩)的能力。


水平扩展与垂直扩展


垂直扩展是指为现有资源增加更多的功能,例如为当前服务器添加更快的存储设备,或增加资源使用的CPU池。相反,水平扩展是指在解决方案中添加更多的处理单元或服务器,以增加应用程序可用的数据节点数量。从服务器堆栈的角度看,我们在水平方向上添加更多服务器,在垂直方向上向单台服务器添加更多资源。示意图所下:

最终,垂直扩展将达到上限。另一方面,水平扩展使用户能够在必要时添加额外服务器,从而提供更大的整体灵活性。鉴于典型kdb+数据库最终还是会将数据分散保存在多台服务器上,因此大多数架构师都希望在设计阶段实现水平扩展能力的最大化。


如何在kdb+中实现有效的水平扩展


1. 确定数据节点


我们需要确定构成一个逻辑数据节点的数据。这些节点应尽可能独立,以便对其进行独立伸缩,但它们将与其他节点进行交互以提供完整数据。这可能意味着分别按照地区、资产类别、数据类型、金融工具或业务需求等对数据进行分割。


2. 定义添加新数据节点或重新配置现有数据节点的过程


水平扩展的主要优点之一是,能够在停机(如果需要)时间有限的情况下,为应用程序增加额外的功能。因此,我们需要特别注意数据节点的配置方式。

我们既可以在系统中添加新数据节点(既可以作为现有节点的备份,也可以作为全新数据),又可以重新配置系统以更有效地利用现有数据节点。例如,我们可能希望对服务器上的某些数据进行移动,以便在企业范围内更好地利用内存,或者,添加一个包含当前交易日数据的新节点,以满足业务需求。


3. 考虑流程初始化和可恢复性


当新的数据节点启动时,它应该能尽可能高效地访问其所需的所有数据。这可能意味着它必须从另一个进程提取数据或从特定的存储位置加载数据,但这应该是无缝的,手动干预最少的。

如果数据节点出现问题并且崩溃,则该节点应该能够自动重新启动并恢复,实现系统恢复能力的最大化。


4. 实现数据持久化存储


确定扩展选项时,数据如何持久存储是至关重要的因素。为了获得最佳性能,数据节点可能需要与基础存储位于同一服务器上。在其他情况下,可以在多种类型的存储(包括网络存储)之间复制数据,以允许扩展数据的可用性,同时关键的请求优先使用快速的存储。


5. 设计负载平衡功能


任何有效的水平扩展架构,均应具有负载平衡功能,以确保将用户请求发送到可用的数据节点。但是,这个模块也可以提供其他功能,以完善解决方案架构。它可用于监视系统的运行状况,如有多少个可用节点以及每个节点上的负载如何,以便提供容量或其他问题等的预警。

它可以用作一种服务机制,以确保客户端具有对多节点群集的单点访问权限,或者可以用于将来自多个节点的数据统一为对最终用户的单个响应。另外,它可以包含服务质量因素信息,从而可以为用户提供性能经过优化的节点,也可以在任何执行队列中为特定用户请求赋予优先级。


结论


尽管kdb+的扩展性可能是一个复杂的话题,但我们希望通过这篇文章可以对kdb+水平扩展解决方案可以提供的好处有所了解。上述内容并非在每种情况下都是正确的选择,尤其是对延迟敏感的用例。尽管如此,它仍提供了在适当情况下进行扩展的简化,因此应在架构设计阶段予以考虑。





《kdb+中文教程》

  全文链接

前言及目录
第一章  简介
第二章  数据类型
第三章  数组
第四章  字典
第五章  函数
第六章  表与qSQL
第七章  I/O操作
第八章  数据库
第九章  应用例子
第十章  问答(含参考文献)

《kdb+中文教程》

主要内容

kdb+号称是世界上最快的内存数据库,q是kdb+的内置语言。事实上kdb+/q不只是内存数据库,更是一款高性能大数据平台,它使用统一的数据库处理实时数据和历史数据,同时具备CEP(复杂事件处理)引擎、内存数据库、磁盘数据库等功能。与传统关系数据库及现代大数据平台相比,kdb+/q具有更快的速度和更低的总拥有成本,非常适合海量数据的快速采集、存储、分析、处理和检索等。kdb+/q最初主要被用于金融机构海量数据分析和高频交易,目前被广泛用于人工智能、机器学习、物联网、智能电网、航天等领域。

《kdb+中文教程》是一本关于kdb+/q的中文入门书籍,内容分为三大部分:

第一部分(第一章)为kdb+/q简介,主要介绍kdb+/q的优势及不同许可类型,同时介绍了kdb+/q的下载、安装、基本操作及数据表操作等。通过学习本章,读者可以快速了解kdb+/q的特性,同时对kdb+/q的独特、简洁等有一个初步直观感受。

第二章至第八章为第二部分,是本书的核心内容,分别为数据类型、数组、函数、字典、表与qSQL、I/O操作及数据库。首先介绍了kdb+/q的基本数据类型,然后介绍了kdb+/q的数组(列表)、函数、字典、表,最后介绍了文件I/O操作、进程间通讯、数据库构建等。通过这部分内容的学习,读者可以掌握kdb+/q的基础知识,为kdb+/q的运用打下坚实基础,逐步将kdb+应用于实际场景,同时能进一步感受kdb+/q的简洁、灵活与强大等。

第三部分包括第九章和第十章。第九章通过实例介绍kdb+在股票期货数据处理方面的常见应用,包括历史行情数据库构建、策略回测与优化、实时行情处理等,并简单介绍了企业级开源证券期货交易平台Tx。第十章把一些可能有用的知识点以问答形式列出来,方便读者需要时查找。通过这部分内容的学习,读者可以参考常见应用实例,举一反三。





文章转载自kdb中文教程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论