Armadilloフォーラム

ローカルでの不揮発sqliteの仕様における寿命検討

haruka

2024年9月19日 11時37分

A6Eで、ローカルで永続的なDBをsqliteに持たせるアプリケーションを開発しており、eMMC内の不揮発領域を、コンテナからマウントする方式で現在開発をしています。

eMMC側の書き換え回数などを考慮せねばと思っているのですが、このような使い方においての参考情報や事例などありますでしょうか?

コメント

haruka

2024年9月19日 11時39分

補足です
A6E側は、/var/app/volumes/db/ 以下にsqliteのファイルを作成し、当該ディレクトリを、コンテナ側からマウントしています

at_shinya.koga

2024年9月20日 6時52分

アットマークテクノの古賀です。

harukaさん:
>>A6Eで、ローカルで永続的なDBをsqliteに持たせるアプリケーションを開発しており、eMMC内の不揮発領域を、コンテナからマウントする方式で現在開発をしています。
>>
>>eMMC側の書き換え回数などを考慮せねばと思っているのですが、このような使い方においての参考情報や事例などありますでしょうか?
>
>補足です
>A6E側は、/var/app/volumes/db/ 以下にsqliteのファイルを作成し、当該ディレクトリを、コンテナ側からマウントしています

eMMC の書き換え回数寿命に対する考え方は、このフォーラムの、以下の質問回答が参考になるかと思います:
 https://armadillo.atmark-techno.com/forum/armadillo/8834#comment-9415

eMMC の書き換え回数を考慮した方策の一つは、eMMC の寿命を減らす要因である WAF (Write Amplification Factor) が小さくなるようにすることだと思います:
 https://www.kingston.com/jp/blog/embedded-and-industrial/emmc-lifecycle
 https://www.paltek.co.jp/techblog/techinfo/230727_01

sqlite の場合ですと、ジャーナルモードを、デフォルトの DELETE から WAL (Write Ahead Log) に変更することで、eMMC への書き込み回数および、WAF を小さくする効果を得られる可能性が高いと思います:
 https://www.sqlite.org/draft/pragma.html#pragma_journal_mode
 https://www.sqlite.org/draft/wal.html
 https://www.sqlite.org/draft/wal.html#activating_and_configuring_wal_mo…

ちなみに、sqlite を標準データベース機能として組み込んでいる Android では、Android 9 から WAL を有効にしているようです:
 https://source.android.com/docs/core/perf/compatibility-wal
eMMC や UFS をストレージとして搭載するデバイスで主に使用される Android が、sqlite の WAL を有効にして使っているというのは、使い方の参考事例になるかと思います。

以上、もし参考になりましたら幸いです。