web-dev-qa-db-ja.com

非常に大規模なデータベーススキーマ(SQL Server)の図を生成する方法

ダイアグラムを作成する必要がある非常に大きなデータベースがあります。データベースは、x64上のSQL Server2008です。何百もの関連テーブルがあり、それぞれが最大2000フィールド(一部はスパース)、テーブル間の複数の関係(実際には、テーブルごとに数百)、複数のスキーマがあるという点で大きいです...あなたは考えを理解します。

SQL Server Management Studioのデータベースダイアグラム機能を使用しようとしましたが、Win32Exceptionでクラッシュしました:「このコマンドを処理するのに十分なストレージがありません...」

別のマシンでVisioのリバースエンジニアリング機能を使用して接続して図を作成しようとしましたが、完了の兆候がなく、数時間続いています。

この巨大なスキーマを構築するためのスクリプトは、私たちがその仕事のために構築したツールによるものです。ツールが正常に機能している間は、出力を視覚化するのは難しいです。

私はこのデータベースの図を作成するためのツールを探しているので、これを行うことができます。助言がありますか?

編集:強調するために、図は実際に有用な参照のために使用されることは実際には想定されていません。これは、システムの複雑さ/規模を示すためのクライアント関係管理デバイスです。

17
tomfanning

そのサイズのデータ​​ベース用にあらゆる種類の画像を生成することは、あえぎを描く壁に貼り付けられた目の保養になるだけであり、正直なところ、時折見ただけでは本当の目的はありません。 Red Gateのドキュメントツール のような実際の目的に役立つツールを使用してみませんか?私はこれをあざけるような言い方をしているわけではないことを理解してください。しかし、私は巨大なデータベースを図解しようとする前にこの道を進んでいました。ある程度成功しましたが、それが役立つ良い出口を見つけることができませんでした。

11
Ta01

私は数百のテーブル(1k近く)がある場所で働いていましたが、システムで何が起こっているのか誰も本当に知りませんでした。会社は成長し、たくさん雇っていました。ある男が図を作成する任務を負い、彼は自動的に巨大なタイル張りのポスターを作成しました。このポスターには、さまざまなテーブルを結ぶ線が付いたすべてのテーブルが含まれています(あちこちに行き渡っています)。彼が何を使用したかはわかりません。それは何年も前のUnixとOracleでした(Linuxとオープンソースよりずっと前のことです)。彼の図の表のレイアウトには、本当の韻や理由はありませんでした。彼はすべてのテーブルの図を作成することに成功しました。 「ポスター」は共用部分の壁に貼って見た目も少しありましたが、実際に使ったことはなく、使い物にならず、雑然としていて、整理整頓されていませんでした。その結果、MS-Wordを使用して、20個のメインテーブル(新しいメインテーブルを「発見」したときに数回繰り返した)を含む単一ページの図を作成し、各外部キーと各テーブルの行を論理的に配置しました。 。列名、データ型、null可能性、PK、およびすべてのFKを示しました。モニターのそばの壁に図を載せました。結局、「ポスター」を作った人を含め、誰もが私の図のコピーを欲しがりました。私がその仕事を辞めたとき、彼らはまだ私の図を新入社員に与えていました。

エクスプローラーのように作業し、キーテーブルを見つけてマップし、システムを発見するのに必要な数の特定の図を作成することをお勧めします。巨大な「ポスター」を自動的に作成しようとしても、うまくいきません。

15
KM.

Graphvizを使用します。いくつかのSQLステートメントを使用してダイグラムを生成し、それをdot.exeで実行して、PDFまたはPNGを生成します。

これを使用して、SQLServerテーブル内のデータのダイグラムを生成しました。テーブルにも使用できる理由はありません。

http://www.graphviz.org/

AJAXは1ページのみであるため、Java、Silverlight、およびPDF特大グラフをナビゲートするためのユーティリティもあります。

2
David Roussel

複数のスキーマがあるので、代わりにスキーマごとに図を生成することをお勧めします

2
SQLMenace

IntelliJ(具体的にはIDEAこれで試したばかりですが、他のIDEがこの機能を提供していると思います https://www.jetbrains.com/ )には組み込みがありますデータベースクライアント機能。ここからデータベースに接続し、目的のテーブルを強調表示して「右クリック」し、「図」オプションを選択することで、個々のテーブル、特定の組み合わせ、テーブル、またはすべてのテーブルを分析できます。後で参照するために保存して、 500以上のテーブルの大きなDBでこれを試したところ、数秒でレンダリングされました。ベクトル図は、データベース構造と特定のテーブル間の関係と制約を視覚的に消化するための代替方法として機能しますが、印刷にはお勧めしません。

enter image description here

0
Opentuned

schemaspy は、graphvizをバックエンドとして使用して、複数のスキーマにまたがるインタラクティブな図を生成するための便利なインターフェイスを提供します。私はこのサイズのものでそれを試したことがありません。

0
cs_alumnus

1つの図ですべてを行うことは避けたいと思います。おっしゃるように、ツールがクラッシュし、テーブルごとに数千のレコードが含まれる可能性のある数百のテーブルを含む図を簡単に理解することはおそらく不可能です。他の論理領域と一部重複している、より小さな論理領域の図を生成できますか?

または、graphvizなどを使用してDDLステートメントを解析し、グラフを作成してみることもできます。おそらくしばらくの間解約するでしょうが、大学のポスターサイズの小さな印刷の図を見たのを覚えています。それはおそらくあなたと同じ複雑さでした。幸運を!

FWIW、これを進めたいと仮定すると、私は個人的に、Visual Studio2010データベースモデラーがこれまでに出会った中で最も優れた図を実行することを発見しました-Linq2SQLに使用するかのようにデータベースをインポートするだけです

0
Basic