服务支持
DolphinDB提供详尽的用户手册、使用教程、使用范例和常见问题解答。邮箱:support@dolphindb.com
常见问题及解答
  • DolphinDB数据库的数据规模可以超过服务器的内存大小吗?
    DolphinDB是内存和磁盘混合型数据库,不必把全部数据都装载到内存,所以数据库的数据规模可以远远超过服务器内存。DolphinDB以分区数据块作为最小粒度,将需要的分区里所选择的列载入内存。如果内存不足,系统会根据算法清除不再需要的分区,以释放内存空间并载入所需分区数据。
  • DolphinDB可以支持多大规模的数据?
    DolphinDB既可以垂直扩展,即通过增加内存、CPU等资源的方式来支持更多数据;也可以水平扩展,即通过增加节点的方式来支持更大的数据规模。因此,DolphinDB所能支持的数据规模并没有一个明确的理论上限,完全取决于投入资源的多少。

  • DolphinDB支持哪些部署方式?DolphinDB的产品安装部署有多复杂?
    DolphinDB目前支持四种部署方式:(1)工作站部署,通常用于台式机或笔记本电脑,供个人开发使用。(2)单服务器多分区部署。(3)多服务器集群部署。(4)云部署。
     
    无论哪种部署方式,DolphinDB系统都只需要一个二十几兆大小的可执行文件,不需要任何安装,复制到指定的目录即可。对于工作站部署,不需要任何配置,点击可执行程序即可运行。对于单服务器多分区部署,用户可以使用默认配置,也可自行配置几个参数,如最大内存使用量、线程池大小、端口号等。对于服务器集群部署,分两种情况,如果服务器数量比较少,可以手工配置每一个节点,也可以只为每个节点指定一个命名服务器,其余的工作由命名服务器自动完成。无论是哪种部署方式,都非常简单,参照DolphinDB的部署文档即可完成。
  • DolphinDB支持哪些操作系统?
    DolphinDB目前支持Windows与Linux两种操作系统。
  • DolphinDB支持32位、64位编程吗?
    DolphinDB支持64位与32位编程。32位版本受限于4GB的内存使用量。
  • DolphinDB可以同时支持多少并发用户?
    DolphinDB除了具有快速的响应速度,还具有很高的吞吐量和并发性。一个普通的DolphinDB PC服务器可以同时支持几百到几千用户访问。DolphinDB的高吞吐量和高并发性得益于以下几个因素:(1)DolphinDB优化了核心的数据结构,可以通过更少的CPU指令或周期完成同样的任务。(2)DolphinDB使用线程池模型,比起单线程模型有更好的并发性,比起线程每客户模型(Thread per Client)或进程模型(譬如Hadoop/Spark的JVM Process)使用更少的计算资源。(3)DolphinDB使用了吞吐量和并发性更高的网络连接模型,例如在Linux操作系统上使用的epoll。
  • 一般如何使用DolphinDB系统?
    用户可以通过以下3种方式使用DolphinDB:
    (1)通过命令行(Console),Web,或集成开发环境(IDE)使用内置开发语言进行交互式的访问。集成开发环境可以编辑调试程序,也可以观察数据。DolphinDB具有毫秒级的响应速度,以及简洁高效的开发语言,能带给用户极好的交互式体验,非常适合数据分析和产品研发使用。
    (2)编写脚本程序,在DolphinDB后台批处理运行。
    (3)通过编程接口(Programming API)访问DolphinDB,即把DolphinDB作为其他语言编写的程序的后台。目前DolphinDB提供了C++, Java, C#, Python, R, JavaScript, Json及Excel的API。

  • DolphinDB目前支持哪些数据接口?
    DolphinDB目前提供了CSV、ODBC、JSON和HDF5数据接口。
  • 第三方编程语言如Java、 C++、Python可以调用DolphinDB的功能吗?
    DolphinDB目前提供了Java、C++、C#、Python、R、JavaScript和Excel的接口。
  • DolphinDB支持文本数据的处理吗?
    DolphinDB的脚本语言提供了文件处理的函数,用户在需要的时候可以编写程序处理文本文件。但是DolphinDB数据库目前只支持结构化数据,不支持文档类型的数据。分析系统目前也不支持大规模文本的索引,查询和知识挖掘。DolphinDB的未来版本将支持文本挖掘。
  • DolphinDB数据库支持缺失数据(NULL值)吗?
    DolphinDB支持NULL值,处理NULL值的逻辑也与其他系统一致。简单来说, 系统在做集合统计分析时忽略NULL值,NULL值在与其它数值进行二目运算时返回NULL值。
  • 能否对数据做权限控制?
    DolphinDB不仅能够实现表级的权限控制,还可以实现函数级的权限控制。用户可通过自定义函数控制数据的访问范围,然后将这个函数的使用权限指定给目标用户,在数据访问上实现精确授权。
  • 如何进行集群的性能监控?
    在性能监控方面,DolphinDB当前提供了三种方式:
    (1)通过系统自带的web界面可以直观地查看性能数据。
    (2)通过DolphinDB脚本调用API获取各节点的性能数据。
    (3)对接第三方监控软件,例如Promethus或Grafana。
  • 在解决复杂任务时,是否需要把中间结果保存到磁盘?
    DolphinDB是默认在内存中运行的,中间结果保存到磁盘不是必需的操作,除非用户显式地执行数据保存的脚本。
  • 如果一个复杂任务的某一个子任务因为节点崩溃或运行异常导致失败了,是否需要将已运行过的子任务再运行一遍?
    当一个复杂任务被分解为子任务后,在执行过程中,如果某个节点在计算时发生崩溃,系统会自动查询其他冗余节点,将任务分配到冗余节点运行。在这种情况下,DolphinDB对节点崩溃这类异常的处理对于用户是透明的。
  • DolphinDB如何应对内存碎片问题?当系统存在大量内存碎片时,DolphinDB的性能和可用性如何?
    DolphinDB属于列式存储数据库。如果一整列的数据可以存储在一段连续内存中时,数据处理的编码会非常简单,性能也会非常高。但是如果数据量特别大,要找到大段的连续内存会变得非常困难。
     
    DolphinDB提供了适合大数据存储特点的内存管理算法,可以大大降低内存的碎片问题。但是当系统运行较长时间后,内存的碎片问题仍然不可避免。譬如某一个节点有128G的内存,一个数据表的某一个分区有1亿行记录,一个双精度或长整形字段就需要800兆的内存。某些情况下,系统可能会找不到连续的大段内存。
     
    DolphinDB的内置数据结构BigArray解决了这个问题,其智能算法会优先考虑连续内存,如果找不到连续内存,会将数据列分块存储在多个小段内存中。对于用户而言,这完全是透明的。无论是使用SQL还是DolphinDB的编程语言,用户都不需要考虑这个问题。经过优化的分段存储数据结构BigArray的性能表现非常优异,在进行数据遍历操作时,相对于连续内存(数组)的性能损失几乎可以忽略不计,在进行随机访问相关操作时,性能损失在5%~15%之间。
     
    DolphinDB可以良好地应对内存碎片问题,这也是DolphinDB相对于其他编程语言的优势之一。某些数据分析语言必须使用连续内存,当数据量增加时,经常会出现内存不足的问题,系统的可用性较差。
  • 在命令行启动控制节点或代理节点时,为什么会有“Permission denied”的错误?
    对于Linux用户,启动DolphinDB前需要执行以下命令来修改可执行文件的权限:chmod 777 dolphindb
  • 在Web集群管理器上点击了执行按钮,为什么数据节点的“Status”栏仍然是红色?
    点击执行按钮后,需要点击刷新按钮刷新节点的状态。如果刷新后“Status”栏仍然是红色,可能有以下4个原因:
    (1)端口被占用。点击“ServerLog”栏的view按钮,查看数据节点的log文件。如果出现“Failed to bind the socket on XXXX”,这里的XXXX是待启动的节点端口号。这可能是该端口号已经被其他程序占用,这种情况下将其他程序关闭或者重新给DolphinDB节点分配端口号在重新启动节点即可,也有可能是刚刚关闭了该节点,Linux kernel还没有释放此端口号。这种情况下稍等30秒,再启动节点即可。
    (2)防火墙未开放端口。防火墙会对一些端口进行限制,如果使用到这些端口,需要在防火墙中开放这些端口或者把防火墙关闭。
    (3)配置文件中的IP地址、端口号或节点别名没有书写正确。节点的IP地址需要使用局域网IP,避免使用“localhost”。
    (4)如果集群是部署在云端或k8s环境,需要在agent.cfg和cluster.cfg文件中加上配置项lanCluster=0才能正常启动。
  • 为什么DolphinDB GUI无法启动?
    DolphinDB GUI无法启动的原因有两个:一是没有安装Java,二是安装的Java版本不对,DolphinDB GUI使用环境需要Java 8及以上版本。Java下载地址https://www.oracle.com/technetwork/java/javase/downloads/index.html
  • 在Web上定义了变量,过一段时间后,为什么会报变量未定义的错误?
    使用DolphinDB Notebook时,若10分钟内无命令执行,系统会自动关闭会话以释放DolphinDB系统资源。推荐用户在DolphinDB GUI中编写和执行代码,DolphinDB GUI的会话在用户关闭之前会一直存在。
  • 为什么创建分布式表或访问分布式表时会有“DFS is not enabled or the system is not a data node”的错误?
    出现这样的错误可能有以下原因:
    (1)在单节点模式上使用分布式文件系统。分布式文件系统只能在集群模式中使用,集群部署请参考单服务器部署多服务器部署教程。
    (2)在集群的控制节点或代理节点上执行了代码。控制节点是用于管理数据节点以及分布式文件系统的元数据和事务,代理节点用于启动和关闭数据节点,一般不用于计算。用户只需要切换到数据节点执行代码即可。