使用BSON作为配置文件

时间:2014-01-29 04:40:17

标签: bson

我对BSON有一些疑问,首先我想要正确理解一些事情。

  1. 我见过将JSON文件用作配置文件的程序。这就是我想要尝试的。事实上.INIs例如不适合我的使用。我必须通过解析器输入我的程序参数列表。一些是ASCII字符串,一些是ASCII字符串数组,一些是32位整数,一些是64位,双精度数,双精度数组等。 我已经阅读了一些BSON文档。但在继续之前。我不知道...... BSON是否适合这种用途?

  2. 假设我有一个字符串数组[“hello”,“meow”,“whatsup”],例如......是否有函数可以专门访问数组的每个元素,例如类似于C中的数组[1]。

  3. BSON Library文档似乎包含一个用于创建BSON对象的API,但我没有看到任何解析器。使用BSON的关键不是在我的情况下实现解析器。所以我想知道......是否有一个库可以解析BSON文件,所以我只需要访问这些对象而不需要解析?

  4. BSON图书馆是否在Windows上无法使用?我可以将它包含在C ++ MSVC项目中吗?我想静态链接它,因为我的程序必须只是.DLL,是否可能?

  5. 我看到BSON包含int32和int64等数据类型。在BSON文件中,如何将实例声明为int32? 像这样的东西? :

    {“variable”:(int32)82730}

  6. 谢谢!

    谢谢!

1 个答案:

答案 0 :(得分:2)

  1. BSON 合适,因为它是二进制格式。存储在BSON中的配置文件不是人类可读的 但是,您可以使用C ++ BSONObj来处理存储在JSON中的配置。我更喜欢这个选项,我使用BSON来处理JSON,虽然我不得不重写JSON解析器和发射器,因为MongoDB提供的有一些限制(无法解析顶级数组,64位整数被编码以一种特定于MongoDB的方式)。
  2. 这取决于库,有几个BSON库:C ++ BSON库,Java BSON库,PHP BSON库等等。我只熟悉C ++ BSON库。在该库中,BSONArray中有一个operator[] (int field),所以是的,您可以进行随机访问 您还可以获得数组的vector副本,并且可以获得迭代器。 vector显然具有随机访问权限,并且将迭代器移动到所需位置也很简单。
  3. 这就是它的美丽,BSON不需要解析器。例如,您可以mmap一个巨大的BSON文件并开始使用它而无需任何解析。
  4. 该库的很大一部分只是标题,您可能很幸运使用库的标题部分而没有任何链接。应该可以编译和链接MongoDB DLL,但我从未尝试过。
  5. BSON文件是二进制的,它不是人类可读的 如果您正在将JSON解析为BSON,那么MongoDB JSON解析器支持"variable" : { "$numberLong" : "82730" }表示法。默认情况下,如果数字合适,则将数字解析为int32,否则解析为int64。