0

我有一个基于 MS SQL 的应用程序,其主要目标是搜索公司表。这个公司表有几个可以搜索的列。如公司名称、地址、邮政编码、纬度、经度。

现在,由于需要速度,我正在考虑将其转换为基于 Redis DB 的应用程序。谁能帮助我采取哪种方法来正确地做到这一点?我应该如何设置我的 Redis 数据库?我应该如何查询它以查找公司名称中包含技术且位于 lat x-0.5 和 lat x+0.5 和 long y-0.5 和 long y+0.5 之间的所有公司?

或者 Redis 可能不是用于这种类型或搜索的最佳 NOSQL 数据库?也欢迎其他建议。

4

1 回答 1

1

Redis 是一种键/值存储,当您知道确切的键时,它的速度非常快,但它在搜索多个键以查找特定值或值范围时非常糟糕。所以我不建议你使用 Redis。

当您想通过 GPS 坐标进行搜索时,MongoDB将是一个选择,因为它具有丰富的 API,尤其适用于地理空间搜索

当您需要快速且功能丰富的全文搜索时,您应该看看Lucene,它本身不是数据库,而是与其他数据库集成的工具。

顺便说一句:“NoSQL 很快”的口头禅过于简单化了。确实,特定数据库可以比任何关系数据库更快地在特定前提下执行特定任务,但也有相反的情况。

你真的确定你已经使用了所有的可能性来提高你的 MSSQL 数据库的性能吗?

  • 您所做的每次搜索是否都使用适当的索引?
  • 您是否在显式辅助键上进行了所有 JOIN?
  • 您的数据库是否正确规范化?
  • 您能否通过重构数据库设计来避免一些昂贵的操作,即使这意味着您需要打破规范化?
于 2013-09-05T11:20:36.383 回答