PHP DBMS-リアル! MooSQLの紹介!

MooSQL 人生の多くは、MySQLを手元に置いていない状況に直面していると思います(たとえば、ホスティング業者が許可していないなど、さまざまな理由で)。 今、あなたは希望を持っています:)! 私とnblxaは、 MooSQLというプロジェクトを導入したいと考えています 。その目的は、通常のMySQL 家の外で動作する場合に、純粋なPHPでMySQL互換DBMSを提供することです。



猫へようこそ! それでは、続けましょう:)。



MooSQLとは何ですか?



MooSQL [muu-school]はDBMSの名前であり、MySQL互換の構文をサポートすることを示唆しています。 それはそうです-現時点ではそのようなサポートはありません。 DBMS自体は、このhabratopike: habrahabr.ru/blogs/i_am_insane/70140で説明されているPHPデータストレージエンジンであるYNDbの論理的な続きです。



目標の1つは、(PHPのDBMSの場合)優れたスケーラビリティとフィールドインデックスの使用による高いパフォーマンスです。



何ができる?



MooSQLにはあまり対応していません-現時点では、YNDbのAPIのみが利用可能です。これについては、wikiページcode.google.com/p/moosql/wiki/HOWTOで説明されています。



それ以来、YNDbにはいくつかの変更が加えられました。



仕事の例を見せてください!!



最初に、仮設フォーラムにインポートされた YNDb-Forum.dklab.ru データベース(旧)に関するトピックで提供されたリンクを提供したいと思います。 それ以来、スパムボットは落ち着き、約600(!)Mbのテキストを書き込み、約120,000の新しいメッセージを(何と130,000に)書き込むことができました。 フォーラムはまだ機能しており、死の兆候を示していません:)。



私はそれに触れなかったので、同じデータベースを新しい場所、つまりMooSQLの新しいバージョンで実行されているフォーラムに再インポートしました 。 このリンクは、フォーラムのわずかに改善された(それ以降に登場したMooSQL機能を考慮に入れた)バージョンを使用し、この投稿の執筆時に最新バージョンのMooSQLに取り組んでいます。



技術的な詳細



DBMSは、フレームワーク、PHP拡張などに縛られることなく、PHP5で記述されています。 物理的には、テーブルとデータベースはそれぞれファイルとフォルダーです。 1つのテーブルは、インデックスの使用に応じて4〜6個のファイルで構成されます。 テーブルから読み取る場合、共有ロックがtable_name .lockファイルに課せられます。これにより、同じテーブルから並行して選択を行うことができます。 書き込み操作中、同じファイルに排他ロックがかけられます。



インデックスには、PRIMARY(AUTO_INCREMENT)、UNIQUE、およびINDEXの3つの形式があります。 PRIMARYインデックスの形式は非常に単純です。データファイル(32ビット)のオフセットは、 * 4アドレスに書き込まれます。 これにより、2 GBのデータファイルサイズの制限が課せられます。 UNIQUEインデックスの場合、Bツリー( Bツリーに関するWikipedia記事 )、INDEXの場合、Bツリーと重複値を格納するためのリストの組み合わせが使用されます。



データは、区切り文字やテーブルの構造に関する情報なしで、一連の行としてバイナリ形式で保存されます。 この形式を「MooISAM」と呼びます。 また、同じテーブルのデータへの高度なマルチスレッドアクセスを可能にする「MooDB」(InnoDBに類似)のフォーマットを作成することも計画されています(MooISAMは現在、10以下のアクセス並列度でほぼ正常に動作します)。 さらに、MooDBがある場合は、トランザクションと外部キーのサポートを追加できるように設計されます。



おわりに



このプロジェクトに興味があれば、ぜひ参加してください! YNDbと呼ばれるMooSQLコアは、すでに実稼働対応の安定性に近づいています。できるだけ多くの人を引き付けて、まず、DBMSの自動テストを作成してください。 現時点では、APIを正しく使用しているときにデータを破壊する可能性のあるエラーが少なくとも1つあります。 まあ、そしてもちろん、DBMSカーネルまたはSQLパーツの開発に参加したい人が求められています。 たとえば、Skypeに連絡してください。興味がある場合は、詳しく説明します。



Google Codeのプロジェクトサイト: code.google.com/p/moosql

PhpMooAdmin: moosql.googlecode.com/files/PhpMooAdmin.0.0.1.php



All Articles