19

私はデータベースの人ではなく、組み込みの人です。いくつかの場所でボトルネックがある既存のシステムを再設計するように依頼されました。

組み込みデバイスは、220mHzで動作するARM9プロセッサをベースにしています。

それぞれ1kのデータ(最大8つのファイル)を持つ50kのエントリ(250kに増加する可能性があります)のデータベースが必要です。それはおおよそです-必要に応じて、より正確な数値を取得しようと試みることができます。

彼らは現在SqlLite2を使用しており、SqlLite3への移行を計画しています。

炎上戦争を開始せずに-私はアドバイスを求めているだけの完全なd/b初心者です-それは「最良の」決定ですか?これは「一本の紐の長さ」かもしれないと思います。質問ですが、どんなポインタでも大歓迎です。私はたくさんの読書と研究をすることを気にしませんが、あなたが私を飛躍的なスタートに導くことができることを願っていました。ありがとう。

ps繰り返しになりますが、完全な書き直しは、組み込みLinuxに固執することすらできないかもしれませんが、eCosに切り替えると、d/b形式間の1回の変換についてあまり心配する必要はありません。ああ、アクセスは頻繁ではなく、せいぜい数秒に1回です。


編集:わかりました。それぞれ5つまたは6つのフィールドしかない30kのエントリ(100k以上に達する可能性があります)があるようですが、少なくとも3つはレコードの検索キーになります。彼らは「データがとても単純なので、d / bがまったくない」ことをいじっていますが、複数のキーでは、quicksort()タイプの検索(再帰的、バイナリ検索)のような凝ったものを使用できなかったようです。 )。データ構造だけで、「d / bなし」について何か考えはありますか?

ところで、1つのキーは800kです-SqlLiteがそれをどれだけうまく処理できるかわかりません(おそらく「nod / b」では、その800kをより小さなものにハッシュする必要がありますか?)

4

10 に答える 10

25

また、SQLiteは、事実上すべてのモバイルオペレーティングシステムによって選択されるデータベースです。Android、iPhone OS、SymbianにはSQLiteが同梱されているため、これらの電話(ほとんどの場合ARM)のプロセッサ用に最適化するために人手が費やされたと思います。

于 2010-01-06T09:13:35.817 に答える
13

私はSQLiteに固執します、それは広くサポートされており、機能がかなり豊富です。

于 2010-01-06T08:43:28.770 に答える
6
  • Firebird(以前のInterbase)は、うまく埋め込まれて動作すると主張しています。

  • HypersonicQL(HQL)は小型で高速であり、組み込み用途にも適していると主張しています。

残念ながら、私にはどちらの主張も裏付ける個人的な経験はありません。

于 2010-01-06T08:44:28.747 に答える
4

SQLiteはおそらくかなり安全な賭けです。ただし、アプリケーションにとってパフォーマンスが非常に重要であり、リレーショナルデータベースが必要ない場合は、BerkeleyDBのリンクテキストを確認することをお勧めします。ただし、BerkeleyDBはリレーショナルデータベースではありません。つまり、データが異なるテーブルにグループ化されており、複数のテーブルのデータを関連付ける必要がある結果セットを常にクエリする必要がある場合は、リレーショナルデータベースが必要になる可能性があります。Berkeley DBは、ルックアップテーブルなどに適しています(つまり、データはいくつかのテーブルに編成されており、必要な結果セットを生成するために複数のテーブルからデータをクエリする必要はありません)。Berkeley DBは非常に高速ですが、それを最大限に活用するには、より多くの作業が必要になります。

于 2010-01-07T05:27:16.553 に答える
3

別の方法が必要な場合は、berkeleydbを検討する価値があります。以前はsleepycatソフトウェアが所有していましたが、現在はoracleから入手できます。それは必要最低限​​のデータベースエンジンです。(SQLではなく)直接プログラム可能なフロントエンドです。これは、多くの主要なデータベースのコアエンジンの一部として、また多くの組み込みデバイスのデータベースとして使用されています。これは、ルーターのルーティングテーブルの管理に特に人気がありました。最近はもっとファッショナブルなセットアップのために見落とされがちですが、私はそれがまともでしっかりしていることを発見しました、そしてあなたが話している数字のためにそれは非常に速くなる可能性があります。

于 2010-04-03T22:36:53.803 に答える
2

sqlite3もお勧めします。多くの有名なアプリケーションで使用されています。

于 2010-01-06T08:46:31.040 に答える
2

SQLiteは問題ありませんが、600万行を超えるデータ(すべて同時に、または一部)を挿入、更新、および削除する場合は、使用しないでください。重要なのは、VACCUMキーワードは時々実行する必要があり、自動の場合でも、パフォーマンスの非常に深刻なボトルネックになります。

于 2012-08-03T20:36:46.620 に答える
2

8年遅れましたが、更新として: RaimaDatabaseManagerを使用してかなり良い経験をしました。フットプリントの小さいデータベースを探している場合は、40kまで下がることがあります。私がRDMを気に入っている理由の1つは、プラットフォームに依存しないことです。32ビットと64ビットのマシン間、およびビッグエンディアンとリトルエンディアンのアーキテクチャ間で移植可能であり、ほとんどのオペレーティングシステムをサポートしているため、組み込みで使用できます。最初の投稿で述べたように、LinuxとeCos。また、 SQLiteとは対照的に、より優れたハードウェアとユーザーを追加すると、パフォーマンスが向上します

于 2018-10-18T12:54:22.877 に答える
1

私は組み込みシステムに精通していませんが、iphoneはarm9とsqliteをDBとして使用しています

于 2010-01-06T08:43:55.447 に答える
1

01-11-10 Embedded.comニュースレターは、このトピックをカバーする素晴らしい仕事をしています。ニュースレターは、Embedded.com:Embedded.com Tech Focus Newsletter(1-11-10):EmbeddingDatabasesにあります

于 2010-01-11T14:45:45.660 に答える