I have a requirement in my application wherein I have to every now and then perform insert and update queries on the database. Now, my question is shall maintain cache within the application and after specific intervals or may be after say 20 entries, commit the cache into the database?
挿入操作は、SQLite ではかなり高速です。db がオープン状態にならないように、finally ブロックでデータベースを閉じていることを確認してください。これにより、それ以上の挿入がブロックされる可能性があります。可能な限り、バッチ挿入を使用してください。はるかに高速です。こちらをご覧ください
If this is the scenario where shall I maintain the cache. Should it be on the application level or in the service?
サービスはアプリケーションレベルでも提供されます:)。サービスでキャッシュを維持し、別のプロセスでサービスを有効にする可能性があります。こちらをご覧ください。
There is a possibility that say the application abruptly crashes and hence the data that is there in the cache no longer persists.
残っている唯一のオプションは、他のプロセスでキャッシュを維持するか(これはいつでもクラッシュする可能性があります)、ディスク上に維持することです。内部ストレージである可能性があります。内部ストレージにキャッシュを維持することは、sqlite への書き込みと同じくらい良いか悪いかです。
What can be the possible scenarios for this.
キャッシュを実装するかしないかです。
I have read somewhere that everytime opening and closing the database is an overhead. Note: my database resides in the sdcard.
私の知る限り、SQLiteを開くことはファイルを開くことに匹敵し(少し遅くなりますが)、Oracleデータベースを開くことには匹敵しません。したがって、ほとんどの場合、データベースを開くのは手頃な価格ですが、パフォーマンスを向上させるために挿入をバッチ処理しても害はありません;)