以下のMySQLデータベーステーブルには、約75,000のエントリがあります。テーブル内の各エントリは、さらにデータを取得できるシステム内のシンボルを表します。このテーブルは、オートコンプリートの目的で照会されます。ユーザーがシンボルを検索すると、シンボルの名前またはそのタグ (セミコロンで区切られた文字列のリスト) と照合されます。ユーザーが正しいシンボルを選択すると、関連するデータが取得されます。テーブルの説明は次のとおりです。
CREATE TABLE `symbols` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(512) NOT NULL,
`tags` varchar(512) DEFAULT NULL,
`type` enum('1','2','3','4','5','6','7','8','9') NOT NULL,
`popularity` int(11) DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `uc_symbol_name` (`type`,`symbol`),
KEY `symbol_idx` (`symbol`),
KEY `type_popularity_idx` (`type`,`popularity`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
上記のテーブルは、大量のデータとともに、JSON API を介してこのデータを提供するバックエンド マシンに保存されます。現在、フロントエンドの JavaScript コードは、オートコンプリートを行うために AJAX でバックエンド サーバーに直接クエリを実行しています。代わりに、高速化するために、フロントエンドが提供されるサーバー上にシンボル テーブルのローカル キャッシュ バージョンを作成します (フロントエンドは django で記述されています)。これは、テーブルに含まれるシンボルが 100,000 未満であり、テーブルが 1 分に 1 回しか更新されないため可能です。さらに、レーベンシュタイン距離などのより優れたマッチング アルゴリズムを実装できるようになります。
このタイプのキャッシュされたシンボル テーブルをどのように作成しますか? 明らかに、ルックアップはコード (おそらく Python) で行う必要がありますが、データをどのように保存し、1 分に 1 回同期するのでしょうか? django フロントエンド サーバーで Redis サーバーを実行していますが、永続性の問題が生じます...どんな考えも大歓迎です!