【问题标题】:Storing searchable JSon in MySql在 MySql 中存储可搜索的 JSON
【发布时间】:2014-10-03 11:21:08
【问题描述】:

我有一张下表:

id | notification_id | user_id | metadata | created_at | modified_at
--------------------------------------------------------------------
   |                 |         |          |            |           

字段元数据包含一个json对象,例如:

{"transferId":100010003,
 "timestamp":1401778800000,
 "amount":1150,
 "customerTimestamp":1401778800000,
 "customerFullName":"John cusack",
 "customerMsisdn":460100000003,
 "customerMessage":"Test payment3",
 "assignee":Bob,
 "comments":this is a comment,
 "currency":"SEK",
 "balanced":false,
 "inboxNotificationId":0}

上面的json是可搜索的。这意味着可能存在对 customerName = john cusack 和 user_id = 1234 的交易元数据的请求。

我完全理解这是一个非常糟糕的设计。永远不要在 RDBMS 中存储一个 json 对象,如果它容易改变或者会被搜索。

我想优化架构,这样当我查询数据时,返回结果不会花费很多时间(目前需要很多时间)。为此,我可以想到三个选项:

  • 分解 json 对象并将字段存储在单独的列中,然后 索引它们。
  • 使用像 MongoDB 这样的 NoSql DB 来存储 json
  • 使用 solr

哪一个是最合乎逻辑和最有益的?他们都是?有人可以特别强调一下 solr(因为我不知道它是如何工作的),关于我为什么应该或不应该使用它?

干杯!!

【问题讨论】:

  • 考虑在存储之前对其进行解码,并在规范化环境中单独存储。
  • 你是说我说的第一点? (分解 json 对象并将字段存储在单独的列中并对其进行索引。)
  • 是的。确切地! (但我有偏见)

标签: mysql json solr nosql


【解决方案1】:

您肯定希望将 JSON 扁平化到各个字段中。你有不同的类型(字符串、布尔值、数字等),你希望它们分别处理。然后你可以决定你做什么,但你当然可以使用 Solr 来做这类事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 2011-06-18
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2011-03-26
    相关资源
    最近更新 更多