0
存储可搜索的JSON我有一个如下表:在MySQL
{"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是搜索:
id | notification_id | user_id | metadata | created_at | modified_at
--------------------------------------------------------------------
| | | | |
元数据包含JSON对象如字段。这意味着可能有一个交易元数据的请求,其中customerName = john cusack和user_id = 1234.
我完全理解这是一个非常糟糕的设计。切勿将RDBMS中的json对象存储,如果它易于更改或将被搜索。
我想优化模式,以便在查询数据时,不需要很多时间就可以返回结果(目前需要很长时间)。为此,我能想到的三个选项:
- 解体JSON对象并存储领域中单独列 指数它们。
- 使用的NoSql DB喜欢的MongoDB用于存储JSON
- 使用Solr的
哪一个是最合乎逻辑的和有益的?他们全部?可能有人请特别强调solr(因为我不知道它是如何工作的),关于为什么我应该或不应该使用它?
干杯!
考虑在存储之前对其进行解码,并将其分别存储在规范化的环境中。 – Strawberry 2014-10-03 12:58:56
你是说我做的第一点? (分解json对象并将字段存储在单独的列中并将它们编入索引。) – samach 2014-10-03 14:06:32
是的。究竟! (但我有偏见) – Strawberry 2014-10-03 14:15:42