如何处理大型未记录数据库


10

最近,我被某公司X聘为唯一的IT专家,我的任务是修复他们的应用程序,我认为,最好的开始方法是了解数据库。

他们当前的数据库是带有186个表的MySQL数据库(请注意,有些表是空的,上帝知道原因)。应用程序正在通过MS Access数据库接口与数据库进行通信。(我问自己为什么开发商也这样做)

问题是,如何开始处理这个大型的未公开文档的数据库?是的,它没有记录,因为应用程序的开发人员不愿意给我ERD或数据字典或有关数据库的任何信息来简化我的生活。您如何建议您进行这项艰巨的工作,即了解相当大的数据库的每个细节?

相关问题:如何进入一个丑陋的数据库?


5
与空表开始,慢慢的又一个删除一个表,直到developpers愿意合作...
勒内Nyffenegger

评论前先三思。OP明确表示他是唯一的家伙。那么那些开发商是谁呢?也许是外部承包商,他们付出的只是建造东西的时间而已?为什么那些愿意花时间寻求额外支持的人(X公司可能不愿意为此付费)?还是他们也许是因为太昂贵而被解雇的前雇员?他们为什么要花时间帮助X公司解决问题?谁会因掉桌子而受伤?
Erwin Smout,2013年

6
@ErwinSmout我相信Rene的评论意图被解释为轻松的自嘲。我就是这样看的。
Mark Storey-Smith

Answers:


11

链接的答案是自下而上地解决问题,首先是数据库。由于您的职责涵盖了应用程序数据库,因此我倾向于从应用程序开始对这种自上而下的攻击。

通过与用户群协商,将注意力集中在理解应用程序最常用的功能上。通过概要分析/日志记录工具跟踪这些功能的数据库交互,以便您可以标识关键表和过程。

这样,您的早期工作就被限制在“重要的东西”上,而不是浪费时间记录可能很少使用或从未使用过的表和查询。重点还应该使“ 帕累托原理”暴露于您的错误修复上(无论如何,微软还是这样说的)。


感谢您的出色回答。老实说,我没有想到这一点,也不知道我可以记录正在服务器上运行的查询。非常感谢!
2013年

1

我可能会尝试获取MySQL Workbench,然后从数据库中创建EER模型。这意味着您可以看到链接到什么的链接,并了解开发人员可能在想什么。一切也取决于应用程序的结构。


我尝试过这条路线,但途中却很烦人,因为那里有186张桌子,而工作台只是拍了画布中央的所有桌子。小屏幕的房地产并没有帮助事情变小。但是从它的外观来看,没有逃避困难的方法
2013年

不要为使用Workbench尝试这样做而烦恼,因为它充满了缺陷(错误)-与完成任何有用的事情相比,您将花费更多的时间来克服它们。相反,请考虑使用Microsoft Visio将现有数据库反向工程为模型,如本简短文章中所述:link
KXNV-89.1FM

更为恰当的链接:链接 -“将现有数据库反向工程为数据库模型”(使用Microsoft Visio)。
KXNV-89.1FM

1

我发现DBLint对于识别数据库问题很有用。它具有以下不错的属性:

  1. 它按发现结果的(主观)重要性对它们进行排名,因此您不会被大量次要警告淹没。
  2. 重要的发现通常是无可争辩的,而且是可行的。
  3. 它使用单个数字对数据库评分,因此您可以衡量进度并比较不同数据库的质量。我觉得这很有激励作用。
  4. 将DBLint配置为仅使用基于模式的检查很容易。因此,即使在大型数据库上也可以快速尝试。我可能唯一的抱怨是我必须运行Windows才能运行DBLint。

为了快速识别MySQL数据库上的热点,Neor Profile SQL是位于应用程序和数据库之间的少数代理。它的优点在于设置速度快。

为了发现数据库中未定义的实际主键和外键,可以使用Linkifier。对于ERD绘图,可以将估计值导出到yEd,后者具有大量用于放置表格的布局算法。对于ERD,BPMN是我的最爱。


0

oracle(My SQl workbench)有一个工具可以访问My Sql数据库,它是一个可以为您提供数据库ERD的接口。


是的,我熟悉工作台,但是反向工程师功能只是将所有表转储到画布的中心... 186个表很烦人。知道出路吗?
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.