問題タブ [data-synchronization]
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.
database - Flex/Air アプリを介してローカル データベース管理にアプローチする方法
Flash Builder 4/Flex を使用して、主にデータの記録、保存、分析に基づく AIR アプリケーションを作成することを計画しています。ほぼリアルタイムで更新する必要があるチャートなどを作成します。
アプリケーションがインターネットに接続せずに機能できることが不可欠であるため、さまざまなローカルデータベースが必要ですが、最終的には、どちらかのデータベースが新しいデータベースに基づいて相互に更新できるデータのオンライン同期を組み込みたいと考えています情報。さらに、何らかのタイプの暗号化は間違いなく歓迎され、速度は大きな懸念事項です
同期: 主に更新/追加/削除はオフライン データベースで行われますが、理想的には、同じ更新/追加/削除を許可し、同期される Web インターフェイスが必要です (それ以上に、正確な方法がわかりません)。最も達成可能なものに基づいてモデル化できるようにします)。2 つのデータベースの同期を処理できるビルド済みのエンジンがあるかどうか疑問に思っています。Web インターフェイスを追加専用にすることで、同期が大幅に簡単になる可能性があります..そして、そのように開始することもできますが、ある時点で完全なオンライン crud を実装するのに最適なテクノロジを使用して構築したいと考えています。
これらすべてを念頭に置いて、今後の頭痛を回避するための最善のアプローチは何ですか?
iphone - iPhone Core DataをWebサーバーと同期してから、他のデバイスにプッシュする方法は?
私は、iPhoneアプリケーションに保存されているコアデータをiPadやMacなどの複数のデバイス間で同期する方法に取り組んでいます。iOSのCoreDataで使用する同期フレームワークは(あるとしても)多くありません。しかし、私は次の概念について考えてきました。
- ローカルコアデータストアに変更が加えられ、変更が保存されます。(a)デバイスがオンラインの場合、変更セットを送信したデバイスのデバイスIDを含め、変更セットをサーバーに送信しようとします。(b)チェンジセットがサーバーに到達しない場合、またはデバイスがオンラインでない場合、アプリは変更セットをキューに追加して、オンラインになったときに送信します。
- クラウドにあるサーバーは、受け取った特定の変更セットをマスターデータベースとマージします。
- 変更セット(または変更セットのキュー)がクラウドサーバーにマージされた後、サーバーは、ある種のポーリングシステムを使用して、サーバーに登録されている他のデバイスにそれらの変更セットをすべてプッシュします。(私はAppleのプッシュサービスを使用することを考えましたが、コメントによると、これは実行可能なシステムではないようです。)
私が考える必要がある何か空想はありますか?ObjectiveResource、Core Resource、RestfulCoreDataなどのRESTフレームワークを見てきました。もちろん、これらはすべてRuby on Railsで動作しますが、私はこれに縛られていませんが、ここから始めることができます。私のソリューションに対する主な要件は次のとおりです。
- 変更は、メインスレッドを一時停止せずにバックグラウンドで送信する必要があります。
- 使用する帯域幅はできるだけ少なくする必要があります。
私はいくつかの課題について考えてきました。
- さまざまなデバイス上のさまざまなデータストアのオブジェクトIDがサーバーに接続されていることを確認してください。つまり、データベースに格納されているオブジェクトへの参照を介して関連付けられたオブジェクトIDとデバイスIDのテーブルがあります。レコード(DatabaseId [このテーブルに固有]、ObjectId [データベース全体のアイテムに固有]、Datafield1、Datafield2)があり、ObjectIdフィールドは別のテーブルAllObjects:(ObjectId、DeviceId、DeviceObjectId)を参照します。次に、デバイスが変更セットをプッシュすると、ローカルデータストアのコアデータオブジェクトからデバイスIDとobjectIdが渡されます。次に、クラウドサーバーはAllObjectsテーブルのobjectIdとデバイスIDをチェックし、初期テーブルで変更するレコードを見つけます。
- マージできるように、すべての変更にタイムスタンプを付ける必要があります。
- デバイスは、バッテリーを使いすぎずにサーバーをポーリングする必要があります。
- サーバーから変更を受信した場合、ローカルデバイスは、メモリに保持されているものをすべて更新する必要があります。
私がここで見逃しているものは他にありますか?これを可能にするには、どのようなフレームワークを検討する必要がありますか?
sql-server-2008 - あるSQLテーブルから別のSQLテーブルにデータを移動する最も効率的な方法は何ですか?
現在、あるSQL 20008マシンから別のマシンにデータを移動するために実行されるSSISジョブがあります。このジョブは、約 6 つのテーブルから約 200 万件のレコードを移動します。サーバーの負荷にもよりますが、これには約 5 ~ 10 分かかりますが、問題ありません。データは一時テーブルに移動されるため、サーバーへの負担以外に影響はありません。
しかし、私の問題は、そのデータをそれぞれのライブテーブルとマージしたいときです。これには、テーブルが空になってから再設定されるまでに約 15 分かかる場合があります。私が疑問に思っているのは、そのデータをテーブル間で移動する最も効率的な方法は何かということです。
現在のところ、その方法は次のとおりです。
drop tables
インデックスと制約を使用してテーブルを再構築します
insert into select データを移動し、
必要な計算を
実行します 次のコマンドを実行して、データの移動後にすべてのインデックスを再構築します。
ユーザーのダウンタイムを最小限に抑えるには、もっと良い方法が必要だと思います。私が考えていたのは、2番目のテーブルセットを作成し、準備ができたらそれらの名前を変更することでしたが、それが最善の方法であるかどうかもわかりません.
また、テーブルを削除して再作成する必要がないため、より良いマージコマンドについて読んだところです。これは、すべてのデータが利用可能なままであることを意味しますが、ほぼすべての列を見ないとレコードが変更されたかどうかを知るのは難しいです.
助けていただければ幸いです。
synchronization - クラウドベースの同期アーキテクチャ
クラウド ベースの同期ソリューション (Dropbox のようなもの) を構築することを考えています。
堅牢なアーキテクチャとはどのようなものでしょうか?
Windows、Mac、Linux、モバイル デバイスなどのさまざまなプラットフォームをサポートするには、どのようなテクノロジが必要ですか?
どの効率的な同期アルゴリズムを使用しますか?
私は単純なアーキテクチャ/ソリューションが次のようになることを知っています:
クラウド ストレージへのネットワーク呼び出しを行い、同期フォルダー ツリー構造 (メタデータ情報のみ) を取得します。
クライアントにファイルシステム モニターを配置して、ローカル同期フォルダー ツリー構造を構築します (ファイル システム モニターには lsyncd などを使用すると思いますか?)
前回の同期から同期フォルダー構造を取得します。これで、クライアントに 3 つのフォルダー ツリー構造ができました。これら 3 つのツリーを使用して、ローカル フォルダーで実行する必要があることと、サーバーのリモート フォルダーで実行する必要があることを判断できます。たとえば、アプリケーション固有の事前定義されたルールを使用して、追加、削除、編集、競合解決などを行います。
このアーキテクチャで十分かもしれませんが、問題は細部にあります。同期フォルダ ツリーが非常に大きい (つまり、非常に広くて深い) 場合はどうなりますか。差分を決定するための効率的なアルゴリズムが必要であることは明らかです。ネットワーク接続が切断され、ツリー全体を適切に取得または送信できなかった場合はどうなりますか? また、ネットワーク ペイロードなどを減らすために、ファイルの差分のみを送信します。
これらは私が設計したものであることは承知していますが、私の質問は、このアーキテクチャで十分かどうか、詳細に時間を費やすべきかどうかです。Dropbox はどのように設計されており、大きなフォルダ構造とデータ サイズの同期を非常に効率的にするために、どのような技術とアルゴリズムを使用していますか? このようなものを設計する際に参照できるリソース/書籍はありますか?
前もって感謝します。
database - オンラインとオフラインのデータを同期するための適切な方法
独自のデータベースを持つ2つのアプリケーションがあります。
1.)vb.net winformsインターフェイスを備え、オフラインのエンタープライズネットワークで実行され、中央データベースにデータを格納するデスクトップアプリケーション[SQL Server]
**すべてのデータ入力およびその他のオフィス操作は、中央データベースで実行および格納されます。
2.)2番目のアプリケーションはphp上に構築されています。HTMLページがあり、オンライン環境でWebサイトとして実行されます。すべてのデータをmysqlデータベースに保存します。
**このアプリケーションには登録メンバーのみがアクセスでき、最初のアプリケーションで処理されたデータのさまざまなレポートが利用できます。
次に、オンラインデータベースサーバーとオフラインデータベースサーバーの間でデータを同期する必要があります。次のことを計画しています
。1。)SQLServer[オフラインサーバー]のすべてのデータをCVS形式のファイルにエクスポートする小さなプログラムを作成します。
2.)ライブサーバーの管理セクションにログインします。
3.)エクスポートされたcvsファイルをサーバーにアップロードします。
4.)cvsファイルからmysqlデータベースにデータをインポートします。
私が計画している方法は良いですか、それともうまくいくように調整することができますか。また、アプリケーションの変更以外のデータ同期の優れた方法もありがたいです。mysqlデータベースを使用した他のネットワークアプリケーション
sql - SQLMERGEステートメントのパフォーマンスを向上させる方法
異なる内部サーバー上の2つのデータベース間でデータを同期するために現在実行している仕事があります。1つのサーバーは、FrontRangeのHEAT製品のバックエンドデータベースです。2つ目は、レポートの作成やその他の内部使用に使用している独自のレポートデータベースです。
仕事での最初のアプローチは次のようになりました。必要なHEATデータベーステーブルからすべてのデータをクエリし、ローカルの一時テーブルにデータを入力します。次に、そのデータを適切なテーブルにコピーします。それは機能しますが、インデックスや断片化のために何もせずに、毎回テーブルを切り捨てて再入力するために使用します。したがって、これはSQLマージステートメントを使用するのに適した候補になると思いました。
したがって、2番目のアプローチでは、各テーブルにマージステートメントを使用しました。プロセスの速度は大幅に向上しましたが、ユーザーが情報を保存しようとしたときに15〜30秒の遅延に気付くように、ソーステーブルがロックされているようです。マージで変更があったレコードまたは新しいレコードのみを処理するために、選択にBINARY_CHECKSUM関数を追加し、変更されていないレコードの更新を回避できるように、それを自分の側に保存します。すべてのレコードに対してそれを呼び出すのは高価なようです。このテーブルには約30万件のレコードがあります。
私が見落としているこれらの2つのテーブルを同期させようとするより良いアプローチがあるのだろうかと思います。私の唯一の制約は、ソーステーブルはサードパーティのアプリケーションであるため、実際には何も変更したくないということです。
CallLogテーブルに使用しているmegeステートメントは次のとおりです。
c# - SQL サーバー データベースの同期
私は 1 つのアプリケーションを持っています。この条件では、各 PC に対してのみローカル データベースを使用する必要があります....1 台の PC から何らかの登録が行われた場合、そのデータはローカル データベースに保存され、別の PC に送信される必要があります。 PC...要するに、すべてのデータを同期したい..
「データベースを集中化することはできません..1つのデータベースを使用してすべてのPCから接続することはできません..」という1つのことをクリアする必要があるため、同期のみが必要です...
SQL SERVER Express Edition を使用しています...そして C# .NET でアプリケーションを開発しています
疑問がある場合は、私に尋ねることができます。詳細を説明します...
sql-server-2008 - 2つのデータベースの同期中にDbNotProvisioned例外が発生しました
こんにちは以下は私のコードです...私は2つのデータベースを同期しようとしています..しかし次のような例外が発生します:
DbNotProvisioned例外
データベースが同期用にプロビジョニングされていないか、同期構成テーブルへのアクセス許可がないため、現在の操作を完了できませんでした。
database-design - データベース設計のジレンマ。GUIDまたはINT?
私は現在次のテーブルを持っています
上記は、アプリケーションのユーザーに再配布したいデータベースの一部です。
私のアプリケーションのユーザーは、自分の国や都市を追加することができます。現在のデータベース設計に従って、独自の都市を追加すると、City.Idの主キー値が明らかに増加します。
ただし、ある段階で、ユーザーがお互いのデータベースから国/都市を「プッシュ」または「プル」できるようにしたいと思います。例えば。User1は、彼の都市テーブルに追加の値を持っています。
User2の都市テーブルには次のものがあります。
それぞれが自分の都市テーブルにお互いの都市を入れたいと思っています。それぞれが異なる都市データをプッシュすると、City.Id、City.Name属性は完全には対応しなくなります。
ユーザー1:
User2:
すべてのユーザーデータベースで同じように見えるように、City.Id、City.Name属性を使用したいと思います。
では、City.IdのGUIDを使用する必要がありますか?または、私がこの望ましい同期を実現できる代替方法を知っている人はいますか。
.net - (.NET 4.0 C#)Sync Framework4.0CTPでブール値として「0」/「1」を解析します
SyncFrameworkが文字列"0"/"1"をfalse/trueのブール値として処理できるようにするある種の型コンバーターを使用することは可能ですか。bool.parseのドキュメントによると、デフォルトではサポートされていないので、回避する方法はありますか?
誰かがこの問題への別のアプローチを提案できる場合の詳細:Android用のカスタムSync Frameworkクライアント実装があり、SQLiteデータベースを使用しているため、テーブルフィールドに厳密なデータ型を適用する方法がありません。たとえば、「Is」プレフィックスを使用してブールフィールドを示す規則を思い付くことができますが、それは厄介です。もう1つのことは、SQLiteのブール値は数値型として扱われるため、SQLiteデータベースにブール値false / trueを挿入/更新すると、自動的に0/1に変換され、Android側でTRUE / FALSE=1/0変換を導入したくないということです。 。
どんな考えでも大歓迎です。
[更新]詳細:サーバー側は、Microsoft Sync Framework4.0CTPを使用しているいくつかのサービスで構成されています。スコープの作成などを除いて、構成するものは多くありません。クライアント側はチェンジセットを生成し、JSON形式を使用してサーバーに送信します。チェンジセットはSQLiteデータベースから取得されます(SQLiteには数値0/1以外のネイティブのブール表現はありません)。したがって、データベースを読み取るときに、取得するデータがブール型であるという兆候はありません。フィールド値は数値("0"または"1")の文字列としてJSONオブジェクトにシリアル化されるため、サーバー側はブール値に解析しようとして失敗します。
ところで、一方向のクライアントからサーバーへの同期を行う場合は、これを回避することができます。サーバー側のエンティティフィールドタイプを手動でバイトに設定しましたが、SyncFrameworkはそれを「ビット」データベースタイプとしてうまく使用しています。この回避策は、サーバーからクライアントへの変換では機能しません。