私は、300,000 行をはるかに超える SQLite データベースに基づく辞書アプリに取り組んでいます。
問題は、最終的な形式のデータベース ファイルがフルテキスト インデックス テーブルで構成され、150Mbをはるかに超えることです。
内容のない fts4 テーブルを作成することで、.db ファイルのサイズを最小限に抑えることができました。データベースをこれ以上小さくすることはできません。また、事前に入力されたデータベースをアプリに配置することもできましたが、正常に動作します。
問題は、最終的な .db ファイルを /assets に保持して、最初の実行時に SD カードにコピーできないことです。サイズが大きすぎるためです。また、最初の実行時にダウンロードしたくありません。
INSERT
トランザクションとsqliteが最適化されていて、開始時にインデックスがない場合でも、データの一括処理には永遠にかかるため、オプションではありません。
良いことは、CSV形式で圧縮されたデータベースの構築に使用される生データが30Mbであり、sqliteのコマンドライン.import
オプションが非常に高速であることです(〜1秒で100,000行)が...それなしではアプリからアクセスできませんルート権限。
/assets に圧縮された CSV ファイルをアプリにバンドルし、それらを解凍し、sdcard にデータベースを作成してから CSV をインポートしたいのですが、それは不可能に思えます。まさにこれを行っているように見える多くの辞書アプリがありますが. (ダウンロードしたアプリは 12 メガバイトで、最初の実行時にデータベースを構築し、SD カードに数百メガバイトのスペースを必要とします)。
どうすればこれを達成できますか?
私は過去 2 週間これに取り組んできましたが、単にアイデアが尽きてしまいました。私はAndroid開発に不慣れなので、どんな助けでも大歓迎です。