我的格式文件文件很少: {“user_ip”:“x.x.x.x”,“action_type”:“xxx”,“action_data”:{“some_key”:“some_value”...},...}
每个条目都是一行。
首先,我想轻松找到给定ip的条目。这部分很简单,因为我可以使用grep例如。然而,即便如此,我希望找到更好的解决方案,因为我希望尽快得到答复。
下一部分更复杂,因为我想从选定的ip和所选类型中找到条目,并在action_data中找到some_key的特定值。
可能我必须将此文件转换为SQL db(可能是SQLite,因为它将是桌面APP),但我会问是否存在更好的解决方案?
答案 0 :(得分:1)
是的,把它放到数据库,任何数据库中。然后查询它将是直截了当的。
答案 1 :(得分:1)
答案 2 :(得分:1)
只是想提一下,Oracle Berkeley DB 11gR2(2010年4月1日发布)引入了对SQL API的支持。实际上,SQL API 是 sqlite3()API。因此,正如Jason所说,如果你喜欢SQLite的易用性,再加上Berkeley DB的可扩展性和并发性,你现在可以将它们放在一个库中。
问候,
戴夫
答案 3 :(得分:0)
如果您需要基于SQL的数据库的关系保证,请务必继续使用SQLite。它可以实现快速查询,连接,聚合,排序以及您可能想到的任何类型的搜索。听起来这只是用户在某些IP上执行的操作的大列表,因此您可能希望使用某种序列作为主键,因为其他任何属性都不是好的候选者。
另一方面,如果您只需要进行非常简单的查询,例如按IP查找条目,按操作类型查找条目等,您可能需要查看Oracle Berkeley DB。只要您不需要任何过于花哨的搜索,Berkeley DB就会让您存储太字节数据并以创纪录的速度访问它们。
请仔细查看两者,看看哪种情况最适合您的用例。它们适用于不同的东西,这可能就是为什么两者都可以作为Android上的存储系统使用的原因。我认为SQLite可能会胜出,但在考虑嵌入式本地数据库系统时,您应该始终至少考虑这两种技术。