2009-07-08 10 views
3

現在、SNOMEDという医療用語を中心としたプロジェクトに取り組んでいます。眠っているの中心には、長さが350,000,1.1 mil、1.3 milの3つのリレーショナルデータセットがあります。私たちは、このデータセットを、データ補完部分のためにすばやく照会できるようにしたいと考えています。ここでは、自動補完/提案の形や形をしたいと考えています。大規模なデータセットの高速検索を実現する:MySQL MEMORY(HEAP)、Memcached、またはその他

現在のところ、開発者向けのMySQL MyISAM DBにありますが、いくつかのメモリオプションで再生を開始したいと考えています。現在、インデックスを含めて30MB + 90MB + 70MBのサイズです。 MEMORY MySQLエンジンとMemCachedは明白なものでしたので、私の質問は、これらのうちどれを提案するのか、そこに何か良い点がありますか?

私たちは、違いがある場合は主にアプリレベルでPythonで作業しています。まもなく4GB DDR2に移行する単一の小型専用サーバー上で実行しています。

編集:追加情報

我々は示唆して自動補完、高速を維持するのに興味を持っています。これらのタイプのキューにはうまくいくものが望ましいです。 snomedの各用語には、通常、いくつかの同義語、略語、および好ましい名前があります。このデータセットを大量に検索しています(インデックスを含むサイズが90MB)。物事をスピードアップし、より関連性の高い結果を返すために逆索引を作成することも検討しています(用語の多くは長く「デコレーション・バサリス(体の構造)の全体的なコイル状動脈」です)。 Luceneやその他の全文検索が適切かもしれません。

+1

解決しようとしている問題は何ですか?現在のディスクベースのルックアップは遅いですか?あなたはMySQLを使用してそれらをプロファイルできますか?自動補完ビットを速くしますか?その後、Sphinx/LuceneなどのFTSエンジンが必要になることがあります。あなたのケースのための適切なアーキテクチャは、特定の要件に応じて変更される可能性があります。 –

+0

これらの詳細の編集を参照してください。残念ながら、私はLuceneまたは類似の製品で多くの経験を持っていません。それに関するリンクや文献は高く評価されています。 – nategood

答えて

1

のLuceneでこれを行う方法については

を参照してください。 Luceneは、業界標準のフルテキスト検索ライブラリに最も近いものです。それは速く、質の高い結果をもたらします。しかし、Luceneをマスターするには時間がかかります。多くの低レベルの詳細を処理する必要があります。より簡単な方法は、より簡単にセットアップできるLuceneサブプロジェクトSolrを使用して、JSON出力のcan be used for autocompleteを与えることができます。

トッド氏によると、スフィンクスを使うこともできます。私はそれを一度も使用していませんが、MySQLと高度に統合可能であると聞きました。私はSphinxを使ってオートコンプリートを実装する方法を見つけることができませんでした。おそらくあなたはこれを別の質問として投稿するべきでしょう。

+1

オートコンプリートについては、スフィンクスで接頭辞と中置索引を使用することができます – nategood

2

あなたのユースケースからは、フルテキスト検索を実行するように思えます。私はsphinxを提案します。大規模なデータセットであっても、急速に高速化しています。余分な速度が必要な場合は、memcachedを統合することができます。

関連する問題