提升二进制序列化格式规范

时间:2016-02-24 19:12:49

标签: c# c++ sql-server serialization boost

是的,我知道,boost生成的序列化数据仅供图书馆内部使用,不得被第三方阅读。然而,我发现自己处于一种我必须模仿源自.NET(std :: vector of tiny PODs)的二进制序列化数据的位置,这些数据稍后将通过boost(C ++ native)进行反序列化。由于程序集必须是CLR纯的,因此无法实现CLI / C ++与本机boost的互操作。 这可行吗?只是为了写出正确的字节序列?有没有二进制格式规范?我没找到。

EDIT001:一些背景:我在数据库中有一个表,有数亿行。每行包含两个ID - 实体ID,父实体ID和实体数据的附加列(JSON形式的所有实体数据,但它无关紧要,我无法更改它)。现在,在本机C ++中,我必须按父ID选择实体以获取它拥有的所有实体,它将产生(有时)5M行,因为可以猜测查询,接收,迭代,解析和加载到向量需要很长时间C ++结构。所以我测试了如果我有自己的父表ID为PK的表,以及列有所有属于该二进制文件二进制序列化列的列。结果(除了网络上的数据传输等)我可以在~400ms内解析(实际上,提升可以)它,这对我来说不是很快但是足够好。现在,如何使用二进制数据填充表格?显然DBA团队在这里无法提供帮助,他们对boost二进制格式一无所知,所以我使用CLR用户定义函数,必须实现为“纯”CLR。应该从存​​储过程调用此UDF,该存储过程使用单个实体填充表,最后将运行这些并创建二进制批量。但是如果我不能在程序集中调用boost(CLI / C ++),我怎么能模仿boost二进制格式?

0 个答案:

没有答案