Sql 查询包含JSON对象的larg文本文件
我有几GB的文本文件格式: {“用户ip”:“x.x.x.x”,“操作类型”:“xxx”,“操作数据”:{“某些键”:“某些值”…},…} 每个条目是一行 首先,我想轻松找到给定ip的条目。这部分很简单,因为我可以使用grep作为例子。然而,即使是这样,我也希望找到更好的解决方案,因为我希望尽快得到响应 下一部分更为复杂,因为我想从所选ip和所选类型中查找条目,并在action_数据中使用某些_键的特定值Sql 查询包含JSON对象的larg文本文件,sql,database,json,data-structures,Sql,Database,Json,Data Structures,我有几GB的文本文件格式: {“用户ip”:“x.x.x.x”,“操作类型”:“xxx”,“操作数据”:{“某些键”:“某些值”…},…} 每个条目是一行 首先,我想轻松找到给定ip的条目。这部分很简单,因为我可以使用grep作为例子。然而,即使是这样,我也希望找到更好的解决方案,因为我希望尽快得到响应 下一部分更为复杂,因为我想从所选ip和所选类型中查找条目,并在action_数据中使用某些_键的特定值 可能我必须将此文件转换为SQL db(可能是SQLite,因为它将是桌面应用程序),但我会
可能我必须将此文件转换为SQL db(可能是SQLite,因为它将是桌面应用程序),但我会问是否存在更好的解决方案?是的,将其放入数据库,任何数据库。然后查询它将非常简单。如果您需要基于SQL的数据库的关系保证,一定要继续。它将允许快速查询、连接、聚合、排序,以及所有您可能想到的搜索。听起来这只是一个由用户在某个IP上执行的操作的大列表,因此您可能希望使用某种序列作为主键,因为其他属性都不是很好的候选属性 另一方面,如果您只需要执行非常简单的查询,例如按IP查找条目、按操作类型查找条目等,您可能需要查看。只要您不需要任何过于花哨的搜索,Berkeley DB将允许您存储TB的数据并以创纪录的速度访问它们
因此,请查看这两种情况,看看什么最适合您的用例。它们适用于不同的事情,这可能就是为什么它们都可以在Android上作为存储系统使用的原因。我认为SQLite可能会胜出,但是当考虑到嵌入式的本地数据库系统时,你应该至少同时考虑这两种技术。 < P>你可以查看一个基于文档的数据库。使用它,您基本上可以存储JSON对象,然后可以高效地索引和轻松查询这些对象。您可以在文档中找到有关如何查询的信息:。只想提及Oracle Berkeley DB 11gR2(于2010年4月1日发布)引入了对SQL API的支持。事实上,SQL API就是sqlite3()API。因此,正如Jason所提到的,如果您希望SQLite的易用性,以及Berkeley DB的可伸缩性和并发性,那么现在您可以在一个库中同时获得这两种功能 问候, 戴夫谢谢。我试过了(在网站上的演示shell中),看起来很酷。然而,由于AGPL许可证,我可能无法在我的项目中使用它:(.//编辑:我看到驱动程序使用Apache许可证,所以我认为从法律角度来看,我可能可以使用它,不幸的是,我不确定我是否能够说服我的客户。