Подтвердить что ты не робот

Есть ли база данных YAML?

Мне очень нравится модель данных YAML, сохраняя большую часть простоты JSON и расширяя ее несколькими иногда важными функциями, такими как пользовательские типы данных и ссылки.

Итак, есть ли способ хранить много данных в модели данных YAML (или что-то очень похожее) и запрашивать ее с помощью индекса? Как база данных YAML, аналогичная базам данных XML или базам данных JSON, таким как Mongo DB. Или есть ящик от YAML до чего-то вроде Mongo DB, который позволяет мне прозрачно использовать его в качестве магазина YAML?

Я ничего не нашел, поэтому, возможно, их нет. Почему это так? Это глупая идея или ЯМЛ просто слишком молод, и они придут?

4b9b3361

Ответ 1

Или есть ящик от 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. И вы, вероятно, захотите начать разработку схемы для классов с переменными экземпляра, которые являются объектами (т.е. Не только строками, символами и т.д.).

Теперь код манго для вставки элемента:

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

Я понимаю, что это не отвечает на ваш вопрос напрямую, но, надеюсь, это все еще помогает.

Джон

Ответ 2

Yaml скорее используется для целей конфигурации. Он не используется для базы данных, такой как MongoDB, поскольку сериализация занимает больше времени json. На самом деле, json не является подмножеством yaml (хотя он близок). Библиотеки json обычно быстрее: stackoverflow.com/info/2451732/....

Если интероперабельность и скорость вызывают озабоченность, используйте JSON. - Erik Aronesty