簡體   English   中英

查詢包含JSON對象的larg文本文件

[英]querying larg text file containing JSON objects

我有幾千GB格式的文本文件:{“user_ip”:“xxxx”,“action_type”:“xxx”,“action_data”:{“some_key”:“some_value”...},...}

每個條目都是一行。

首先,我想輕松找到給定ip的條目。 這部分很簡單,因為我可以使用grep例如。 然而即便如此,我希望找到更好的解決方案,因為我希望盡快得到答復。

下一部分更復雜,因為我想從選定的ip和所選類型中找到條目,並在action_data中找到some_key的特定值。

可能我必須將此文件轉換為SQL db(可能是SQLite,因為它將是桌面APP),但我會問是否存在更好的解決方案?

是的,將它放入數據庫,任何數據庫。 然后查詢它將是直截了當的。

你可以看一下基於文檔的數據庫MongoDB 有了它,你實際上存儲了JSON對象,然后你可以索引並輕松地以有效的方式查詢。 您可以在文檔中找到有關如何查詢的信息: 查詢

只是想提一下,Oracle Berkeley DB 11gR2(2010年4月1日發布)引入了對SQL API的支持。 實際上,SQL API sqlite3()API。 因此,正如Jason所說,如果你喜歡SQLite的易用性,再加上Berkeley DB的可擴展性和並發性,你現在可以將它們放在一個庫中。

問候,

戴夫

如果您需要基於SQL的數據庫的關系保證,請務必繼續使用SQLite 它可以實現快速查詢,連接,聚合,排序以及您可能想到的任何類型的搜索。 聽起來這只是用戶在某些IP上執行的操作的大列表,因此您可能希望使用某種序列作為主鍵,因為其他任何屬性都不是好的候選者。

另一方面,如果您只需要進行非常簡單的查詢,例如按IP查找條目,按操作類型查找條目等,您可能需要查看Oracle Berkeley DB 只要您不需要任何過於花哨的搜索,Berkeley DB就會讓您存儲太字節數據並以創紀錄的速度訪問它們。

所以,看看兩者,看看什么是最適合您的用例。 它們適用於不同的東西,這可能就是為什么兩者都可以作為Android上的存儲系統使用的原因。 我認為SQLite可能會勝出,但在考慮嵌入式本地數據庫系統時,您應該始終至少考慮這兩種技術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM