2009-11-24 4 views
10

나는 MySQL 팬이다. 그러나 MySQL을 통해 Oracle을 선택하는 것이 어떤 방법으로 갈 것인지를 알고 싶다. 당신이 말할 수있는 지표가 무엇인지 ... "이 프로젝트에 Oracle이 필요합니다"MySQL을 통해 Oracle을 선택하는시기는 언제입니까?

업데이트 : 다른 동료가 지적했듯이 오라클에 대한 답변을 제한하지 마십시오. 더 나은 점을 알고 있다면 그 점도 지적하십시오.

+0

오라클이 MySql의 다른 유일한 선택 인 이유는 무엇입니까? – cjk

+0

사실, 질문 업데이트 : –

+5

좋은 제안은 평가 과정에서 MySQL의 팬이되는 것입니다. | -) – jrbjazz

답변

11

내가 (의 MyISAM 대 이노) 전체 텍스트 색인 대 제약 조건 및 거래를 시행 사이에서 선택을해야 MySQL의

나를 귀찮게 어떤 일이 있습니다. 이건 정말 나를 위해 문제 번호 1 (제약 조건 및 거래 DBS가 식을 만드는 것입니다 시행,하지만 당신은 너무 ... 전체 텍스트 검색을 필요로)

  • 클라이언트 코드에서 트랜잭션을 "시뮬레이션"하는 것은 쉽지 않다.
  • 당신이 당신이 또는 X LIKE %의 y를 %
  • 미친 얻을 수 있습니다 전체 텍스트 검색없이 DB를
  • 의 일관성없는 상태를 얻기 위해 정말 쉽습니다 제약 조건을 적용하지 않는 경우에 UPDATE 트리거 이전에 생성해야 CHECK CONSTRAINT에 대한 RAISE 오류
  • 데이터가 너무 커지면 Mysql의 성능이 저하됩니다.
  • Mysql이 잘못된 실행 계획을 생성합니다.
  • Mysql에는 3 개 이상의 조인 (여러 조인을 더 잘 설명하겠습니다)에 문제가 있습니다.

오라클은 이러한 모든 문제에 대한 해결책으로 전체 DBMS (트랜잭션, CHECK 제약, 많은보기 옵션, 전체 텍스트 검색 등)이지만 결국에는 돈 문제입니다 .

+3

당신이 "정말로 큰"이라고 말할 때, 당신은 나에게 약간의 숫자를 주실 수 있습니까? –

+1

진실에 대한 사실, 나는 스핑크스 사용에 관한 문제를 해결했다. 나는 개인적으로 큰 데이터 집합의 전체 텍스트가 RDBMS에서 가장 잘 분산되어 있다고 생각합니다.하지만 제 생각에는 그렇게 생각합니다. –

+0

@ Sabeen 당신은 너무 일찍 답을 받아들입니다. 모든 질문에 답한 후에 만 ​​그렇게해야합니다. – OTZ

3

웹 로그 분석 ... 다른 이유가 필요합니까? ;)

Analytics는 모든 보고서 및 데이터웨어 하우스의 축복입니다. 그러나 웹 사이트 용으로 약간의 데이터베이스가 필요하다면 MySQL을 사용하십시오. 그렇지 않으면 복잡한보고가 필요하고 성능이 문제가된다면 오라클이 최선의 방법이라고 생각합니다.

+0

흠. 간단히 말해 데이터웨어 하우징을 위해 MySQL을 사용합니다. ETL을 사용하여 Oracle에서 MySQL로 데이터를 변환합니다. –

+0

Analytics ... 동의하지만 실제로 데이터베이스 서버가 보유해야하는 기능입니까? .. 또한이 줄 뒤에있는 개념을 이해하지 못합니다. 많은 사람들이 사용하는 "MySQL은 웹 사이트 뒤의 작은 데이터베이스 용입니다."라고 생각합니다. 비교적 큰 프로젝트에서 MySQL을 개인적으로 사용했습니다. Facebook은 MySQL을 사용하고 Twitter는 MySQL을 사용합니다 나는 야후의 두 부분이 MySQL을 사용한다고 믿고있다. 그래서 작은 것이 얼마나 작습니까? –

+1

참, 작은 것은 상대적입니다. 그러나 예를 들어 은행에서 일할 때 데이터 양은 Facebook 또는 Digg 웹 사이트와 비교할 때 엄청납니다. 수백만 행이 "작은"것으로 간주됩니다. – guigui42

1

오라클은 엄청난 기능 세트를 제공합니다. 일부 옵션 엑스트라는 모든 에디션에서 무료로 제공됩니다.

http://www.oracle.com/database/product_editions.html

플래시백 쿼리는 무료 포함, 당신은 최근 과거에 약간의 시간 "의로"데이터베이스를 조회 할 수 있습니다.

표현 필터는 공짜 물건의 또 다른 좋은 예이며, 규칙 엔진도 강력합니다. http://www.oracle.com/technology/products/database/rules_manager/index.html

그래서 선택하면 자신이 개발하고 지원해야하는 기능을 사용할 수있는 기능을 고려해야합니다.

5

저는 오라클 사람입니다.하지만 때때로 PostgeSQL 또는 MySQL을 통한 사용에 대해 논쟁하기가 어렵습니다.
짧은 이야기는 오픈 소스 RDBMS를 사용하여 방대한 양의 데이터를 관리하는 회사/프로젝트가 있다는 것입니다.

기능에 대해 생각해 보면 다른 점도 있지만 그 회사의 성공에 대해 어떻게 논쟁 할 수 있습니까? 사실, 그들은 이것을 달성하기 위해 많은 상자를 사용하지만, 여전히 훨씬 저렴합니다. 요즘 오라클을 사용하는 대부분의 기업이 정말로 필요로하는 것은 아니지만 오라클이 필요한 회사는 분명 있습니다.

좋은 인용구 :

는 "CPU를 많이 사용하는 작업을 이동 레이어 응용 프로그램을 응용 프로그램에 데이터베이스 계층 밖으로 이동! 참조 무결성이 조인에서, 응용 프로그램 계층에서 수행 정렬이 추론을 : 응용 프로그램을 서버가 저렴합니다. 데이터베이스는 병목 현상입니다. "

는 실제 연습을 많이에 대한 here를 참조하십시오. 그리고 네, 오라클을 사용합니다.

그래, 나는 여전히 오라클을 좋아한다. DBMS가 올바르게 한 것처럼 보일지라도 그것이 팔리는 가격이 아니라 도처에있는 것을 의미하지는 않는다.

+1

약간의 OT이지만 응용 프로그램 계층으로 기능을 이동시키는 데 흥미로운 관점입니다. 그것은 나에게 불안감을 안겨줄 것입니다. 데이터 불일치 문제가있는 대용량 데이터베이스를 다뤘습니다. 그것은 거의 설명 할 수없는 악몽입니다. 데이터베이스 보호 기능을 제거하고 앱 프로그래머가 항상 제대로 활용할 수 있다고 믿는 것은 매우 위험한 것처럼 보입니다. – wadesworld

+0

eBay는 오히려 극단적 인 예입니다. 자신의 개발 방법론을 채택하면 99 %의 경우에 지나치게 엔지니어링 된 솔루션을 얻게됩니다. –

+2

eBay 예제는 충분한 돈을 가진 회사조차도 오라클을 "올바른 방법"으로 구현하는 데 문제가 있음을 보여 주려는 것으로, 라이센스 비용 때문에 발생했을 가능성이 큽니다. "데이터베이스는 병목입니다."라고 말하는 것은 좋은 방법입니다. 각 서버에 대한 라이센스 비용이 $ xxx, xxx인데 충분히 많은 DB 서버를 사용할 수는 없기 때문에 많은 수의 응용 프로그램 서버를 대신 사용하게됩니다.데이비드는 방법론을 채택하는 것이 아니라 완벽한 오라클 고객처럼 보이게하는 방법에 관한 것입니다. 나는 그것이 영감을 얻는 것을 발견했다. "너무 비싸다"는 대안은 "충분히 빠르지 않다"이다. 그것은 더 나쁘다. –

1

오라클은 실시간 데이터 백업 및 복원을위한 매우 정교하고 복잡한 체계를 제공하여 진정한 논스톱 핫 백업 기능을 제공합니다.

데이터 집계 및 요약을 위해 내장 된 많은 분석 및 통계 기능을 제공합니다. mySQL을 사용하여이 작업을 수행 할 수 있지만 앱에서는 수행 할 수 있습니다.

트랜잭션 무결성 (커밋/롤백)을 사용하여 대규모 트랜잭션 시스템을 실행해야하는 경우 뛰어난 확장 성을 제공합니다. 많은 돈을 쓰고 싶다면 Real Application Clusters와 함께 확장하십시오.

대량의 코드와 복잡한 스키마로 확장되는 임베디드 코드 (패키지, 저장 프로 시저, 저장 함수)를 처리하기위한 체계를 제공합니다.

특히 JDBC (JDBC의 PreparedStatement 객체)와 같은 바운드 변수 쿼리를 사용할 때 높은 트랜잭션 속도 (시간당 수만)가 좋은 작업입니다. 가장 중요한 것은 이러한 종류의 작업에 대한 성능이 예측 가능하다는 것입니다.

매우 비싸며 적절하게 작동 시키려면 고도로 훈련 된 acolytes가 필요합니다. 좋은 소식은 거기에 많은 전문가들이 있다는 것입니다. 제가 일하는 곳은 Pythian Group이라는 복장으로 돈을 들여 오라클을 돌 봅니다. 좋은 방법입니다.

Express Edition (무료, 몇 기가 바이트의 데이터로 제한)으로 평가할 수 있습니다.

시스템이 Oracle Standard Edition과 함께 작동 할 수 있으면 대신 mySQL을 사용하십시오. 시스템에 Enterprise Edition 기능이 필요한 경우 IBM DB2를 평가해야합니다. 두 제품 모두 스케일 아웃 용으로 설계 되었기 때문입니다.

1

오라클이 잘 수행하는 다양한 기능이 있습니다. 아마도 다른 어떤 rdbms보다 우수 할 것입니다. (필자는 DB2를 잘 모름) 클러스터링 (RAC)은 매우 훌륭합니다.저장 프로 시저 언어 인 PL/SQL은 매우 견고하며 실제로 코드 작성이 즐겁습니다. XML 기능, GIS, 전체 텍스트 등이 있습니다.

하지만 최적의 거래 차단기는 최적화 도구가 잘 작동한다는 것입니다. . 당신은 질의를하고 결과 집합을 효율적인 방식으로 반환합니다. 때로는 힌트를 제공해서는 안되는 일부 세부 사항을 알고 있지만 이는 드문 예외입니다. SELECT, INSERT, UPDATE 및 DELETE 문을 발행하면 데이터베이스는 정상적으로 작동합니다.

2

나는 오라클에 대한 아무것도 몰라,하지만 문제는 ... 포스트 그레스, 말,

어떤 일을 포함하도록 확장 된 이후 나는 개인적으로 사용하거나 정말 MySQL의에 존재하지 않는 포스트 그레스 (에 사용 봤어요 AFAICT)!

  • 거래 및 전체 텍스트 검색을 함께

나는 MySQL이 하나를 가지고 있지 않기 때문에이 외부 FTS를 사용하는 인기 알고있다. 개인적으로, 나는 별개의 FTS 솔루션을 사용하는 데 어려움을 겪었습니다. 두 데이터 소스가 동기화되지 않는 것이 가능한 경우, 어느 시점에서이를 보장 할 수 있습니다. 나는 BDB를 사용할 수 있고 내 자신의 인덱스를 쓸 수도 있지만, 그렇지 않다. 내장 인덱스보다 더 좋은 방법이없고, 더 나쁜 방법이있다. (예를 들어 이상한 사용자 정의 인덱스가 필요한 경우에는 괜찮습니다. 이상한 사용자 정의 FTS가 필요한 경우 스핑크스는보다 유연합니다.하지만 이상한 사용자 정의 FTS가 실제로 필요하지는 않습니다. 나는).

  • 공간 쿼리 (PostGIS와)

MySQL은이를 수있는 확장 메커니즘이 있는지 모르겠다을 스핑크스가 포스트 그레스의 FTS보다 더 유연한 것으로도 모르겠지만, PostGIS와 같은 확장 기능이 없다고 확신합니다. 매립지의 100 미터 이내가 아닌 공원 300 미터 이내의 모든 커피 숍을 쿼리하려고한다고 가정 해 봅시다 (데이터베이스에 공원, 매립지 및 커피 숍의 경계가있는 경우). PostGIS를 사용하면 매우 쉽습니다. MySQL을 사용하면 아마도 상당한 양의 작업이 될 것입니다.

  • 객체 관계형 테이블은

레일 명 (헤이, 내가 하나가 될하는 데 사용!), 특히, STI를 사용하여 모든 서브 클래스는 슈퍼 클래스로 거의 같은 필드가 척 것을 좋아합니다. 두 개의 하위 클래스 만 있거나 모두 매우 비슷하지만 클래스 계층 구조를 테이블에 매핑하면 꽤 빨리 미칠 수 있습니다. Postgres에서 쉽게 할 수 있습니다 : 프로그래밍 언어의 하위 클래스처럼 첫 번째 테이블을 상속 한 새 테이블을 만들고 필드를 추가합니다. 내 데이터와 실제로 일치하는 데이터 모델! 실제 OODB만큼 좋지는 않지만 꽤 가깝습니다.

  • 더 나은 거래

당신이 이노와 함께 모든 데이터 조작 작업을위한 거래를 얻을 붙은 경우, 내가 아는. Postgres에는 데이터 정의 조작에 대한 트랜잭션도 있습니다. 일반적인 경우를 생각해 보겠습니다. 열을 추가하고 이전 형식의 데이터를 새 형식으로 변환하고 이전 열을 제거하려면 마이그레이션이 필요합니다. Postgres에서 나는 한 번에 모든 트랜잭션을 처리하기 때문에이 트랜잭션이 부분적으로 적용될 확률은 거의 없습니다.MySQL에서는 트랜잭션에서 데이터 변환 단계를 수행 할 수 있지만 롤백해야하는 경우 새 열이 계속 추가되므로 수동으로 정리하거나 복잡한 트랜잭션을 처리해야합니다. 그 (그리고 심지어 그것은 여전히 ​​db의 원자가 아닙니다). 매일 반복하고 고통을 즐기십시오.

(나는 여기에서 보는 일반적인 주제는 고급 추상화 레벨에서 작업 때문에 내 말은 방금 무슨 말을하고 할 수있는 능력이다. 그리고 쓰기? 그런 공간 쿼리를. FTS 인덱스를 만들하십니까? 내 데이터에 FTS를 원하십니까 공간 쿼리 서브 클래스 데이터를 저장하고 싶다면 서브 클래스 테이블을 만들고 완전히 원자 적으로 마이그레이션하고 싶다면 트랜잭션을 치고 하루 만 부르면됩니다. 물론이 중 하나를 MySQL에 구현할 수는 있지만, 생각하고 구현하고 하나의 SQL 라인을 작성하는 것보다 것을 구현하고 유지해야합니다. 전문 프로그래머로서 더 높은 수준의 추상화, 완전 중지에서 일할 수있는 것보다 더 중요한 것은 없습니다.)

이제 확실하지 않습니다. Postgres가 일반적으로 MySQL보다 "더 우수"하다고 말하면 분명히 MySQL이 훨씬 더 잘 작동하므로 확실히 사용됩니다. 그러나 이것들은 제가 정말 좋아하는 몇 가지 사항입니다.

관련 문제