スキーマを使用してデータベーススキーマを探る


どのように、あなたは新しいデータベースを調査しますか?チャンスは、あなたが新しい仕事を始めているとすぐにデータがどのようにレイアウトされている速度を取得しようとしている.または、あなたは、お金の価値を見てしようとしてコンサルタントであり、インテリジェントクライアントのスキーマのデザインについて話す.たぶん、あなたは休暇から戻って、他の開発者がデータベースに何を変更したかを見たい.
SchemaCrawlerはあなたが非常に迅速に必要なものの中心に得ることができます.私たちはあなたが顧客に対処するアプリケーションの一部があることを知っているとしましょう.あなたは“Customer”と呼ばれる列またはそのような何かがあることを期待するでしょう.SchemaCrawlerにデータベースに接続し、.*CUSTOMER.*などの正規表現を使用して、“Customer”という単語を持つ列を持つすべてのテーブルを見つけることができます.次に、外部キーの関係に基づいて関連するテーブルを見つけることができます.最後に、データベースダイアグラムで結果をグラフ化できます.このテクニックを使用すると、非常に迅速にあなたが興味を持っているスキーマ情報を取得することができます-通常、分の問題です.SchemaCrawlerは、それがドリルダウンのこの種のために提供する機能のユニークです.
大きなデータベースでは、何百ものテーブルを持つことができます.ほとんどの人は図の形でこの全体のスキーマをプリントアウトしようとし、参照のために空白の壁に貼り付けます.これは、人々がGoogle検索に使用されている現代で特に情報を得るための生産的な方法ではありません.SchemaCrawlerは、データベースメタデータの“Google検索”の一種です.次に、壁に1つの巨大な図を持つ代わりに、手元にある特定の研究課題のために、需要に応じて作成された多くの小さな図があります.
あなたが休暇から戻ったとき、開発者が非常に活発であった場合を考慮してください.あなたの壁の図の上に作成された新しいテーブルと列のいずれも見つけることができません.しかし、あなたがあなたの休暇の前からあなたのSchemaCrawlerコマンドラインを保存したならば、あなたがしなければならないすべてはSchemaCrawlerを再実行することになっています、そして、あなたは真新しい図を得ます.SchemaCrawlerは、あなたが知っていなかった新しいテーブルとコラムのすべてを見つけて、説明しました.
マイクロソフトのAdventureWorksデータベースを使用して、いくつかの具体例を示します.VendorIDという列を持つテーブルの検索
schemacrawler --server=sqlserver --host=**** --database=AdventureWorks --schemas=AdventureWorks\..* --user=**** --password=**** --info-level=standard --table-types=TABLE --grep-columns=.*\.VendorID --command=schema
次に、--grep-columns=.*\.VendorIDと呼ばれる列を持つテーブルのデータベース図をプロットし、関連するテーブルを使用します.
schemacrawler --server=sqlserver --host=**** --database=AdventureWorks --schemas=AdventureWorks\..* --user=**** --password=**** --info-level=standard --table-types=TABLE --grep-columns=.*\.VendorID --command=schema --parents=1 --children=1 --only-matching --output-format=pdf
( SchemaCrawler live tutorials on Katacodaを使用して動作を確認できます).
SchemaCrawlerは、データベーススキーマ探査ツール、多くの種類のユーザーに役立つことを意図しています.
プログラマにとっては、データベースオブジェクトに関するメタデータ、およびMavenリポジトリとの統合のための豊富なJava APIがあります.JavaScript、Python、Ruby、Scala、Groovyなどのスクリプト言語の数でスクリプトを書くことができます.連続ビルドの場合は、GigTubアクションまたはGITLABワークフローを使用して、SchemaCrawlerを使用できます.また、Maven生成サイトのレポートとともに、AntとMavenのビルドの統合もあります.プログラマはまた、lintのプラグインを構築することができますし、データベース固有のメタデータのサポートを拡張します.
QAエンジニアは、SchemaCrawlerの簡単なdiff形式のデータと同様にメタデータのために予想される結果を出力することによって、データベーステストを自動化することができて、彼らのテスト実行と比較します.このテクニックは、同様に開発と生産サーバー間のスキーマを比較するために使用することができますまた、時間をかけてスキーマの変更を追跡するのに役立ちます.
データベースの建築家やDBASはすぐに、正規表現に基づいて強力なgrep機能を使用してデータベースの構造を探索することができます.それから、彼らは検索の結果を使用してerdsを作成することができます.SchemaCrawlerのerdsはスキーマが変化し続けるときに非常に役に立ちます.変更内容が何かを知る必要はありませんが、同じスキーマでコマンドを再実行できます.たとえば、チームメンバーが休暇中にテーブルに新しいCustomer関連列を追加した場合は、VendorIDと呼ばれるすべてのテーブルを検索するSchemaCrawlerコマンドを再実行するだけで、データベースダイアグラムに追加できます.もちろん、データベース・アーキテクトは、LINT能力が不十分なスキーマ設計慣行を追跡するのに本当に役に立つとわかります、そして、さらに彼ら自身のカスタム・プリンターのいくつかを加えます.
Schemacrawlerの詳細については、SchemaCrawler websiteをご覧ください.可能性があるための感じを得るためにSchemaCrawler live tutorials on Katacodaを使用してください.