是否有一个C#开源搜索应用程序可以便宜地扩展?

是否有一个C#开源搜索应用程序可以便宜地扩展?,c#,sql-server,database,open-source,load-balancing,C#,Sql Server,Database,Open Source,Load Balancing,我需要快速替换一个具有以下特征的列表网站: 小型数据库(10000项,

我需要快速替换一个具有以下特征的列表网站:

  • 小型数据库(10000项,<1 GB)
  • <10%的项目每天更新/创建/删除
  • 最常见的活动是搜索整个数据集,返回1-1000个项目
  • 流量峰值为每天100万页的浏览量
现有应用程序的扩展策略是分离只读和读/写活动。多个从属数据库用于搜索,并向主数据库写入数据,主数据库使用MS SQL Server复制更新从属数据库

由于读操作比写操作更常见,因此这已被证明是一种廉价的数据库负载平衡方法,而无需真正的集群


我现在需要替换这个应用程序——是否有任何C#开源应用程序可以如此灵活地扩展?

您可以尝试一下。它是免费的,并且有一个类似于的免费管理器。

在我看来,搜索数据和存储数据是两种不同的业务操作。就我个人而言,我是Lucene.NET搜索的忠实粉丝,我会建议你调查一下它是否适合你的需要。Lucene.NET有许多陷阱,写入索引可能相当缓慢。在您的情况下,我认为您应该坚持将数据存储在关系数据库(即SQL Server)中并查看如何修改应用程序的搜索组件。

您是要求替换SQL Server还是替换搜索现有数据?替换搜索和更新数据的应用程序我不确定我是否理解这个问题,您的搜索策略很好,即SQL Server。更换前端不应该是应用程序中的主要开销,C#与许多其他技术一样适用,我怀疑具有类似的性能特征。是否建议用C#后端取代SQL Server?我想你想避免重新发明那个轮子,我想用MySQL或PostgreSQL来取代SQL Server。你是说这是一个三层应用程序吗?前端数据访问SQL Server?对不起,我想说得简洁一些,但没有说得足够详细。要替换的应用程序不是真正分层的,当前团队不知道代码库,所以要替换表示层,我们确实需要替换整个内容。我想问的是:是否有任何开源应用程序能够以这种隔离的方式进行数据访问?我们最终选择了在Linux上运行的Solr(),作为我们的搜索引擎,其中有一个.NET中间层用于预处理和缓存。快速燃烧并非言过其实,多方面搜索的可能性是无穷无尽的。到目前为止,我们对自己的选择非常满意。就面向公众的应用程序而言,Solr存储库是只读的,用户数据(读/写)分别存储在MS SQL数据库中。我认为Solr可以很好地扩展为一个读写存储,但这给了我们两全其美的优势。