关于选择 SQL 或 NoSQL 搜索/持久化框架的建议

Advice required on choosing SQL or NoSQL framework for searching / persisting

我们正在尝试为我们正在为其构建 android 和 iPhone 客户端的工作门户构建后端。

这是一个基本字段,需要persisted/searchable。

  1. 需要存储用户元数据及其偏好。

    • 用户所属类别(单值)
    • 用户的技能。 (多值)
    • text 和 latlng 中的用户位置
  2. 职位数据及其可搜索字段。

    • 职位类别(单值)
    • 工作技能(多值)
    • 工作地点以文字和经纬度显示

一些基本用例:

  1. 当工作即将发布时,我们应该能够根据工作 category/skills 和 latlng.

  2. 获取附近位置的候选人列表
  3. 发布工作时,它必须匹配实际候选人并获取他们的元信息并坚持另一个 table/schema。

  4. 当一个新用户加入董事会时,为候选人获取 suitable 个职位并存储在另一个 table.

此数据将提供给 android/iphone 和网络仪表板以提供实时数据。

需要您的建议来考虑 HA、可扩展性、可靠性和成本等因素来选择框架。

要搜索,请尝试 Solr/Lucene。它具有极高的可扩展性、久经考验且成熟。

它们是具有不同优点和缺点的不同工具。两者都被大规模使用。对于小型项目,商业答案可能是 "Do what you know, because it will save you developer-hours."

请确保它不会让您陷入难以做出您想要的改变的境地。参见,例如,http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/

您可能希望将 MySql 和 Solr 用于不同的目的。对于 persisting 数据,最好使用 MySql 或类似数据库,因为它们将为您提供所有 ACID 属性。您应该 index 您的工作和用户数据 Solr/Lucene 可以在您的平台上实时服务 search 并提供 suggestion 自动完成功能。 Solr 还提供地理位置搜索,可用于匹配用户和工作。您始终可以在此基础上构建推荐功能。 CloudSolr 可以配置为 HA 和可扩展性。