我们公司正在进行一个项目,该项目需要一个包含30-5000万行产品数据的数据库。这些行包含每秒需要同时搜索数千次的文本。此外,每次搜索需要不到一秒的时间来执行。
所以,总而言之,我们有一个50M的行数据库,每秒需要搜索数千次。请记住,这些都是全文搜索。我知道MySQL或任何关系数据库单独不能处理这种类型的工作。因此,我们正在寻找一个人谁可以为我们设计正确的设置,并帮助我们实现,为您指定的价格。
首先,我们想知道我们最好的选择是什么。我个人一直在研究Sphinx,Lucene,Cassandra,MongoDB,CouchDB,Solr等,但我真的不知道哪种应该与另一种结合使用,以便给我们提供最有效的设置。
所以,如果有人能给我们一些建议,或者接受我们的工作邀请,我们将不胜感激。
你可以在这里通过PM与我联系,我会给你我的电子邮件/即时消息/电话号码,以便进一步讨论。
谢谢!
发布于 2010-08-15 19:06:56
存储数据和搜索是两码事。如果你看看像ebay这样的架构,他们有独立的服务和服务器来进行搜索操作。50m行不算什么,您可以将其与任何数据存储一起存储,没有一个数据存储是完美的,所以区别在于用例。例如: cassandra在任何数据大小下都有最快的插入性能,可以轻松地扩展到to级的数百台机器(不需要分片),具有lucandra (cassndra-lucene集成,与elasticsearch相比可很好地扩展海量数据,但与elasticsearch相比是玩具),高耐用性,...MongoDB有更多的查询选项(使用btree作为数据库管理系统),最近有自动分片功能,可以索引所有字段,但持久性较差,...Postgresql是最先进的开源dbms,最近内置了主/从复制,可以通过分片进行扩展,符合acid和sql标准...couchdb在我认为与其他用例相比没有任何优势,它非常慢,如果我需要acid,我可能会使用postgresql。使用这些数据存储的内置fullText搜索功能存在一些问题,并且不可伸缩。
最先进的(海量数据,高性能,简单,分布式,容错,rest api)开源搜索引擎是elasticsearch,你可以把它想象成分布式lucene。与elascticsearch相比,Solr是滞后的。原始lucene/sphinx的使用是不可扩展的。
如果我是您,我可能会选择其中一个数据存储,并使用elasticsearh进行索引,并在我的数据访问层上同步它们(需要在db insert/update/delete上修改索引)。
问候
发布于 2010-08-15 12:18:07
保罗,欢迎来到SO。这并不是一个真正适合让别人为你工作的地方,但我有以下建议:
老实说,根据你正在做的搜索的类型,把MySql去掉可能有点为时过早。
因为它是产品数据,所以我认为你的搜索是全文搜索,所以放弃MySql还为时过早。Sphinx很棒,但配置起来有点麻烦。好处是它能够直接从mysql索引,而且您还可以与应用程序中使用的任何mysql连接器/绑定进行交互,因为它知道如何使用mysql的协议。
我会说cassandra,沙发和mongo并不是你真正想要的,它们都不是像狮身人面像那样的原生索引文本。你可以在它们上面滚动你自己的,但这将会适得其反。
我从来没有使用过lucene,但我听说过一些好的事情,这是一个类似于Sphinx afaik的解决方案。
祝好运
https://stackoverflow.com/questions/3486140
复制相似问题