كيفية إنشاء رسم تخطيطي لمخطط قاعدة بيانات كبير جدًا (SQL Server)

StackOverflow https://stackoverflow.com/questions/3503223

سؤال

لدي قاعدة بيانات كبيرة جدًا أحتاج إلى رسم تخطيطي. قاعدة البيانات هي SQL Server 2008 على X64. إنه كبير حيث أن هناك المئات من الجداول ذات الصلة ، ولكل منها ما يصل إلى 2000 حقول (بعضها متفرق) ، وعلاقات متعددة بين الجداول (غالبًا ما تكون مئات لكل طاولة ، في الواقع) ، مخططات متعددة ... تحصل على الفكرة.

حاولت استخدام ميزة مخططات قاعدة البيانات في SQL Server Management Studio ، لكنها تحطمت مع Win32Exception: "لا يتوفر سعة التخزين الكافية لمعالجة هذا الأمر ..."

حاولت استخدام ميزة الهندسة العكسية الخاصة بـ Visio على جهاز مختلف للاتصال بها وتخطيطها ، لكن هذا كان مستمرًا لبضع ساعات دون أي علامة على الانتهاء.

البرامج النصية لبناء هذا المخطط العملاق هي أداة قمنا ببنيها لهذا المنصب. بينما تقوم الأداة بعملها على ما يرام ، من الصعب تصور إخراجها.

أنا بعد أداة لطرد مخطط لقاعدة البيانات هذه حتى نتمكن من القيام بذلك. أي اقتراحات؟

تحرير: فقط للتأكيد ، ليس من المفترض أن يتم استخدام الرسم البياني للرجوع المفيد الفعلي. إنه جهاز لإدارة علاقات العميل لإظهار التعقيد/مقياس النظام.

هل كانت مفيدة؟

المحلول

إن توليد صورة من أي نوع لقاعدة بيانات بهذا الحجم يصبح ببساطة حلوى العين عالقة على الحائط الذي يرسم اللحظات ، ولا يخدم بصراحة أي غرض حقيقي سوى النظرات العرضية. لماذا لا تستخدم أداة مثل أداة توثيق Red Gate سوف يخدم غرض فعلي؟ يرجى فهم أنني لا أقول هذا بطريقة سخرية ، لكنني كنت على هذا الطريق قبل محاولة تخطيط قاعدة بيانات ضخمة ، وقد نجحت إلى حد ما ، لكنني لم أجد أبدًا منفذاً جيداً حيث كان بعض الاستخدام.

نصائح أخرى

عملت في مكان كان به عدة مئات من الجداول (بالقرب من 1K) ولم يكن أحد يعرف حقًا ما يجري في النظام ، وكانت الشركة تنمو وتوظيفها كثيرًا. تم تكليف رجل بعمل رسم تخطيطي ، وأنشأ تلقائيًا ملصقًا مملوءًا ببلاط عملاق يحتوي على كل جدول مع خطوط تربط الجداول المختلفة (الذهاب في كل مكان). لست متأكدًا مما استخدمه ، كان Unix و Oracle منذ سنوات (قبل Linux و Open Source). لم يكن هناك قافية حقيقية أو سبب لتخطيط الجداول في مخططه. لقد نجح في إنشاء رسم تخطيطي لكل طاولة. تم وضع "الملصق" على الحائط في منطقة مشتركة ، وحصل على بعض المظهر ، لكن لم يستخدمه أحد حقًا ، لم يكن غير قابل للاستخدام ، ومشبك للغاية ، غير منظم للغاية. نتيجةً لذلك ، استخدمت MS-WORD لإنشاء مخطط صفحة واحدة يحتوي على 20 الجداول الرئيسية (مررت ببعض التكرارات كما "اكتشفت" الجداول الرئيسية الجديدة) مع خطوط لكل مفتاح خارجي وكل جدول موجود بطريقة منطقية . لقد عرضت اسم العمود ، ونوع البيانات ، والبطولة ، و PK ، وجميع FKS. وضعت مخططي على الحائط الخاص بي من شاشتي. في النهاية ، أراد الجميع نسخة من الرسم البياني ، بما في ذلك الشخص الذي صنع "الملصق". عندما غادرت هذه الوظيفة ، ما زالوا يعطون مخططي للتعيينات الجديدة.

أوصي بأن تعمل مثل المستكشف ، والعثور على جداول المفاتيح ورسم خريطة لها كما تذهب ، مما يجعل العديد من المخططات المحددة حسب الضرورة مع اكتشاف النظام. إن محاولة جعل "ملصق" عملاق لن يعمل بشكل جيد للغاية.

نظرًا لأن لديك مخططات متعددة ربما تكون فكرة جيدة هي إنشاء مخططات لكل مخطط بدلاً من ذلك

استخدم GraphViz. استخدم بعض عبارات SQL لإنشاء digram ، ثم قم بتشغيله من خلال dot.exe لإنشاء PDF أو PNG.

لقد استخدمته لإنشاء digrams من البيانات داخل جداول خادم SQL. لا يوجد سبب لاستخدامه في الجداول أيضًا.

http://www.graphviz.org/

هناك أيضًا مرافق Java و Silverlight و Ajax للتنقل في الرسوم البيانية الكبيرة الإضافية ، حيث أن PDF هو فقط لصفحة واحدة.

كنت أتجنب فعل كل شيء في رسم بياني واحد. كما ذكرت ، تعطلت الأدوات ، وربما لا يمكن فهم مخطط مع مئات الجداول بسهولة مع آلاف السجلات لكل جدول. هل يمكنك إنشاء مخططات من المناطق المنطقية الأصغر مع بعض التداخل إلى المناطق المنطقية الأخرى؟

بالتناوب ، يمكنك محاولة استخدام شيء مثل GraphViz لتحليل عبارات DDL ثم إنتاج رسم بياني. من المحتمل أن يكون ذلك لفترة من الوقت ، لكنني أتذكر أنني رأيت في مخططات بحجم الملصقات الجامعية مع طباعة صغيرة ، والتي ربما كانت ذات نفس التعقيد الذي تتمتع به. حظا طيبا وفقك الله!

FWIW ، على افتراض أنك تريد المضي قدمًا في هذا ، لقد وجدت شخصيًا أن قاعدة بيانات Visual Studio 2010 Modeller تقوم بأجمل المخططات التي صادفتها حتى الآن - فقط استيراد قاعدة البيانات الخاصة بك كما لو كنت ستستخدمها في LINQ2SQL

Schemaspyيوفر واجهة مفيدة لإنشاء مخططات تفاعلية تمتد مخططات متعددة باستخدام GraphViz كواجهة خلفية. لم أجربها أبدًا على أي شيء بهذا الحجم.

intellij (على وجه التحديد فكرة كما تم تجربتها للتو مع هذا ، لكنني أعتقد أن IDEs الأخرى تقدم هذه الميزة https://www.jetbrains.com/) يحتوي على منشأة عميل مدمجة في قاعدة البيانات ، من هنا يمكنك الاتصال بقاعدة البيانات الخاصة بك وتحليل الجداول الفردية أو مجموعة أو جدول محدد أو جميع الجداول الخاصة بك عن طريق تسليط الضوء على الجداول المطلوبة ، "النقر بزر الماوس الأيمن" وتحديد خيار "الرسم التخطيطي". يمكنك حفظ للرجوع إليها في وقت لاحق وكذلك الطباعة. لقد جربت هذا للتو على ديسيبل كبير من 500+ جداول ، وقد تم تقديمه في ثوانٍ ، ويعمل مخطط المتجه كطريقة بديلة لهضم هياكل قاعدة البيانات بصريًا والعلاقات والقيود بين بعض الجداول ولكن لا ينصح بها للطباعة.

enter image description here

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top