在MySql中存储可搜索的JSon

时间:2014-10-03 11:21:08

标签: mysql json solr nosql

我有一张桌子:

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的事务元数据的请求。

我完全明白这是一个非常糟糕的设计。如果json对象容易发生变化或者将被搜索,则永远不要将它存储在RDBMS中。

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

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

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

干杯!!

1 个答案:

答案 0 :(得分:0)

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