문서화되지 않은 큰 데이터베이스를 다루는 방법


10

최근에 특정 회사 X에서 유일한 IT Guy로 고용되었으며 응용 프로그램을 수정해야한다고 생각합니다. 제 생각에는 데이터베이스를 이해하는 것이 가장 좋습니다.

현재 데이터베이스는 186 개의 테이블이있는 MySQL 데이터베이스입니다 (일부 테이블은 비어 있음을 유념하십시오). 그리고 응용 프로그램은 MS Access 데이터베이스 인터페이스를 통해 데이터베이스와 통신하고 있습니다. (왜 개발자들도 그렇게했는지 묻습니다)

질문은, 문서화되지 않은이 큰 데이터베이스를 어떻게 다루어야합니까? 예, 응용 프로그램 개발자가 내 인생을 쉽게하기 위해 ERD 또는 데이터 사전 또는 데이터베이스에 대한 정보를 기꺼이 제공하지 않기 때문에 문서화되어 있지 않습니다. 오히려 큰 데이터베이스의 구석 구석을 이해하기 위해이 위험한 노력을 어떻게 제안 하시겠습니까?

관련 질문 : 못생긴 데이터베이스로 뛰어 드는 방법?


5
빈 테이블부터 시작하여 개발자가 협조 할 때까지 한 테이블 씩 천천히 떨어 뜨립니다.
René Nyffenegger

의견을 말하기 전에 생각하십시오. OP는 그가 유일한 It 사람 이라고 명시했다 . 그렇다면 그 개발자는 누구입니까? 물건을 만드는 데 걸리는 시간 이상의 비용을 지불 한 외부 계약자 일 것입니다. 추가 지원을 위해 기꺼이 시간을 내 주려는 이유는 무엇입니까? 회사 X는 처음부터 비용을 지불하지 않았을까요? 아니면 너무 비싸서 해고 된 전직 직원 일까? 왜 것입니다 그들은 그 문제를 회사의 X 돕기 위해 자신의 시간에 넣어? 누가 테이블을 떨어 뜨려 다치게 될까요?
Erwin Smout

6
@ ErwinSmout Rene의 의견은 가벼운 마음으로 지브로 해석되었다고 생각합니다. 그것이 내가 본 방법입니다.
Mark Storey-Smith

답변:


11

링크 된 답변은 문제를 상향식으로 해결합니다. 귀하의 책임은 응용 프로그램 데이터베이스를 포함하므로 응용 프로그램 에서 시작하여이 하향식을 공격하는 경향이 있습니다.

사용자와의 상담을 통해 가장 자주 사용되는 응용 프로그램 기능을 이해하는 데 집중하십시오. 프로파일 링 / 로깅 도구를 통해 해당 기능의 데이터베이스 상호 작용을 추적하여 주요 테이블 및 프로 시저를 식별 할 수 있습니다.

이런 식으로 귀하의 초기 노력은 거의 또는 전혀 사용되지 않을 수있는 테이블과 쿼리를 문서화하는 데 시간을 낭비하지 않고 "중요한 것"으로 제한됩니다. 또한 Pareto Principle 을 통해 버그 수정 노력에 집중할 수 있습니다 ( 그래도 Microsoft는 말합니다 ).


큰 답변 주셔서 감사합니다. 나는 솔직히 그것을 생각하지 않았고 서버에서 실행중인 쿼리를 기록 할 수 있다는 것을 알지 못했습니다. 고마워요!
maru

1

MySQL Workbench를 얻은 다음 데이터베이스에서 EER 모델을 만들려고합니다. 이것은 당신이 무엇으로 연결되는지를 볼 수 있고 개발자들이 무엇을 생각하고 있는지 알 수 있음을 의미합니다. 모두 응용 프로그램의 구조에 따라 다릅니다.


나는 그 길을 가려고 시도했지만 186 개의 테이블이 있고 워크 벤치가 캔버스의 중앙에있는 모든 테이블을 때렸 기 때문에 중간에 상당히 성가신 것입니다. 작은 화면 공간은 물건이 작아지는 데 도움이되지 않았습니다. 그러나 그것의 모습에서, 어떤 일을 가지 어려운 방법을 탈출 없다
마루

결함 (버그)으로 가득 차 있기 때문에 Workbench를 사용하여이 작업을 수행하지 않아도됩니다. 유용한 작업을 수행하는 것보다이를 극복하기 위해 더 많은 시간을 소비하게됩니다. 대신이 짧은 기사 : link에 설명 된대로 Microsoft Visio를 사용하여 기존 데이터베이스를 모델로 리버스 엔지니어링하는 것을 고려 하십시오 .
KXNV-89.1FM

더 때마침 링크 : 링크 - (Microsoft Visio에 포함) "역 데이터베이스 모델로 기존 데이터베이스 엔지니어".
KXNV-89.1FM

1

DBLint 가 데이터베이스 문제를 식별하는 데 유용하다는 것을 알았 습니다. 다음과 같은 멋진 속성이 있습니다.

  1. 결과는 (주관적인) 중요도에 따라 결과의 순위를 매기므로 사소한 경고로 인해 익사하지 않습니다.
  2. 중요한 결과는 논쟁의 여지가없고 실행 가능한 경우가 많습니다.
  3. 단일 숫자로 데이터베이스에 점수를 매기므로 진행 상황을 측정하고 다른 데이터베이스의 품질을 비교할 수 있습니다. 나는 그것이 매우 동기 부여가된다는 것을 안다.
  4. 스키마 기반 검사 만 사용하도록 DBLint를 쉽게 구성 할 수 있습니다. 따라서 큰 데이터베이스에서도 사용해 보는 것이 빠릅니다. 내가 가진 유일한 불만은 DBLint를 실행하려면 Windows를 실행해야한다는 것입니다.

MySQL 데이터베이스에서 핫스팟을 빠르게 식별하기 위해 Neor Profile SQL 은 응용 프로그램과 데이터베이스 사이에있는 소수의 프록시입니다. 그것의 아름다움은 설정이 빠르다는 것입니다.

그럼에도 불구하고 데이터베이스에서 정의되지 않은 실제 기본 및 외래 키를 발견하기 위해 Linkifier를 사용할 수 있습니다 . ERD 플로팅의 경우 추정값을 yEd 로 내보낼 수 있으며 , 테이블의 위치 지정을위한 많은 레이아웃 알고리즘이 있습니다. BPMN은 내가 가장 좋아하는 ERD입니다.


0

My Sql 데이터베이스에 액세스하기위한 oracle (My SQl Workbench) 도구가 있습니다.이 도구는 데이터베이스의 ERD를 제공 할 수있는 인터페이스입니다.


예, 워크 벤치에 익숙하지만 리버스 엔지니어 기능은 캔버스 중앙의 모든 테이블을 덤프합니다. 그 방법을 알고 있습니까?
maru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.