有YAML数据库吗?

时间:2013-02-23 15:53:07

标签: mongodb yaml database

我非常喜欢YAML的数据模型,保留了JSON的大多数简单性,并使用一些有时重要的功能(如自定义数据类型和引用)来扩展它。

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

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

3 个答案:

答案 0 :(得分:3)

  

或者是否有一个从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)

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

约翰

答案 1 :(得分:2)

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

  

如果需要考虑互操作性和速度,请使用JSON。 -   Erik Aronesty

答案 2 :(得分:2)

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

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

该数据库旨在用于CMS系统之类的系统,在该系统中,需要一种简单的方法来编辑数据,并且数据对象的数量不是很高。它也可以用来存储设置和配置。

将数据库存储为单独的文件,使您可以在数据库上使用git等版本控制系统,这再次非常适合存储设置,配置,博客文章和CMS内容。”