여기에 마음의 회의, 즉 개발자 (DV)와 DBA의 마음이 필연적으로 일어나야하는 곳이 있습니다. BL (Business Logic)과 함께 작업하고 데이터베이스에 저장하면 구현에 영광을 줄 수 있습니다.
일부 RDBMS 제품에는 비즈니스 로직 및 객체 인프라를위한 우수한 라이브러리 / 도구 / API가있어 응용 프로그램에서 빠르게 학습하고 사용할 수 있습니다. 다른 RDBMS의 경우 라이브러리 / 도구 / API가 없습니다.
과거에는 클라이언트 서버 앱이 SP (Stored Procedures)를 통해 브리지를 BL로 만들었습니다. Oracle 및 SQL Server와 같은 제품의 경우 초기에 수행되었습니다. PostgreSQL 및 MySQL과 같은 오픈 소스 데이터베이스가 등장함에 따라이를 사용하는 데이터베이스는 BL의 저장 프로 시저로 새로운 지평을 열 위험에 처했습니다. PostgreSQL은 저장 프로 시저가 구현되었을뿐만 아니라 고객 언어를 만들 수있는 기능도 제공 되었기 때문에 매우 빠르게 발전했습니다. MySQL은 기본적으로 저장 프로 시저 세계에서 진화를 멈추었고 많은 제한 사항이있는 언어가 제거되었습니다. 따라서 BL에 관해서는 MySQL과 스토어드 프로 시저 언어에 전적으로 달려 있습니다.
RDBMS에 관계없이 BL이 데이터베이스의 전체 또는 일부에 상주해야합니까?
개발자를 생각하십시오. 응용 프로그램에서 문제가 발생하면 디버그 프로세스에서 개발자가 간헐적으로 정확하거나 정확하지 않을 수있는 데이터 변경 사항을 따르기 위해 데이터베이스를 출입 할 수 있습니다. C ++ 애플리케이션을 코딩하고 중간에 어셈블러 코드를 호출하는 것과 같습니다. 소스 코드, 클래스 및 구조체에서 인터럽트, 레지스터 및 오프셋 AND BACK으로 전환해야합니다! 이것은 같은 수준으로 디버깅을합니다.
개발자는 데이터베이스가 아닌 메모리에있는 비즈니스 객체를 통해 언어 구성 (C ++의 컴파일러 플래그, PHP / Python의 다른 설정 등)과 함께 BL을 실행하는 고속 방법을 만들 수 있습니다. 일부는 Stored Procedures and Triggers가 데이터베이스에 잘 통합되어 있으며 쓸모없는 것처럼 보이는 라이브러리를 작성하여 데이터베이스에 더 빠른 코드를 실행하기 위해이 이데올로기를 연결하려고 시도했습니다.
따라서 개발자는 두 가지 언어로 소스 코드와 BL을 개발, 디버그 및 유지 관리해야합니다.
이제 DBA를 생각해보십시오. DBA는 데이터베이스를 간결하게 유지하고 저장 프로 시저 영역에서 최대한 많은 것을 의미합니다. DBA는 BL을 데이터베이스 외부의 것으로 볼 수 있습니다. 그러나 SQL이 BL에 필요한 데이터를 호출 할 때 SQL은 단순하고 의미가 있어야합니다.
지금, 마음의 회의 !!!
개발자는 SP를 코딩하고 반복적 인 방법을 사용합니다. DBA는 SP를 봅니다. DBA는 단일 SQL 문이 개발자가 작성한 반복적 인 메소드를 대체 할 수 있는지 판별합니다. 개발자는 DBA가 제안한 SQL 문이 SQL 문의 정상적인 실행 계획을 따르지 않는 다른 BL 관련 코드 또는 SQL을 호출해야한다는 것을 알았습니다.
이에 비추어, 구성, 성능 조정 및 SP 코딩은 데이터 검색을위한 BL의 깊이 및 데이터 집약의 함수가됩니다. BL의 깊이와 데이터 집약도가 높을수록 데이터베이스에 제공되는 데이터 및 처리 능력에 대해 더 많은 개발자와 DBA가 동일한 페이지에 있어야합니다.
결론
데이터 검색 방식에는 항상 개발자 및 DBA 캠프가 모두 포함되어야합니다. 속도와 효율성을 위해 어떤 코딩 방법과 데이터 검색 패러다임이 함께 작동 할 수 있는지 항상 양보해야합니다. 소스 코드 처리를위한 데이터 준비가 코드가 데이터를 가져 오기 전에 한 번만 수행되는 경우 DBA는 린 (lean) 및 평균 SQL의 사용을 지시해야합니다. BL이 DBA와 맞지 않는 무언가라면, 고삐는 개발자의 손에 달려 있습니다. 그렇기 때문에 DBA는 자신과 프로젝트 팀의 일부가 아닌 자신을 섬으로 보지 말아야하는 반면 개발자는 DBA가 보증하는 경우 DBA가 SQL을 미세 조정하도록해야합니다.