Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询包含JSON对象的larg文本文件_Sql_Database_Json_Data Structures - Fatal编程技术网

Sql 查询包含JSON对象的larg文本文件

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,因为它将是桌面应用程序),但我会

我有几GB的文本文件格式: {“用户ip”:“x.x.x.x”,“操作类型”:“xxx”,“操作数据”:{“某些键”:“某些值”…},…}

每个条目是一行

首先,我想轻松找到给定ip的条目。这部分很简单,因为我可以使用grep作为例子。然而,即使是这样,我也希望找到更好的解决方案,因为我希望尽快得到响应

下一部分更为复杂,因为我想从所选ip和所选类型中查找条目,并在action_数据中使用某些_键的特定值


可能我必须将此文件转换为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许可证,所以我认为从法律角度来看,我可能可以使用它,不幸的是,我不确定我是否能够说服我的客户。