PostgreSQL は豊富で拡張可能なフォームマシン。 enums
-カスタムメイドの集計を作成する 品種間のキャスト規則の概要 適度な努力で、ユーザーが輪郭を描いたフォームは本質的に見分けがつかないように感じることができます構築されたものから。 ここにリストされているのは、他のアイデアについてすぐに触れながら、検証と人間工学に焦点を当てています.
たとえば、semver
記号化するデータ形式
セマンティック バージョニング
SemVer の (非常に) 無料な入門書:
SemVer は、アプリケーションを表すための仕様です。下位互換性に関する対応データを維持するバリエーション。 フォームは、5 つの成分を含む文字列として表される合計です。
場所 プレフリーアップとメタデータ 必須ではありません.
すべてのコンポーネントの意図は、この記事の範囲外です図では、主なモデル番号を増やすことで、解放に伴う下位互換性のない変更が 1 つではなくなったことをユーザーに通知します。
分厚い仕様の簡潔な図、文法を調べてみてください.
SQL私たちの能力のために、SemVer フォームは、柔軟かつ効率的にクエリを実行する必要があるアプリケーションの重要なコンポーネントであることに驚かされます。 保存式
その荒らしに、モデルのすべてのコンポーネントを保存します
私たちはsemver_components
残念ながら、私たちの定義はプロットが寛大すぎます.
ここで、「表現できない無効な状態を実行する」という目的を達成するために、いくつかの検証ルールを追加する必要があります。
検証
ドメイン は、オプションでナレッジ フォームに制約を重ねるための Postgres のソリューションです。 ドメインはさまざまなものに 制約を見てみましょう
- はテーブルに。 たまたま制約に慣れていない場合は、javascript/python の zod/pydantic に対応するものとして、それらを true として受け入れることを目指しています。
いくつかの SemVer ルールを成文化して、それらを
semver_components に重ねてみましょう。これはヘルパーエイムを参照します:
さて、
semver フォームを使用するケースを見てみましょう。 (vs semver_components) 私たちは優雅な状態に落ち着きます:
無効な状態はエラーで拒否されます:
アウトしようとしています
私たちの検証は、手動で。 semver ドメインは、semver_components フォームと検証はロボットによって適用されます.
倫理的なもの!
48 の SQL トレースがあり、無効な状態を表現できないものにするために独自に解決しました。 壮大なエルゴノミクスを見てみましょう.
表示中
これで、データ フォームが適切に制約されたので、おそらく、 semver 型指定された列からの値はタプルを返します。
例:
(2,0,0,”{rc, 1}”,) 対 2.0.0-rc.1
いくつかの でその努力を回避しましょうカスタムメイドのキャスト
これにより、package_version を予測できます) テーブルを作成し、データの文字列の図を取得します。
または、さらに良いことに、生成された列
したがって、テキストの図はsemver 形式であり、予測/フィルター ペナルティは発生しません。
いろいろなトリック
Postgres は、ビルトインと同じくらいシームレスに SQL と連携するデータの種類/ドメインを実行するために、おそらくあなたが探している可能性のあるすべての手段を提供します.
を解析するための快適な機能を追加しますテキストからのセンバーフォーム
=
) 構成メタデータで最も異なるバリエーションが equal についての信念であることを適切に複製すると名前についてa.
企業のロジックの輝かしい側面をデータベースに合わせることで、スループットを大幅に強化し、IO を減らし、アプリケーション コードを簡素化できます。 結論
確かに、Postgres で高性能で人間工学に基づいたカスタムメイドのデータの種類を構築するには、かなりの儀式が必要です。
Postgres に、カスタムメイドのフォームのファーストクラスの強化を所有するように指示することで、データの整合性とパフォーマンスをさらに変革することができます.