私のビジネスモデルで問題が発生しています。詳しく説明します。
私は1年と数か月間ソフトウェアを開発しています。それは食品業界向けです。具体的には、次のようなソフトウェアです:配達、持ち帰り、テーブル予約、POS、買掛金と売掛金、プリント(領収書)、キッチンは注文を監視し、顧客は管理と会計領域を注文します。
まあ、私は主に2つの領域でソフトウェアを分離しました。1つはWeb領域で、もう1つはデスクトップ領域(管理者のみが使用)とローカルインストールです。
1-Webエリア(基本的には次のようにします:)
2-デスクトップ領域
WebエリアはオンラインのWebサーバーでホストされています(スクリプトとデータベースはオンラインです)。デスクトップ領域は、ローカルデータベースとローカルスクリプトファイルを使用して、Linuxマシンでローカルにホストされます。
私の質問は、両方のアプリケーションで1つのデータベースのみを維持することは可能ですか?はいの場合、最善の方法を教えてください。
データベース:実際には2つのデータベースが機能しているので、1つだけ保持したいと思います。
オペレーティングシステム:Linux(カーネル2.6.X以降)またはWindows(XP以降)
Webエリアの場合
デスクトップ領域の場合:
デスクトップ環境を作成する主な目的は次のとおりです。
デスクトップリレーショナルスキーマ:104テーブル。Webリレーショナルスキーマ:42テーブル。
私の本当の問題は、今日2つの環境があり、1つだけにすることです。次に、両方の世界を1つに「マージ」することはオプションですが、よくわかりません。私はここでこの問題について多くの考えを読みたいです。
プロセスの観察:今日は稼働しており、正常に動作していますが、プロセスによっては時間の浪費のように感じます。
シナリオを見てください。
簡単に言うと、税クーポンを埋めるために再度注文を生成する必要があります。同じことが、顧客登録、サプライヤー登録、およびその他のいくつかのものに起こります。
この情報が私の質問をより読みやすくすることを願っています。再度、感謝します!
短い回答:単一のデータベースを使用すれば、頭痛の種は確実に少なくなります。
そうしないと、使用する可能性のあるすべてのローカルデータベースで、レコードの同期の問題やレコードの重複が発生する可能性があります。
[〜#〜] dal [〜#〜](データアクセスレイヤー) を作成するだけです。クライアントアプリケーション(デスクトップ、ウェン、モバイルなど)がDALを介してデータベースにアクセスできるようにします。
可能です。また、メンテナンスや変更を簡単にするために追加する必要があります。
仕様を読んだとおり、MySQL
を使用していて軽量で簡単に開始できるため、単一のデータベースを使用して開発する可能性が非常に高くなります。いいえ、MySQL
がWebアプリケーション専用であると主張することはできません。多くのアプリケーションには、それを使用している製品とツールのドメインがあります。
直接データベース接続用に設定する必要がある対応する構成があります。ただし、デスクトップアプリケーションはstatic IPでパブリックホストサーバーに接続され、これを実行してデスクトップアプリケーションを使用できます接続を確立します。
また、この面倒な設定をやりたくない場合は、デスクトップ用のWebサービスを使用して、目的のデータベース操作を実行できます。
追加:より良い解析のために、WebサービスがJSONまたはXMLを使用している可能性があります。
注文は両方のデータベースに共通しているようです。その場合、2つのデータベースを同期する必要がないため、1つの共通データベースを使用することは理にかなっています。データに共通点がない場合は、それらを分離してください。
それらを1つのデータベースにまとめる場合は、いくつかのことが必要です。
1)Webおよびデスクトップアプリケーション用に個別のログオンを作成します。これにより、トレースツールを使用して問題をデバッグしやすくなります。各ユーザーがアクセスする必要があるものに従って、アクセス許可を割り当てます。
2)データレイヤーを構築し、ストアドプロシージャを呼び出すことでWebサイトのみがデータベースにアクセスできるようにします-これにより、SQLインジェクション攻撃を防ぐことができます。これはおそらく2つの間の共有ライブラリである可能性があります。
3)パフォーマンスが問題になる場合は、使用頻度の低いテーブルを別の物理ディスクに移動できるようにする必要があります(アカウントテーブルとサプライヤーテーブルを疑っています)。別のスキーマが必要な場合は、設計段階で検討してください。 (権限に関しては、ポイント1と関連付けます)トランザクションテーブルと非トランザクションテーブル。
デスクトップアプリとWebアプリの間で同じデータベースを共有することは有効です。ただし、デスクトップテクノロジ自体が必要な理由はわかりません。ユーザーが異なるが、デスクトップおよびWebベースのアプリケーション環境を使用する必要がない2つの異なる機能グループがあります。通常、データベースをそこに配置する必要がない場合は、データベースをWebから非表示にする利点があります。ただし、多くの場合、アプリケーションのWeb部分に必要な通常のセキュリティ対策を実装した後のリスクを受け入れます。複数の環境を使用することにはいくつかの問題があるため、バッチ処理は別として、質問ではデスクトップ機能が必須である理由として説得力のある要件を示していないと思います。その結果、ケースがないと思います。 2つの異なる環境の場合、リストしたすべての機能をWeb環境で処理できます(詳細が明記されていないバッチ処理を除く)。
また、アプリケーションが情報にアクセスするための単一のデータベースとWeb APIである3番目のアプローチを検討することもできます。
これにより、SQLServerを外部ソースに直接公開する必要がなくなり、アプリケーションがアクセスするものをより適切に管理できます。
また、デスクトップアプリケーションを毎回再デプロイするよりも、データベース構造の変更に合わせてWeb APIを更新する方が簡単です。
確かに可能です。mySQLはデータベースサーバーであり、ローカルでもリモートでも、複数のソースからの接続をサポートするように設計されています。
ただし、通常、mySQLはウェブホストにインストールすると、セキュリティ上の理由からローカル接続のみを許可するように構成されます。リモート接続を有効または無効にする設定が構成ファイルにあります。それに応じてこれを設定する必要があります。
詳細は MySQLデータベースサーバーへのリモートアクセスを有効にする方法 を参照してください。