問題タブ [indexeddb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1210 参照

javascript - GWT library for indexedDB

Is there a GWT library for HTML5 indexedDB functionality?

Or, alternatively, is there a Javascript one I could wrap for GWT?

0 投票する
3 に答える
24155 参照

javascript - エラー「ミューテーションを許可しないデータベースでミューテーション操作が試行されました。」indexedDBでデータを取得するとき

私はこの簡単なサンプルコードを持っています:

私はこれを取得しています:

ミューテーションを許可しないデータベースでミューテーション操作が試行されました。"コード:" 6

オンライン

理解できません-私は何を間違えますか?

0 投票する
1 に答える
715 参照

html - HTML5Webストレージ抽象化ライブラリ

HTML5のWebストレージについて読んだところによると、さまざまなブラウザーでサポートが異なるさまざまなストレージオプションがあります。

HTML5アプリケーションでWebストレージを抽象化するための一般的なライブラリはありますか?

0 投票する
0 に答える
99 参照

html - HTML5Webストレージのサポート

重複の可能性:
HTML5Webストレージ抽象化ライブラリ

HTML5のWebストレージについて読んだところによると、さまざまなブラウザーでサポートが異なるさまざまなストレージオプションがあります。

構造化データに最適と考えられるストレージ方法はありますか?

0 投票する
1 に答える
2683 参照

javascript - IndexedDB と多対多の関係

IndexedDB で多対多の関係をどのように処理していますか?

たとえばBlog、ブログ投稿を保持するオブジェクトと、ブログ投稿Tagのタグ/ラベルのオブジェクトがあるとします。1 つは複数の をBlog持ちTag、1 つは複数のTagで使用できますBlog

2 種類のオブジェクトを格納するために and を作成します (ただし、提案は受け付けていますblog store) 。tag store

手に負えず、2つをリンクする2つの方法を考えることができます:

  1. andを保持するオブジェクトBlog.tagsの配列であるa を持っている(また、検索のためにストアにある) またはBlogTagblogIdtagId
  2. s を検索するために使用できる s のBlog.tags配列になるaがあります。tagIdTag

最初の方法はややこしいようですが、SQL でこれを処理する方法です。それは私が残すべき単なる SQL 手荷物ですか?

3番目の方法は、sのBlog.tags配列にすることだと思いますTag。これは最も単純なように思えますが、ブログ全体で s をクエリしTagたり、タグを再利用したりすることができませんでした (または可能でしたか?)。

他の誰かが indexedDB でそのような状況を処理しましたか? もしそうなら、あなたは結局何をしましたか?いくつかの落とし穴は何でしたか?

0 投票する
4 に答える
3215 参照

javascript - IndexedDBのラッパー関数

iPad /タブレットデバイス用のオフラインHTML5Webアプリを作成する必要があります。このアプリでは、ユーザーがサーバーからデータセット(データのテーブル)をダウンロードしてデバイスに保存できます。その後、ユーザーはサーバーから切断し、デバイス上でローカルにデータを表示/編集できます。これは、セルラーカバレッジがなく、データを収集/更新する必要がある遠隔地で作業する人々向けです。彼らがオフィスに戻ったとき、彼らはデータをサーバーに同期/アップロードすることができます。HTML5である必要がある理由は、プラットフォームに依存しないためです。つまり、HTML5をサポートする最新のWebブラウザーがあれば、iOS、Androidなどで実行できます。

これで、HTML5ローカルストレージ(データ用)とHTML5オフラインアプリケーションキャッシュ(pages / css / js / images用)を使用してシステムを構築しました。これは、小さなデータセット(表示、編集、保存が可能)で適切に機能します。オフライン中およびオンライン中のロード/同期)。次に、10,000行のデータにスケールアップする必要があります。動作しますが、かなり遅く、Intelクアッドコア8GBマシンにロードしている間、ブラウザが10秒間ハングします。

そのため、ローカルストレージよりも優れた代替手段をいくつか研究してきました。

1)WebSQL:SQL言語を使用してデータをクエリしたり、結合などを実行したりできます。問題は、非推奨になり、サポートされなくなったため、何かを構築するために時間を費やしたくないということです。

2)IndexedDB:オブジェクトストアを使用します(技術的には、ローカルストレージAPIを使用してオブジェクトを既に保存し、JSONを使用して保存しています)。SQL liteバックエンドでインデックスを使用するため、より高速になる可能性があります。データベースの作成、データベースへの追加、データベースからの読み取り、データベースの反復処理などの単純なタスクを実行するための定型コードはたくさんあります。のような単純なクエリを実行したいのですselect(xyc, abc).where(abc = 123).limit(20)が、代わりに多くのJavaScriptコードを記述して実行する必要があります。テーブル間の結合を行うための独自のコードをどのように作成しますか?

私は人生をより簡単にするかもしれない1つのjQueryプラグインを見つけました。IndexedDBを使用する際の苦痛を和らげる他のライブラリや他のライブラリはありますか?

どうもありがとう!

0 投票する
2 に答える
7855 参照

ios - HTML5iOSアプリケーションにデータを安全に保存する-localStorage/WebSQL / IndexedDBは適切ですか?

iOSアプリストアでリリースしたいHTML5アプリケーションを書いています。PhoneGapを使用するか、UIWebViewコントロールにラップされます。

アプリケーションのデータを保存するという点で、どのようなオプションがあるのか​​少し混乱しています。

このタイプのアプリケーションにアプリケーションデータを格納するのに適したlocalStorage、WebSQL、またはIndexedDBテクノロジを使用していますか?JSONとXMLデータを保存します。

ユーザーが誤ってこのデータを削除すると、作業内容が失われることに注意してください。これは明らかに私が望んでいないことです。

このリスクを軽減する唯一の実際の方法は、データを「クラウド」または他のオンラインシステムに同期することであると理解しています。これは将来のリリースで実行できますが、現時点では実行できません。それが物事を行うための合理的な安定した方法である場合、最初はデータをローカルに保存したいだけです。

私が理解していることから、Cookieをクリアすると、ブラウザはすべてのlocalStorageデータもクリアします。ユーザーが偶然にそれをしているのを見ることができるので、それはそれを除外します。

WebSQLはかなり見栄えがします-ユーザーがiOSで誤ってWebSQLを削除することはできません。実際には、ブラウザの設定に移動して、データベースを手動で削除する必要があります。

しかし、WebSQLの欠点は、私が読んだことから、将来的にサポートされなくなる可能性があることです。

IndexedDBでは、そのデータがいつクリアされるかがわかりません。Cookieが削除されたときにも削除されますか、それともSafari設定の「データベース」オプションがこれを制御しますか?

IndexedDBは、将来的にWebSQLよりも優れたサポートを提供するため、より優れたソリューションですか?

私が気付いていない、より適切な他の解決策はありますか?

0 投票する
7 に答える
14649 参照

javascript - 2011 年に iOS/Android 向けの HTML5 オフライン ストレージ ソリューションを開発中

問題:

電話またはタブレット タイプのデバイス (iOS/Android など) で 250,000 行以上のデータをオフラインで保存およびクエリするための、デバイスに依存しない (HTML5 などの) ソリューションが必要です。携帯電話のデータ接続がない遠隔地で働いている人がいて、このデータに対してクエリを実行し、オフラインで編集する必要があるという考えです。部分的には地理位置情報に基づいているため、(GPS を使用して) アセットが存在するエリアにアセットがある場合、それらのアセットが表示され、編集できるようになります。オフィスに戻ると、データをオフィス サーバーに同期できます。

Web 標準の観点からこれに取り組んでいる理由は、基本的に、Objective C と Java で 2 回記述するのではなく、HTML5 で 1 回記述してから複数のプラットフォームで動作することで、お金と時間を節約するためです。また、プラットフォームにとらわれないものを書いた場合、あなたは閉じ込められず、誰もが新しいものに移動したときに船と一緒に降りることはありません. Windows Mobile 5 用に作成された同様のアプリがありましたが、そのプラットフォームが廃止されたため、今では役に立ちません。

デバイス上のオフライン データベースは次のようになっている必要があります。

  • 高速 (2 秒未満の応答)
  • 潜在的に結合を実行し、データベースにクエリを実行できる他のテーブルとの関係を持つ
  • GPS 読み取り値に基づく x & y 座標など、特定の範囲または基準内のデータを選択します。

オプション:

HTML5 ローカル ストレージ:

5,000 個未満のキー/値の少量のデータには問題ありません。JSON に変換すれば、配列/オブジェクトを格納することもできます。

短所:

  • ハイエンド マシンでも 10,000 行を超えると、ブラウザの動作が遅くなります。
  • ストレージ全体を反復処理して手動で検索する必要があるため、データに対して複雑なクエリを実行して必要なデータを引き出すことはできません。
  • 保存できる容量の制限

ウェブ SQL データベース:

  • 要件を満たしています。
  • 250,000 行のクエリを高速に実行 (1 ~ 2 秒)
  • 複雑なクエリ、結合などを作成できます
  • Safari、Android、Opera でサポートされているため、iOS および Android デバイスで動作します

短所:

  • 2010 年 11 月に非推奨
  • クロス ディレクトリ攻撃によるセキュリティ上の欠陥。共有ホスティングを使用しないため、実際には問題ありません

索引付けされたDB:

インデックスを除いて、ローカル ストレージと同様のキー/値オブジェクト ストア。

短所:

  • 200,000 行でクエリを実行するのが遅い (15 ~ 18 秒)
  • 複雑なクエリを実行できない
  • 他のテーブルとの結合はできません
  • iPad/Android などの主な携帯電話やタブレット デバイスではサポートされていません
  • 規格未完成

これにより、非推奨の Web SQL メソッドを実装する唯一のオプションが残ります。これは、あと 1 年ほどしか機能しない可能性があります。現在、IndexedDB とローカル ストレージは使用できません。

Mozilla と Microsoft がどのようにして Web SQL Database 標準を非推奨にしたのか、そしてなぜ W3C がそれを実現させたのか、私にはわかりません。おそらくそれらの間で、デスクトップ ブラウザ市場の 77% を占めています。高度なモバイル デバイスでは、 Safari、Opera、Android が市場シェアの 90% 以上を占めているため、 Mozilla と Microsoft の影響力はほとんどありません。Mozilla と Microsoft が、オフライン ストレージが使用される可能性が最も高いモバイル市場でどの標準を使用する必要があるかをどのように決定できるかは、意味がありません。

代わりに IndexedDB を使用する理由についてのMozilla からのコメントは、主に「開発者の美学」に関するものであり、JavaScript で SQL を実行するという考えが好きではありません。私はそれを買っていません。

  1. 現在提案されている標準は劣っており、非常に基本的な NoSQL 実装であり、遅く、データベースに必要な高度な機能さえサポートしていません。データベースを確立してデータを取得するための定型コードはたくさんありますが、その上に、より高度な機能を提供する優れた抽象化ライブラリを作成すると主張しています。2011 年 10 月現在、それらはどこにも見られません。

  2. 彼らは、実際に機能し、メインのモバイル/タブレット ブラウザに実装されている既存の Web SQL 標準を非推奨にしました。彼らの「新しい」「より良い」標準は、主要なモバイルブラウザでは利用できません.

  3. IndexedDB 仕様が標準化され、より多くの機能が追加され、主要なモバイル/タブレット ブラウザーに実装され、物事を簡単にするための優れたライブラリが提供される 3 ~ 5 年間、私たち開発者は何を使用することになっているのでしょうか?

W3C は、Web SQL データベース標準を並行して実行し続け、問題を修正するだけです。すでに主要なモバイルプラットフォームをサポートしており、かなりうまく機能します. 最も多くのデスクトップ ブラウザ シェアを持つ Mozilla と Microsoft がこの標準を廃棄することができたという事実はかなり疑わしく、彼らが追いついて提供できるようになるまで、モバイル Web プラットフォームでの進歩を妨げようとする試みと見なされる可能性があります。 iOS/Safari および Android に対する競合ソリューション。

結論として、電話/タブレットデバイスのiOS/Androidで機能する私の問題の解決策はありますか? おそらく、バックグラウンドでクエリ機能を使用して複数のデータベース実装を使用でき、どのデータベースを優先するかを選択できる、優れたラッパー API です。Lawnchairのようなものを見たことがありますが、デフォルトではローカル ストレージしか使用できず、他のストレージにはフォールバックされると確信しています。遅いオプションよりも Web SQL (デフォルト) を使用した方がよいと思います。

解決策の助けに感謝します、ありがとう!

0 投票する
4 に答える
8254 参照

html - IndexedDBのパフォーマンス

誰かが私にIndexedDB(理想的にはChrome)のパフォーマンスに関する記事を教えてもらえますか?フェッチ、挿入、更新のパフォーマンスはどのようなものですか?

数千レコードを超えるデータセットにはほとんど使用できないというかなりの意見があるようですが、これがインデックス作成の欠如だけが原因ではないかどうかはわかりません-確かに概念的には、Webストレージよりも遅くなることはありません。どちらもおそらく内部でKey-Valueストレージを使用していますか?

ありがとう

0 投票する
3 に答える
20332 参照

javascript - IndexedDB データのエクスポートとインポート

シンプルなデータベースを必要とする自分用のツールを作成しています。これは HTML5 IndexedDB API を学ぶ良い機会のように思えますが、どの時点でもデータを失わないことが重要です。

ブラウザーのプロファイル ディレクトリをバックアップすることでバックアップがとれると思いますが、別のコンピューターで作業する可能性も考えているので、データベースをエクスポートおよびインポートすると便利です。IndexedDB データベースをエクスポートおよびインポートする簡単な方法はありますか? ブラウザ固有のソリューションは問題ありません。