MySQL 대 SQL Server 대 Oracle
저는 항상 MySQL 만 사용하고 다른 데이터베이스 시스템은 사용하지 않았습니다.
오늘 회사 회의에서 질문이 나왔는데 제가 알지 못했던 것이 당황 스러웠습니다. 개발자에게 MS 또는 Oracle은 MySQL에없는 지루한 기능을 제공하고 MS와 Oracle이 시스템 비용을 청구 할 수있는 기능은 무엇입니까?
저는 다른 해설자들이 상용 솔루션과 함께 번들로 제공되는 추가 비 핵심 RDBMS 기능을 모두 강조하는 것이 옳다고 생각합니다.
다음은 "추가"기능을 이해하기 위해 찾아 볼 가치가있는 Oracle 에디션 및 기능의 매트릭스입니다. 특히 자체 버전을 개발하고 지원하는 데 드는 비용 (가능하다면)의 맥락에서 볼 수 있습니다. MySQL과 같은 제품 : http://www.oracle.com/us/products/database/product-editions-066501.html
예를 들어, "사용자가 변경 사항을 적용한 후 최대 1 주일까지 삭제 / 업데이트 한 데이터의 이전 버전을 복구 할 수 있어야합니다."라는 요구 사항이있는 경우 이는 특정 개발 오버 헤드를 의미합니다. 오라클의 Flashback Query와 같은 내장 기능이없는 시스템에서는 훨씬 더 높을 것입니다.
Oracle 및 MSSQL의 순수한 RDBMS 계층은 주로 MySQL 및 InnoDB보다 더 성숙한 프로그래밍 가능 환경을 제공합니다. T-SQL 및 PL / SQL은 아직 MySQL 저장 프로 시저 및 트리거와 일치시킬 수 없습니다.
다른 차이점은 구문과 약간의 의미 차이로 작업을 더 쉽게 또는 어렵게 만듭니다 (예 : 상위 500 개 대 제한 / 오프셋).
하지만 진짜 킬러는 MySQL에 아직없는 MSSQL (Reporting Services, Analysis Services) 및 Oracle (Data Warehousing, RAC)의 RDBMS 계층 위에 수많은 통합 도구와 서비스가 있다는 것입니다.
MySQL은 무료가 아닙니다!
무료로 널리 알려져 있지만 MySQL이 포함 된 소프트웨어 패키지를 판매하거나 배포하는 경우 다소 심각한 제한이 따릅니다. 이 경우 오픈 소스 프로젝트 또는 비영리 단체에만 무료입니다. 데이터베이스와 드라이버를 나머지 애플리케이션과 완전히 분리하고 고객이 스스로 MySQL을 다운로드하여 설치하도록 할 수 있다면 괜찮을 것입니다.
그렇지 않으면 "표준"버전의 경우 연간 $ 2,000의 비용이 들며, 이는 SQL Server 라이선스 비용과 거의 비슷합니다.
둘 다 매우 좋은 데이터베이스이지만 SQL Server의 장점은 다음과 같습니다.
- 풍부하고 표현력이 풍부한 절차 언어 (T-SQL)
- 쓰기 집약적 인 환경에서 더 나은 쿼리 최적화 프로그램 및 더 나은 성능
- 프로그래밍 환경, ETL 도구 (SSIS), 차원 모델링 (SSAS),보고 환경 (SSRS) 및 상당히 정교한 작업 스케줄러를 포함하는 강력한 보조 도구 및 기능 세트입니다.
- 저장 프로 시저 및 UDF의 대화 형 디버깅.
- 대부분의 관리 작업을 "클릭"방식으로 수행 할 수있는 비교적 사용하기 쉬운 창 기반 관리 도구입니다.
많은 사람들이 이데올로기 적으로 Microsoft 도구를 사용하거나 Windows 환경에 갇혀있는 것을 반대하고 있으며 저는이를 이해할 수 있습니다. 그러나 MySQL은 비즈니스 용도로 무료가 아니며 널리 이해되지 않는 것 같습니다.
MySQL의 라이센스 정책을 검토하려면 웹 사이트 http://www.mysql.com/about/legal/licensing/index.html 에서 살펴보십시오 .
오라클이 mysql을 통해 가지고있는 다른 것들.
- 대기열
- 내부 작업 일정
- 성숙한 저장 프로 시저 언어
- 패 티셔 닝 된 테이블
- 세분화 된 액세스 제어 및 감사
- 강력한 복구 기능 (예 : flashback, rman, dataguard)
- 원격 데이터베이스 링크
- 응용 표현
다른 공급 업체의 RDBS를 관리하기 전까지 Oracle은 "독자는 작성자를 차단하지 않고 작성자는 독자를 차단하지 않습니다."라는 말을 자주 반복하지 않았습니다. 저는 Oracle DBA로서 8 년 동안 잠금 문제를 처리하는 것에 대해 많이 알지 못했습니다. 2 Informix와 3 또는 SQL Server의 수년 동안 잠금에 대해 더 많이 알고 있습니다.
따라서 지원 및 비 RDBMS 기능에 대한 의견 외에도 잠금 동작을 추가합니다.
나열 할 기능이 너무 많습니다. nullptr의 메시지에서 Wikipedia 참조를 참조하십시오. 그러나 회의에서 실제로 묻는 질문은 "개발자에게 MS 또는 Oracle이 제공하는 MySQL이 지연되는 기능 중 MS와 Oracle이 시스템에 대한 비용을 청구 하고 회사에서 효과적으로 사용할 수있는 기능은 무엇입니까?"라는 질문이라고 생각합니다.
모든 이점은 귀하의 요구에 부합한다면 진정한 이점입니다 ...
Oracle 테이블 클러스터 및 단일 테이블 해시 클러스터 (SQL Server에서도 찾을 수 없음).
참고 : Oracle에 대해 말할 수 없으므로 SQL Server에 대해서만 대답하겠습니다.
물론 MERGE 문, BULK INSERT, GROUPING SET 등과 같은 데이터베이스 엔진의 사소한 차이점입니다.
하지만 더 큰 부분은 Integration Services, Analysis Services 및 Reporting Services와 같은 것입니다. 제 생각에 그것들은 비용 대비 절대적으로 가치가있는 중요한 기술입니다.
MySQL은 Oracle과 MSSQL이 제공하는 더 풍부한 프로그래밍 환경을 제공하지 않았습니다. 특히 저장 프로 시저가 없었던 초기 버전에서는 더욱 그렇습니다. 내 관점에서 나는 대부분의 비즈니스 로직을 DAO 또는 ORM 매퍼 등을 통해 애플리케이션에 넣는 경향이 있습니다. 따라서 데이터베이스 엔진은 덜 중요하고 이론적으로 애플리케이션은 전송 가능합니다. 관리 관점에서 MSSQL은 데이터베이스 소유 작업을 훨씬 쉽게 만들어주는 많은 이점 (이미 나열되어 있음)을 제공합니다. Microsoft는 또한 개발을 위해 훌륭하고 가벼운 SQLExpress를 제공합니다.이 SQLExpress는 작업하기 쉬웠으며 Visual Studio에 잘 통합됩니다.
ThinkJet의 답변에서 영감을 얻은 또 다른 요소는 "보다 성능이 뛰어난 응용 프로그램을 더 빠르고 저렴하게 개발하기 위해 데이터베이스 독립성을 어느 정도 포기할 의향이 있습니까?"라고 생각합니다. 회사가 강조하는 부분이 모든 코드가 데이터베이스간에 이식 가능해야한다는 것이라면 가장 단순한 RDBMS 이외의 다른 것을 사용하는 데는 별 의미가 없으며 Oracle과 Microsoft가 제공 한 개선 사항과 이점은 아무 의미가 없습니다.
진정한 데이터베이스 독립성을 깨는 데는 거의 걸리지 않으며, 제 철학은 SQL 향상, PL / SQL 등과 같은 비용을 지불 한 모든 기능을 활용하는 데 전념해야한다는 것입니다.
물론 다른 것들은 다를 수 있습니다.
이 질문은 SQL Server / Oracle이 비용을 청구 할 수있는 개발 기능이라는 암시 적 가정을 가지고 있다고 생각합니다. 나는 그것이 더 많은 구현 / 지원이라고 생각합니다.
핫 백업은 적어도 대부분의 설치에서 비용을 지불 할 가치가있는 주요 기능입니다.
Oracle의 경우 가장 큰 부가가치는 RAC입니다. 복잡한 복제없이 동일한 데이터 (즉, 동일한 디스크)를 처리하는 여러 서버가 있습니다. (일반적으로) 개발자에게는 분명하지 않습니다.
내가 정말 좋아하는 일부 Oracle 기능은
- Real Application Clusters, 데이터베이스 클러스터를 만드는 매우 강력한 방법
- 빠르고 새로 고칠 수있는 구체화 된 뷰, 쿼리 결과를 저장하고 업데이트하는 매우 효율적인 방법
- 쿼리 결과의 하위 집합에 대한 함수를 효율적으로 그룹화 할 수있는 분석 함수 (일명 창 함수)입니다. 이렇게하면 대부분의 경우 자체 조인을 피할 수 있습니다.
As far as i I know, none of these is available in MySQL. And there are many more useful features, especially in the enterprise edition and its options.
참고URL : https://stackoverflow.com/questions/1913547/mysql-vs-sql-server-vs-oracle
'Nice programing' 카테고리의 다른 글
확장 방법을 모의하기 위해 Moq를 어떻게 사용합니까? (0) | 2020.10.12 |
---|---|
JSON 문자 인코딩-브라우저에서 UTF-8을 잘 지원합니까 아니면 숫자 이스케이프 시퀀스를 사용해야합니까? (0) | 2020.10.12 |
일부 속성 값이있는 노드를 선택하는 XPath는 다른 노드의 속성 값과 동일합니다. (0) | 2020.10.12 |
super (인수 전달)를 사용하는 올바른 방법 (0) | 2020.10.12 |
JSR이란 무엇이며 그 용도는 무엇입니까? (0) | 2020.10.12 |