使用Cassandra和Solr的网站最有效的架构?

时间:2011-02-01 01:48:19

标签: java php solr cassandra

我正在开发一个网站,它将使用Cassandra进行数据库存储,Solr用于索引和搜索该数据库中包含的一些数据(我只想搜索一些数据)。我打算使用PHP进行服务器端脚本编写,与Cassandra数据库连接,并根据数据库的内容提供动态HTML内容。

当用户向数据库提交内容时,我设想PHP向Cassandra发出写入,如果是需要搜索的数据,则可以将相同的数据写入Solr索引。问题是,我不一定需要Solr索引中可立即获得的可搜索数据,也不需要通过PHP消耗宝贵资源将其添加到索引中的过程,尤其是在高峰时段。有没有办法通过直接从Cassandra传输数据,在后台发生Solr索引的异步更新?也许可以创建一个可搜索数据队列,用于在空闲时间通过某个后台进程更新Solr索引?

我对这一切都很陌生,但我不知道Cassandra和Solr之间的链接是否与主PHP脚本隔离开来。不确定Cassandra和Solr是否可以通过Java高效链接,只有对Cassandra(用于读取/写入数据库)和Solr(用于查询可搜索数据)的更高级别访问权限可以在PHP中维护以用于Web内容创建。我很感激任何建议。

2 个答案:

答案 0 :(得分:5)

不要单独操作Solr和Cassandra,你应该考虑Solandra,一个solr的cassandra后端。

在此处详细了解:http://github.com/tjake/Lucandra

答案 1 :(得分:0)

你有很多选择。

一个简单的方法是拥有一个预定的作业,该作业从上次作业运行开始就抓取所有更新,然后批量插入到solr中。

或者你可以做你的cassandra帖子,然后向solr发出异步帖子。 如下所述:How do I make an asynchronous GET request in PHP?

由于您不需要实时搜索,因此您可以将默认提交大小设置得相当大。