【发布时间】:2012-07-22 00:42:57
【问题描述】:
在 Rails 应用程序中,我希望能够存储无模式的对象 -- JSON 数据结构,它可能具有不同的结构,从一个对象到另一个对象,或者在不同的时间用于同一个对象。
使用 ElasticSearch,我可以做到这一点。但是,我想为此使用某种带有 Rails 的 ORM。
尝试使用轮胎教程进行一些测试,在 Rails 控制台中执行此操作:
>>> c = Article.new :title =>'New article', :content => { :a => 'a', :b => 'b'}
我可以看到内容数据存储为序列化 YAML:
>> Article.last.content
=> "---\n:a: a\n:b: b\n"
这需要将搜索结果解析为 JSON,这不是问题。但主要问题是:我能否在序列化数据中进行搜索?有没有办法从任意结构化数据(如 Object.keys)中返回属性名称?
如果不是轮胎,是否有其他解决方案可以做到这一点?
【问题讨论】:
-
这看起来很适合 NoSQL,试试 CouchDB 或 Mongo。它会更灵活,而不是破解 SQL。
-
嗯,ElasticSearch 是 NoSQL ...
-
@rado:将elasticsearch用于概述的目的是绝对合法的。而且,原作者从来没有说过要“破解SQL”的意图,从他发布的代码中也看不出来。
-
@Dmytro i 不适用于 ElasticSearch。但是如果你想要没有模式的对象,NoSQL 更可取,因为整个数据都是序列化的,你可以搜索所有属性。
-
@karmi 对我不确定的答案感到抱歉,我知道这是合法的。我只想回答 nosql 对于这个问题会更实用
标签: ruby-on-rails elasticsearch tire