Kdb IPC上的FK场

Kdb IPC上的FK场,kdb,k,Kdb,K,远程进程的一些先决条件: q)\p 15222 q)t:([id:10 20 30]data:`aa`bb`cc); q)kt:([]id:`t$10 20 20 30 30 30; num:til 6); 将在本地进程上执行以下操作: q)\p 15222 q)t:([id:10 20 30]data:`aa`bb`cc); q)kt:([]id:`t$10 20 20 30 30 30; num:til 6); kt的大小从两侧看都一样: 但是meta是不同的: 为什么会这样为什么传输的

远程进程的一些先决条件:

q)\p 15222
q)t:([id:10 20 30]data:`aa`bb`cc);
q)kt:([]id:`t$10 20 20 30 30 30; num:til 6);
将在本地进程上执行以下操作:

q)\p 15222
q)t:([id:10 20 30]data:`aa`bb`cc);
q)kt:([]id:`t$10 20 20 30 30 30; num:til 6);
  • kt
    的大小从两侧看都一样:
  • 但是
    meta
    是不同的:
  • 为什么会这样为什么传输的表不包含作为其源的完整信息(尽管大小相同)


    我怀疑这与
    enum
    -
    q
    有关,完全删除了
    enum
    信息-这是真的吗

    // remote
    q)e:`a`b`c;
    q)e1:`e$`b`a`c`c`a`b;
    // local
    q)`::15222 "type e1"
    20h
    q)type `::15222 "e1"
    11h
    
    是的,当通过IPC传输到另一个进程时,不会保留枚举(以及外键)

    -22开始等长
    并不意味着内容相同。

    是的,当通过IPC传输到另一个进程时,枚举(以及外键)不会被保留


    -22开始等长并不意味着内容相同。

    两个表之间存在差异的原因是枚举域没有通过IPC发送,因此无法保证枚举域存在于本地进程中或与远程进程相同。如果它是从远程进程通过枚举域发送的,那么它也有可能覆盖本地进程中的本地枚举域。 另一点需要注意的是-22!检查序列化大小,该大小将删除客户端和服务器上的任何外键。
    关于确定kdb对象的内存使用情况,可能值得进一步阅读。

    这两个表之间存在差异的原因是枚举域没有通过IPC发送,因此无法保证枚举域存在于本地进程中或与远程进程相同。如果它是从远程进程通过枚举域发送的,那么它也有可能覆盖本地进程中的本地枚举域。 另一点需要注意的是-22!检查序列化大小,该大小将删除客户端和服务器上的任何外键。 关于确定kdb对象的内存使用情况,可能值得进一步阅读

    // remote
    q)e:`a`b`c;
    q)e1:`e$`b`a`c`c`a`b;
    // local
    q)`::15222 "type e1"
    20h
    q)type `::15222 "e1"
    11h