2017-09-15 8 views
1

いくつかのAndroidデバイス(例:4.4 & 5.0)では動作するが、他のAndroidデバイス(7.0.1など)では動作しないionic 3 PouchDBアプリケーションがあります。それはすべてのiPhoneで動作します!私は、これはいくつかのアンドロイドのバージョンがWebview DBの数を1つのアプリケーションに制限していることが原因だと思う。1台のPouchDB DBに1台のPouchDB DBを複製してAndroid 1 DB制限を取得する

これを回避するにはSQLiteを使用しますが、SQLiteの方がはるかに遅く、画像を含むDB文書(特に私が持っているもの)の方が特に遅いことがあります。ですから、2つのCouchDBデータベースを1つのPouchDBデータベースに複製することを検討したいと思います。

私が質問のカップルを持っている:

  1. が、これはAndroidのDBの制限を回避する方法として、機能しない理由理由はありますか?私は2つのリモートDB(ニュース '&'イベント 'と呼ばれる)ごとにlocalDB.replicate.from(remoteDB)を持っています。
  2. 現在、私のCouchDBデータベースには、2017年の最初と最後の月には2017-12017-12のIDを持つドキュメントがあります.PouchDBに複製する2つのDBを持っていれば、一意のIDを持たなければなりませんか?私はどのように区別するだろうか?

答えて

1
  1. はい、あなたが好きなように、あなたがDBにできるだけ多くのDBSを複製することができますが、1デシベルに複製する場合、同じIDを持つ文書が"eventual conflicts"になるはずなので、一つの文書を失うだけで表示されます明示的に競合を要求してデータベースをマージしました。

  2. 非ランダムIDを使用する場合は、一意の名前空間を使用するように少なくとも1つのdbsを更新する必要があります(例:Event-2017-01)。これにより、依然として分離されたリモートdbsで双方向レプリケーションを実装する場合に必要なレプリケーションフィルタが簡素化されます。

私は通常、ドキュメントの添付ファイルにすなわち前置された別のドキュメントを与える:メディアを複製からフィルタリングすることができるようattachment-[orig_id]を。 1つの "メディア" db内のすべての添付ファイルを、指定されたクライアント用の理想的なアダプタと混在させ、通常のドキュメント用に他のアダプタを使用できるように、この方法で添付ファイルを解決することを検討してください。

したがって、たとえば、あなたが持っている可能性があります

mdb = new Pouchdb('media', {adapter:'idb'}). 
     replicate.from('http...news', {filter:'_view', view:'mediadocs'}). 
     replicate.from('http...events', ...filter...); 
    news = new Pouchdb('news', {adapter:'websql'}). 
     replicate.from('http...news', {filter:'_view', view:'normaldocs'}); 
    events = new Pouchdb('events', {adapter:'websql'}). 
     replicate.from('http...events', {filter:'_view', view:'normaldocs'}); 

をメディアとのフィールドは、元のドキュメントに基づいて別のドキュメントに分割されている場合は、何の冗長コピーはまだ..を持っていません。しかし、あなたは供給の一時的なDBSを構築することができますニュースやイベントから:一時データベースは比較的少ないリソースを使用しますが、そのドキュメントは、対応するメディアDBのドキュメントへのインデックスとして機能

today = new Pouchdb('today', {adapter:'memory'}). 
     replicate.from(news, {selector ..dayview..}). 
     replicate.from(events, ...selector...); 

+0

ありがとうございます。私のアプリケーションでは、一方向(PouchDBからCouchDBまで)での複製が必要です。私は添付ファイルとして保存することでパフォーマンス上の利点はないと思ったので、添付ファイルではなくフィールドとして文書内に格納されたbase64でエンコードされたJPEGを使用しています。あなたはどのように異なるアダプタを使用するかについて詳しく説明できますか? –

+0

idbをwebsqlよりも使用する理由はありますか?もう1つはAndroid向け、もう1つはiOS向けですか? –

+0

@BillNobleあなたは本当にアンドロイド/イオンの安定したオプションがたくさんあります。 idbにある程度の制限がある場合は、websqlアダプタを使用して再試行してください。indexdbは意図された方法ですが、pouchdbの考えは現時点でどのようなものでも上のcouchdbを実行することです... https://pouchdb.com/adapters.html – lossleader

関連する問題