代码之家  ›  专栏  ›  技术社区  ›  Maciek Sawicki

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

  •  3
  • Maciek Sawicki  · 技术社区  · 16 年前

    我有几GB的文本文件格式: {“user_ip”:“x.x.x.x”,“action_type”:“xxx”,“action_data”:{“some_key”:“some_value”…},…}

    每个条目是一行。

    首先,我想很容易找到给定ip的条目。这一部分很简单,因为我可以使用grep作为例子。然而,即使是这样,我想找到更好的解决办法,因为我想尽快得到回应。

    下一部分比较复杂,因为我想从所选ip和所选类型中查找条目,并在动作数据中使用某个\u键的特定值。

    可能我不得不将这个文件转换成sqldb(可能是SQLite,因为它将是桌面应用程序),但我会问是否有更好的解决方案?

    4 回复  |  直到 16 年前
        1
  •  1
  •   reko_t    16 年前
        2
  •  1
  •   Skilldrick    16 年前

        3
  •  1
  •   dsegleau    16 年前

    我只想提一下Oracle Berkeley DB 11gR2(于2010年4月1日发布)引入了对SQL API的支持。实际上,sqlapi sqlite3()API。因此,正如Jason所提到的,如果您希望SQLite的易用性,结合berkeleydb的可伸缩性和并发性,那么现在您可以在一个库中同时获得这两种功能。

    当做,

        4
  •  0
  •   jasonmp85    16 年前

    如果您需要基于SQL的数据库的关系保证,那么一定要继续 SQLite . 它将允许快速查询、连接、聚合、排序,以及所有你可能想到的搜索。听起来这只是一个由用户在某个IP上执行的操作的大列表,所以您可能希望使用某种序列作为主键,因为其他属性都不是很好的候选属性。

    Oracle Berkeley DB . 只要您不需要任何过于花哨的搜索,berkeleydb就可以让您存储数TB的数据并以创纪录的速度访问它们。

    因此,请查看这两种情况,看看什么最适合您的用例。它们适用于不同的事物,这可能就是为什么它们都可以作为Android上的存储系统。我认为SQLite可能会胜出,但在考虑嵌入式本地DB系统时,至少应该同时考虑这两种技术。