猫へようこそ! それでは、続けましょう:)。
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にはいくつかの変更が加えられました。
- 完全にOOPとPHP5、重大なエラーに対して例外をスローすることを学びました
- マルチスレッドアクセスのサポートの改善-同じテーブルから複数の選択を同時に行うことが可能
- インデックスを作成できる2つの新しい列タイプ-BYTEおよびDOUBLEを追加しました。 テキストフィールドはまだインデックス化できません
- ! 行分割-テキストフィールドの長さを増やすことが可能になりました! これは、いくつかのピースで構成される新しいタイプのレコードを導入することで実現されます。
仕事の例を見せてください!!
最初に、仮設フォーラムにインポートされた 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