我有MySQL数据库,我在其中存储以下BLOB (其中包含JSON对象)和ID (用于这个JSON对象)。JSON对象包含许多不同的信息。比如,“城市:洛杉矶”和“州:加利福尼亚”。
到目前为止,这样的记录大约有50万条,但它们还在不断增加。而且每个JSON对象都很大。
我的目标是在MySQL数据库中(实时)进行搜索。比方说,我想搜索所有"state“到"California”和"city“到"San Francisco”的JSON对象。
我想利用Hadoop来完成这项任务。我的想法是,将会有“作业”,它从MySQL中提取,比如说,100条记录(行)的块,根据给定的搜索条件对它们进行验证,返回符合条件的(ID)。
赞成/反对?我知道有人可能会认为我应该使用简单的SQL功能,但问题是JSON对象结构相当“笨重”,如果我把它作为SQL模式,将至少有3-5个表连接,这(我试过了,真的)造成了相当令人头疼的问题,并且构建所有正确的索引消耗RAM的速度比我想象的要快。;-)即使这样,每个SQL查询都必须进行分析才能利用索引,否则使用全扫描从字面上来说是一种痛苦。对于这样的结构,我们唯一的“向上”方法就是垂直缩放。但我不确定这对我来说是不是最好的选择,因为我看到JSON对象将如何增长(数据结构),而且它们的数量也将增长。:-)
帮助?有人能给我举几个简单的例子来说明如何做到这一点吗?这有什么意义吗?我是不是错过了什么重要的东西?
谢谢。
发布于 2010-04-23 06:25:19
需要考虑的几点:
也许需要考虑的是使用Lucene将JSON对象作为文档进行索引。您可以将索引存储在solr中,并轻松地查询您想要的任何内容。
发布于 2010-04-22 13:04:21
事实上,你是..因为在一个巨大的字段中搜索文本要花费比索引数据库和搜索正确的sql方式多得多的时间。数据库是为与sql和索引一起使用而构建的,它没有解析和索引json的能力,所以无论您如何在json中搜索(可能只是hacky字符串匹配),都会慢得多。对于mysql来说,处理500k行并不是很多,您并不真正需要hadoop,只需要一个良好的规范化模式、正确的索引和优化的查询
发布于 2010-04-29 01:24:07
听起来像是您要重新创建CouchDB。CouchDB是使用map-reduce框架构建的,专门用于JSON对象。
https://stackoverflow.com/questions/2688305
复制相似问题