22

我非常喜欢 YAML 的数据模型,它保留了 JSON 的大部分简单性,并使用一些有时很重要的特性(例如自定义数据类型和引用)对其进行了扩展。

那么有没有什么方法可以在 YAML 数据模型(或非常类似的东西)中存储大量数据并使用索引进行查询?类似于 YAML 数据库,类似于XML 数据库或 Mongo DB 等 JSON 数据库。或者是否有一个从 YAML 到 Mongo DB 之类的映射器,可以让我透明地将它用作 YAML 存储?

我没有找到任何东西,所以也许没有。为什么会这样?这是一个愚蠢的想法还是 YAML 太年轻而他们会来?

4

3 回答 3

4

或者是否有一个从 YAML 到 Mongo DB 之类的映射器,可以让我透明地将它用作 YAML 存储?

据我所知,不是直接的。

主要问题似乎是 Mongo DB 的接口基于散列(即键值对)。所以本质上你是在问是否有从 YAML 到哈希的映射器。答案并不简单,因为 YAML 可以存储任意结构,而哈希则不能。

但是,如果您愿意简化对象,则可以部分执行此操作:

class SomeObject
  def initialize
    @bob = 'abc'
    @fred = 'cde'
  end

  def to_hash
    h = {}
    instance_variables.sort.each do |v|
    h[v] = instance_variable_get(v)
  end
  return h
end

如果您查看 to_yaml 代码,您会发现它与 to_hash 方法非常相似(因为这是我的想法)。

请注意,您可能还需要一个 from_hash 方法。你可能想开始为具有对象实例变量的类制定一个方案(即不仅仅是字符串、符号等)

现在插入项目的 mongo 代码:

include Mongo
db = MongoClient.new.db('test')
stuff = db.collection('stuff')
item = SomeClass.new()
... other code ...
stuff.insert(item.to_hash)

我意识到这并不能直接回答您的问题,但希望它仍然有帮助。

约翰

于 2014-02-02T23:44:24.397 回答
3

更新话题,看看:http ://blog.varunajayasiri.com/yamldb 。

“YAML 数据库是一个文档数据库,将文档存储为 YAML 文件。只需编辑 yaml 文件即可维护数据库中的文档。

该数据库被设计用于像 CMS 系统这样的系统,在这些系统中,需要一种简单的方法来编辑数据并且数据对象的数量不是很多。它还可用于存储设置和配置。

将数据库存储为单独的文件可以让您在数据库上使用 git 等版本控制系统,这也是存储设置、配置、博客文章和 CMS 内容的理想选择。”

于 2020-01-27T21:51:28.373 回答
2

Yaml而是用于配置目的。它不用于 MongoDB 等数据库,因为序列化时间比json. 事实上,json 不是 yaml 的子集(虽然很接近)。Json库通常更快:stackoverflow.com/questions/2451732/ ...。

如果需要考虑互操作性和速度,请使用 JSON。—— 埃里克·阿罗内斯蒂

于 2013-06-18T19:07:24.060 回答