share

语法

share <table> as <shared name>

或 share <obj> as <db>.<table name> on <column name>

详情

第一种用法:将一个表共享到所有会话中。包括表在内的局部对象在其他会话中是不可见的,需要通过共享,才能在其他会话中可见。共享名必须与所有其他会话中的普通表名不同。目前,只有表才能共享。DolphinDB服务器可以最多定义65535张共享表。

第二种用法:在分布式系统中表的共享。分布式表通过指定的列实现共享。在多个节点使用share命令保存一张共享表。

例子

  • 第一种用法

$ t1= table(1 2 3 as id, 4 5 6 as value);
$ share t1 as table1;
  • 第二种用法

首先配置两个节点。在一个节点的命令行窗口输入以下命令(node 8500):

$ dolphindb -logFile dolphindb.log0 -maxMemSize 50 -localSite localhost:8500:local8500 -sites localhost:8500:local8500,localhost:8501:local8501

在另一个节点的命令行窗口输入以下命令(node 8501):

$ dolphindb -logFile dolphindb.log1 -maxMemSize 50 -localSite localhost:8501:local8501 -sites localhost:8500:local8500,localhost:8501:local8501

然后在node 8500上执行以下脚本:

$ TickDB = database("C:/DolphinDB/Data/shareEx", RANGE, `A`M`ZZZZ, `local8500`local8501)
$ t=table(rand(`AAPL`IBM`C`F,100) as sym, rand(1..10, 100) as qty, rand(10.25 10.5 10.75, 100) as price)
$ share t as TickDB.Trades on sym;

在node 8501上执行以下脚本:

$ TickDB = database("C:/DolphinDB/Data/shareEx", RANGE, `A`M`ZZZZ, `local8500`local8501)
$ t=table(rand(`WMI`PG`TSLA,100) as sym, rand(1..10, 100) as qty, rand(10.25 10.5 10.75, 100) as price)
$ share t as TickDB.Trades on sym;

接下来就可以使用Trades或TickDB.Trades来访问表格。在两个节点上我们都可以运行以下脚本。

select count(*) from Trades;

count

200