Android の OrmLite の例の「HelloTwoDbs」の例を使用して、二重データベースの使用を同時に確認しました。
OrmLite を使用して複数のデータベースをセットアップしていると仮定すると、両方の異なるデータベースに問題なく同時に書き込むことができますか? データベースごとに「一度に 1 つのスレッド書き込み」のみですが、両方の書き込みスレッド (データベースごとに 1 つ) が同時に実行されます。
私はこれを 1 つのエミュレーターで次のコードで実際にテストしましたが、問題はありませんでしたが、OrmLite で実際にサポートされていて、将来問題が発生しないかどうかはまだ不安です.
ところで、私は小さなソーシャル インタラクション アプリを作りたいので、2 つの異なるデータベース アプローチを使用する傾向があります。また、主にユーザー生成コンテンツが同期および変更されるため、いくつかの理由でアプリケーションの静的コンテンツからユーザー生成コンテンツを分離したいと考えています。アプリケーションの静的コンテンツよりも高速な方法です。また、2 つのデータベースを使用すると、実際には両方のコンテンツを同時に異なるソースから異なるデータベースに同時に更新できます。
可能であれば、私を助けてください。=)
HelloTwoDbs.javaで「doOtherStuff」を呼び出すだけで、サイトの例に基づいて行った小さなテスト:
追加 ->
private void doOtherStuff() {
new Thread(new Runnable() {
@Override
public void run() {
Log.e(LOG_TAG, "Started 1");
final DatabaseHelper1 databaseHelperA = getHelper1();
try {
final Dao<SimpleData, Integer> simpleDao = databaseHelperA.getSimpleDataDao();
for (int i = 0; i < 5000; i++) {
Log.e(LOG_TAG, "Adding (1): " + i);
simpleDao.create(new SimpleData(i));
}
} catch (SQLException e) {
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
Log.e(LOG_TAG, "Started 2");
final DatabaseHelper2 databaseHelperB = getHelper2();
try {
final Dao<ComplexData, Integer> complexDao = databaseHelperB.getComplexDataDao();
for (int i = 0; i < 5000; i++) {
Log.e(LOG_TAG, "Adding (2): " + i);
complexDao.create(new ComplexData(i));
}
} catch (SQLException e) {
}
}
}).start();
}