2012-02-23 86 views
3

我正在研究一个Web项目,我正在考虑设计数据层,我认为它的很大一部分可以直接从Solr中使用。我可以使用Solr而不是MongoDB吗?

例如,在MongoDB中,faceting和count操作代替mapreduce,循环计数或$ inc。

Solr被称为“搜索”解决方案,但正如我所说,它看起来更像“db”解决方案。

Im“混淆”与Solr和db解决方案之间的重叠。

任何人谁使用它相似的意见,在生产?

感谢, 米哈伊

+0

您需要存储什么样的数据以及您需要对这些数据执行哪些操作?我成功地选择在项目中使用Solr来仅执行文本分析(不搜索),但我对数据和操作有非常特殊的要求。 – 2012-11-11 21:58:43

回答

0

Solr的是搜索。它的设计不是像普通数据库一样是一个弹性或可靠的数据源,也不能处理数据库可以处理的关系类型。例如,没有办法指定外键或强制约束。

Solr不支持mongoDB可能的“嵌套”数据类型。例如。在文档数据库,你可以有:

{ 
    id: 123, 
    title: "cat toy stores", 
    stores: [ 
    { 
     name: "cats'n'stuff", 
     address: "123 cat street" 
    }, 
    { 
     name: "the catteria", 
     address: "321 tail lane" 
    } 
    ] 
} 

但是Solr的,虽然Solr的支持多值字段,它不能代表nameaddress之间的连接,因此,如果这些都是字段给定的实体,你会结束了沿着线的东西:我用两个,而我认为,蒙戈是销售作为一个数据库和Solr是明确不

{ 
    id: 123, 
    title: "cat toy stores", 
    store-names: [ 
    name: "cats'n'stuff", 
    name: "the catteria" 
    ], 
    store-addresses: [ 
    address: "123 cat street", 
    address: "321 tail lane" 
    ], 
} 
+0

不错,但是,mongodb没有外键,只有约束是使用_id或你选择的“_id”。如果你没有使用嵌入式文档,并且你的要求是10个平键/值,那么你处于开始状态,并且它再次非常“困惑”使用什么:) – sinisa 2012-02-26 14:35:23

+1

solr自4.5开始可以存储嵌套文档,所以此答案中的参数是没有更多的有效阅读更多在http://blog.griddynamics.com/2013/09/solr-block-join-support.html – vumaasha 2013-09-18 21:18:14

+0

我目前没有运行Solr,所以我没有继续支持嵌套数据类型,但我的答案仍然普遍有效:solr用于搜索,而不用于存储关系数据。 – beerbajay 2013-09-19 07:23:59

0

,我觉得尽量减少运动部件的数量系统总是比安装市场垃圾更重要。因此,我会尽可能使用SOLR/Lucene而不是mongo。特别是,如果您需要立即进行搜索。

当然,可以配置SOLR DIH从mongo导入,但为什么要为自己创建额外的工作?根据示例代码,只需将您的信息发布到SOLR。如果您还有其他问题,请告诉我。

+0

DIH配置容易吗?我的意思是,与Solr的全平面模型相比,您将如何处理Mongodb的嵌套功能? – jplot 2012-10-24 17:05:19

+0

DIH上有一个[tutorial](http://wiki.apache.org/solr/DataImportHandler),它使基本配置成为复制粘贴作业@jplot – hd1 2012-10-24 22:13:38

相关问题