データベースなしではプロジェクトはできません。 私たちは、その中に多くの条件を持つ多くの関連オブジェクトのリポジトリを見ることに慣れています。 これは間違いなく非常に便利ですが、さまざまな状況のため、ロードされたシステムでは、他の方法に頼らなければならないことがよくあります。 サンプルとトランザクションの数は最新のハードウェアによって制限されており、複数のサーバーに簡単に配布することはできません。 場合によっては、レプリケーションを使用できますが、現時点では万能薬ではありません。
非リレーショナルストレージは、キー->値のペアを保存できる分散I / Oシステムです。 このようなデータベースには、安定と不安定の2つのタイプがあります。 永続的(MemcacheDB、TDB、Hypertableなど)は、データをディスクに書き込み、トランザクションモデルを使用します。 不安定(Memcachedなど)-しばらくの間だけキーをメモリに保存します(そして状態を宣言しません)。
不安定版はキャッシングに使用すると便利で、安定版の負荷を軽減します。 最終的な実装は多数ありますが、MemcachedとMemcacheDBを選択しました。 第一印象に反して、Memcachedは結果の書き込み/読み取りよりもはるかに多くのことができ、ほとんどの場合に使用されます。 これを実現するために、私はそのような技術を使用したソリューションの効果的な産業開発に必要な既製のツールの欠如に直面しました。 こうして生まれたIMemcacheClient(Improved Memcache Client)により、実装を忘れてインターフェースを使用できます。
主な機能と利点:
- すべてのキー(ネームスペース)に共通のプレフィックスを設定する機能。
- 主な機能(get / set / append / prepend / increment / decrement)に加えて、モジュラーアーキテクチャには以下が含まれます。
1.オブジェクトのロック-ミューテックス(相互排除、ロック)を実装します。
2つのタスクの同時実行を防ぐために最もよく使用されます。
2.エントリオブジェクト-タグ付け機能を備えたタグストレージを実装します。
残念ながら、現時点では、タグ付けはネイティブではなく、追加のキーと個人の無効化によって実装されています。
3.キューオブジェクト-マルチビューをサポートする分散キューを実装します。
プロセスグループはキューに同時に書き込むことができ、別のグループはそれを読み取ることができます。 同時に、1つのレビューのフレームワーク内で1つのメッセージが複数回受信されないことが保証されます。
4. SharedIntegerオブジェクト-インクリメント/デクリメントをサポートするアトミック共有整数を実装します。
カウンター、洪水防止に使用すると便利です。
5. Object SharedObject-アトミック共有オブジェクトを実装します。
まれにしか更新されない小さな配列を効率的に保存できます。
- 配布には、Queueモジュールに基づくMapReduceフレームワークの実装が含まれます。 例が添付されています。
- MemcachedとMemcacheDBの両方で機能を使用する機能。
このプロジェクトは非常に若いですが、そうではなく、素晴らしく対処する差し迫った問題を解決するために書かれました。
アイデア、提案、バグレポートを喜んで検討します。開発は急速に進んでいます。
LGPL。
Web:
code.google.com/p/imemcacheclient-php作成者:kak.serpom.po.yaitsam@gmail.com