PHPベースのWebサイトを構築するための高速で効率的なデータストレージを探しています。私はMySqlを知っています。MySQLデータベースの代わりにサーバーのルートディレクトリでJSONファイルを使用できますか?はいの場合、それを行うための最良の方法は何ですか?
4 に答える
次のように、JSONファイルを含む任意の単一ファイルを使用できます。
なんらかの方法でロックします(Google PHPファイルロック。ファイルを開く関数にパラメーターを追加したり、関数名をロックバージョンに変更したりするのと同じくらい簡単です)。
ファイルからデータを読み取り、それを内部データ構造に解析します。
オプションで、内部データ構造のデータを変更します。
データを変更した場合は、ファイルの長さを0に切り捨てて、新しいデータを書き込みます。
できるだけ早くファイルのロックを解除してください。他のリクエストが待機している可能性があります...
内部構造のデータを使用してページをレンダリングし続けることができます。ファイルロックを解除するとすぐにデータが古くなる可能性があり、他のHTTPリクエストによってページが変更される可能性があることに注意してください。
また、ユーザーのWebフォームからデータを変更する場合は、その間に変更された可能性があることに注意してください。たとえば、編集用のユーザー詳細をページにロードし、他のユーザーがそのユーザーを削除すると、編集者は変更された詳細を保存しようとします。削除されたユーザーを再作成する代わりに、エラーが発生する可能性があります。
注:これは非常に非効率的です。同時ユーザー数が10人を超えると予想されるサイトを構築する場合は、より高度なスキームを使用するか、既存のデータベースを使用する必要があります...また、JSONを解析して変更を生成するため、データが多すぎることはありません。 JSONには時間がかかります。
一度に1人のユーザーしかいない限り、データ量が増えるにつれて速度はどんどん遅くなりますが、ユーザー数が増えると、ユーザー数が増えるとリクエストとデータの両方が増えることを意味し、物事は指数関数的に遅くなり始めます。ファイルがリクエストを処理できるようになる前にHTTPリクエストが期限切れになり始める制限にすぐに到達します...
その時点で、高速化するためにハッキングしようとしないでください。代わりに、既存のデータベースフレームワーク(SQL、nosql、またはファイルベース)を選択してください。自分でハッキングを開始すると、車輪の再発明を行うことになりますが、通常は不十分です:-)。まあ、それが単なるプログラミングの練習でない限り、それでも、代わりにいくつかの既存のフレームワークの使用法を学ぶ方が良いかもしれません。
新しいバージョンのIBMInformix12.10 xC2は、JSONをサポートするようになりました。
リンクを確認してください:http://pic.dhe.ibm.com/infocenter/informix/v121/topic/com.ibm.json.doc/ids_json_007.htm
マニュアルには、MongoDBドライバーと互換性があると書かれています。
InformixJSON互換性について
MongoDBによって作成されたJSON指向のクエリ言語を使用するアプリケーションは、Informix®データベースに格納されているデータと対話できます。Informixデータベースサーバーは、組み込みのJSONおよびBSON(バイナリJSON)データ型も提供します。
MongoDBコミュニティドライバーを使用して、InformixでJSONドキュメントを挿入、更新、およびクエリできます。
確かではありませんが、Innovator-Cエディション(本番環境では無料)を使用して、本番環境でも無料でテストおよび使用できると思います。
データベースよりもJSON(または別のファイル形式)を優先できる明らかなケースの1つは、すべての(比較的小さい)データがアプリケーションキャッシュに格納されている場合です。
アプリケーションサーバーが(再)起動すると、アプリケーションはファイルからデータを読み取り、データ構造に格納します。
データが変更されると、アプリケーションはファイルを更新します。
利点:データベースがありません。
短所:さまざまな理由から、データが比較的少ないシステムにのみ使用できます。たとえば、数百の製品がある非常に特殊な製品サイト。