こんにちは開発者!
私はテクノロジー愛好家のアレックスです。私のマルチモデルのトランザクション組み込みデータベース、Jinbase をお見せできることを嬉しく思います。
ほぼ 1 年前、私はマルチフォーマットのストリーミング連載についての私の見解である Paradict を紹介しました。その読みやすさを考えると、Paradict テキスト形式は事実上、構成ファイルにとって興味深いデータ形式であると思われます。しかし、設定ファイルの管理に Paradict を使用すると、そのプログラミング インターフェイスが乱雑になり、設定ファイル専用の代替ライブラリ (TOML、INI ファイルなど) をまだ選択できるユーザーにとっては混乱することになります。そこで、セクションを含む構成ファイルに焦点を当てた新しいプロジェクトである KvF (キー値ファイル形式) の依存関係として Paradict を使用しました。
Paradict はコンパクトなバイナリ形式なので、I/O 関数 (Open、Read、Write、Seek、Tell、Close など) に依存して最小限でありながら信頼性の高い機能を実装する新しいプロジェクトにとって効率的な依存関係になると思いました。永続化ソリューション。でもそれは「ファイルは難しい」ということを知る前のこと。トランザクション、BLOB データ型、BLOB の増分 I/O を備えた SQLite は、私の新しいプロジェクトに最適な巨人のように思えました。
Jinbase は、キーと値のストアとして小規模に始まり、最終的には SQLite で通常行っていることの限界を押し広げるマルチモデルの組み込みデータベースになりました。 2 番目のデータ モデル (デポ) への最初の移行は、キーと値のストアが、新しいレコードごとに一意の識別子 (UID) が自動的に生成され、ユーザーの労力を節約する必要がある場合にはあまり適していないことに気づいたときに起こりました。識別子を提供するという負担がかかるため、誤って衝突が発生し、既存のレコードが上書きされる可能性があります。その後、デポ ストアの UID 範囲、デポ ストアと Key-Value ストアの両方のタイムスパン (レコードに自動的にタイムスタンプが付けられます)、Key-Value ストアの文字列キーと整数キーの GLOB パターンと数値範囲を受け入れる検索機能を実装しました。 .
キュー データ モデルとスタック データ モデルは、レコードを特定の順序で消費する必要があるユースケースのソリューションとして登場しました。一般的なレコードは、単一トランザクション単位でデータベースから取得および削除されます。
SQLite がストレージ エンジンとして使用されているため、Jinbase は事実上リレーショナル モデルをサポートしています。便宜上、Jinbase の内部に関連するすべてのテーブルには jinbase_ というプレフィックスが付けられており、Jinbase はレガシー SQLite ファイルを開いて、アドホック リレーショナル モデルと安全に共存する新しいデータ モデルを追加するための便利なツールになります。
4 つの主要なデータ モデル (キーと値、デポ、キュー、スタック) はすべて、辞書、文字列、バイナリ データ、整数、ブール値、日時などの Paradict 互換のデータ型をサポートしています。書き込み操作を開始し、Jinbase はデータをシリアル化し (バイナリ データを除く)、チャンク化し、繰り返し格納します。レコードには一括アクセスできるだけでなく、バイト レベルとフィールド レベルの 2 つのレベルの部分アクセス粒度でもアクセスできます。
SQLite の BLOB に対する増分 I/O は、行内の個々の BLOB 列をターゲットにするように設計されていますが、Jinbase はこれを拡張して、各レコードの増分読み取りが単一の統合された BLOB であるかのようにすべてのチャンクをカバーするようにします。ディクショナリ レコードの場合に限り、Jinbase はルート フィールドへのポインタで構成される軽量インデックスを自動的に作成して維持します。これにより、返される前に自動的に逆シリアル化されたフィールドの内容を任意のレコードから抽出できるようになります。
Jinbase の最も明白な使用例は、ユーザー設定の保存、終了前のセッション データの永続化、データ ストリームの順序ベースの処理、他のプロセスへのデータの公開、新しいデータ モデルと特注のデータ永続化ソリューションによるレガシー SQLite ファイルのアップグレードです。
Jinbase は Python で書かれており、PyPI で利用でき、README の例で遊ぶことができます。
このプロジェクトについてのご意見をお聞かせください。
プロジェクトリンク: https://github.com/pyrustic/jinbase
以上がJinbase – マルチモデルのトランザクション組み込みデータベースの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。