2013-12-14 42 views
1

我有一個巨大的唯一字符串列表(1.000.000.000+行)。 我需要知道該列表中是否存在字符串。 最快的方法是什麼?最快的數據庫引擎來存儲巨大的字符串列表

我想我需要一個帶有Btree索引的非常簡單的數據庫引擎,它可以讓我快速查找......而MySQL可能太慢而且複雜。

+0

如果你只需要爲特定的字符串做一次這樣的事情,你應該使用grep :-) – user152468

回答

2

如果這是全部你需要做的,你應該長期關注try和專用於字符串的相關數據結構(例如後綴數組)。有了這些字符串,你可以保證有很多重疊,這些數據結構可以消除這種重疊(不僅可以節省內存,還可以節省處理時間)。

+0

這個。 OP真正需要的是一個trie,而不是一個完整的RDBMS或NoSQL解決方案。 – DaSourcerer

+0

你知道這種結構的並行實現嗎?用數十千兆字節的字符串,我認爲並行會是一個好處。 –

+0

@GordonLinoff取決於你想要並行化。並行運行多個只讀查詢是微不足道的。施工應該很容易並行化:在每個級別上,根據其下一個字母來分割字符串,然後對每個桶單獨進行施工。它似乎沒有可能並行化一個搜索的部分,但由於查找是O(字符串長度),這似乎是一個沒有問題。 – delnan

相關問題