MySQL의 드루팔 호스팅 대 Mariadb

램프의 지배는 (리눅스, 아파치, MySQL은, PHP는 / 파이썬 / 펄) 웹 사이트에 대한 기술 스택은 인기있는 오픈 소스 데이터베이스로 MySQL의 위치와는 많이 있었다. 오라클이 썬을 구입했을 때이 탁월한 위치는 썬 마이크로 시스템즈의 MySQL (MySQL의 뒤에 회사)를 구입했을 때 많은 사람들이 걱정했다 이유는 아마와 (대부분) 전 MySQL의 직원이, MySQL의 공동 설립자 마이클 "몬티"Widenius에 의해 주도 및 자금 지원, 전화의 MySQL의 지점을, 썬 / 오라클을 떠나 새로운 회사 (몬티 프로그램을) 시작하고, 만들 정도로 우려하고 하나 개의 그룹 MariaDB.

MySQL의 드루팔 호스팅 대 Mariadb 업그레이드

더 많은 기능과 더 나은 성능 - 마리아 DB의 목표는 MySQL을위한 드롭 인 교체가 될 것입니다.

존재하는 경우 MariaDB는 MySQL의에 해당하는 버전을 기반으로합니다. 일부 버그 수정, 추가 스토리지 엔진, 새로운 기능과 성능 향상 기능이 추가 된 예를 들어, MariaDB 5.1.53는, MySQL은 5.1.53을 기반으로합니다. MySQL의의 동등 번호 버전 (예를 들어, MariaDB 5.2.4)가 없습니다 MariaDB의 버전은 개발자가 새 버전 번호를 보증 느꼈다 새로운 주요 기능이 포함되어 있습니다. 여기에 두 가지를 비교할 때, 나는 MariaDB의 추가 기능에 초점을 맞출 것입니다.

차이와 특징

내가 쓰고있는 각 데이터베이스의 현재 안정 버전은 MySQL의 5.5.8 및 MariaDB 5.2.4입니다. MariaDB 릴리즈는 MySQL을 해당 버전 후행하는 경향이있다. 지연은 몇 주 짧게 또는 길게 두 개 또는 세 개월이 될 수 있지만 MariaDB 개발자가 제대로 MariaDB의 소스 트리에 새 MySQL의 코드를 병합 및 성능 회귀 또는 MySQL을 모두 새로운 버그를 테스트 할 수 있습니다 코드와 새로운 MariaDB 코드입니다.

언뜻 보면,별로 변경 한 것으로 보인다. 서버는 여전히 mysqld이됩니다. 명령 행 클라이언트는 여전히 mysql을합니다. 주요 구성 파일은 여전히 ​​my.cnf 파일입니다. 모든 커넥터 (예를 들어, PHP 또는 파이썬 커넥터) 게 아무것도 변화하지 않은 경우로 연결한다.

적어도 mysql 클라이언트 응용 프로그램의 사용자에게 가장 눈에 띄는 변화는 순전히 화장품입니다 : 명령 프롬프트는 당신이 MariaDB 또는 MySQL의 데이터베이스에 연결되어 있는지 여부를 나타내는하여 더 많은 정보로 변경되었습니다, 그것은 데이터베이스의 이름을 표시하면 (특정 데이터베이스에 연결되어 있지 않은 경우 쇼 (없음))에 연결되어있다. 때문에 MariaDB 개발자에 의해 주어진 특별한 관심의 MySQL과의 호환성을 유지하기 위해 중 하나를 그림 1과 2에서와 같이 클라이언트 응용 프로그램 중 하나를 데이터베이스에 연결할 수 있습니다.

그림 1 : MySQL은 5.5.8 서버에 연결하는 MariaDB 5.2.4 (위)와 MySQL 5.5.8 MySQL의 클라이언트. 현재 데이터베이스와 같은 MariaDB 클라이언트 프로그램 (없음).

MySQL의 드루팔 대 Mariadb 당신에게 있습니다 호스팅

그림 2 : MariaDB 5.2.4 서버에 연결하는 MariaDB 5.2.4 (위)와 MySQL 5.5.8 MySQL의 클라이언트. MariaDB 클라이언트 프로그램 (없음) 현재 데이터베이스있다.

다음 가장 눈에 띄는 변화는 MariaDB와 함께 제공되는 추가 스토리지 엔진이다 (입력

목록에 대한). 이들은 아리아 XtraDB (InnoDB 스토리지 엔진의 개선 및 확장 버전) PBXT, FederatedX 포함 (드롭 인 연합 교체) OQGraph 및 SphinxSE 스토리지 엔진. 이 모든 MySQL을 사용할 수 있습니다; 그러나,이를 사용하려면 컴파일하거나 직접 설치해야합니다. MariaDB 함께, 그들은 기본 설치를의 일부입니다. MySQL은 (의 MyISAM, 블랙홀, CSV, 메모리 등)의 표준 스토리지 엔진의 모든 MariaDB에 포함되어 있습니다.

INFORMATION_SCHEMA도 강화되었다. MariaDB는 다양한 테이블에 더 많은 데이터를 추가했다. 당신이 당신의 플러그인의 버전 번호를 확인하실 수 있으며, 설치 한 버전 안정, 베타, 또는 다른 품질의 여부, 그래서 예를 들어, INFORMATION_SCHEMA.PLUGINS 테이블은 이제 PLUGIN_MATURITY 및 PLUGIN_AUTH_VERSION 열이 있습니다.

INFORMATION_SCHEMA.PROCESSLIST 테이블은 TIME_MS, 새 열을 받고있다. 이 열은 열 시간과 같은 정보를 제공합니다. 하지만 마이크로 정밀도 밀리 초 단위입니다.

느린 쿼리 로그는 또한 향상되었습니다. MariaDB에서, 당신은 자세한 정도를 설정하면 로그인하지 않으 쿼리를 필터링하고, 기록 속도를 제한 할 수 있습니다 (예를 들어 쿼리의 1/4만이 나 십분의 일을 기록합니다). 새로운 기능과 마찬가지로, 기본 구성은 MySQL의 [1]의 동작과 호환되도록 꺼져이 추가 기능이 있습니다.

MariaDB의 다른 변화는 너무 표시되지 않습니다,하지만 그들은 성능을 향상 MariaDB에게 더 많은 유연성, 또는 둘 모두를 제공하는 데 도움이됩니다. 성능 측면에서 한 가지 예는 새로운 "테이블 제거"기능입니다. 당신이 당신의 데이터베이스에 [2] 고도로 정규화 된 데이터가있을 때 데이터베이스를 쿼리 할 때 종종 "보기"편의를 위해 사용된다.

뷰는 가지 저장된 쿼리 같다. 당신은 당신의 데이터베이스에서 데이터를보기의 특정 방법으로 생각할 수 있습니다. 적절하게 사용하면 뷰는 매우 편리하지만, 그들은 성능 비용을 갖추고 있습니다. 쿼리가 실제로를 1 개 이상 쿼리 할 필요가없는 경우에도 당신이보기를 사용 때마다, 모든 테이블은 쿼리됩니다 연결되어 있습니다.

MariaDB에서 테이블 제거 기능은 쿼리 특정 테이블을 사용하여 쿼리 계획에서 그들을 제거하지 않을 때를 감지하도록 설계되었습니다. 이 제공하는 성능 향상 (데이터베이스 용도에 따라) 극적 일 수 있습니다.

당신이 당신의 데이터베이스 테이블에 대한 MyISAM 스토리지 엔진을 사용하는 경우, 분할의 MyISAM 키 캐시는 혜택을 수 있습니다. 캐시를 액세스하는 많은 응용 프로그램 스레드를 한 경우의 MyISAM 키 캐시 잠금 경합으로 고생 할 수 있습니다. 분할 된 키 캐시들로 키 캐시 분할함으로써이 문제를 완화 "세그먼트."64 개 세그먼트까지 지정 될 수있다. 아니 모든 응용 프로그램은이 기능이 도움이됩니다 만, 키 캐시 잠금 경합이 병목 인 경우, 어떤 애플리케이션 변경없이 성능을 향상시킬 수있는 좋은 방법입니다. 호환성을 위해이 기능은 기본적으로 해제되어 있습니다.

유연성 계산 및 업데이트 열입니다 가상 열입니다 추가 MariaDB에 하나 개의 새로운 기능 "즉시."이 기능의 초기 버전은 안드레이 자코브에 의해 다시 2008 년의 MySQL에 기여하지만,에 그것의 방법을 발견되지 않았다 MySQL의 안정적인 릴리스.

종종, 당신은 모든 계산을 수행하고 데이터베이스를 가지고 응용 프로그램이 바로 데이터를 보유합니다. 그러나 경우에 따라 데이터베이스 계층까지 계산을 추진하는 것은 도움이 될 수 있습니다. 예를 들어, 데이터베이스에 아래 계산의 일부를 밀어 데이터베이스와 상호 작용하는 여러 응용 프로그램을,이 경우 애플리케이션 개발을 단순화하고 데이터 무결성을 적용 할 수 있습니다.

MariaDB의 다른 새로운 기능은 코드가 더 모듈화하고 미래 발전을위한 준비되었습니다. 한 가지 예는 테이블 기능을 CREATE 새로운 스토리지 엔진 별과입니다. 스토리지 엔진이 테이블을 CREATE 명령에 대한 새로운 옵션을 필요로하는 기능을 구현하기를 원한다면 이전, 패치는 서버 코드의 해당 섹션에 적용되어야 할 것이다.

당신이 그것을 추가하고 사용하지 않는 서버의 다른 부분은 영향을받지 않은 경우 이상적으로, 스토리지 엔진 코드는, 그래서 격리되어야한다. 코드의 스토리지 엔진 패치 다른 부분은 새로운 베타 또는 알파 스토리지 엔진은 안정적인 릴리스에서 안전하게 포함 할 수 없습니다.

MariaDB는 이제 분리하고 독립적 인 스토리지 엔진 코드를 유지 테이블을 CREATE 문을 확장 할 수있는 스토리지 엔진에 대한 표준 방법이 있습니다. 당신이 그것을 사용하지 않을 경우, 때문에 이제 새로운 스토리지 엔진은 이전의 개발에 포함시킬 수 있습니다, 아무런 효과가 없다.

상기 특징 및 다른 모든 것은 MariaDB 지식에 더 상세히 설명되어있다 [3].

MariaDB로, 모든 노력은 이전 작업을 모두 밖으로 던져하지 않아도 가능한 한 원활하고 최종 투명 사용자가 모든 개선 및 새로운 기능을 기울였습니다. 이를 위해 :

  • 데이터 및 테이블 정의 파일 (.FRM) 파일은 바이너리 호환됩니다.
  • 모든 클라이언트의 API, 프로토콜 및 구조체들과 동일하다.
  • 모든 파일 이름, 바이너리, 경로, 포트, 소켓, 등, 동일합니다.
  • 모든 MySQL의 커넥터 (PHP, 펄, 파이썬, 자바, MyODBC에, 루비, MySQL의 C 커넥터 등) MariaDB로 변경 작동합니다.
  • MySQL의 클라이언트 패키지는 MariaDB 서버와 반대로 작동합니다.

따라서 대부분의 경우에, 당신은 MySQL을 제거하고 MariaDB를 설치하고 당신은 갈 수 있습니다 할 수 있습니다. 동일한 주요 버전을 사용하는 경우, 당신은 단지 하나의 MySQL의 5.1.x 버전에서 다른 업그레이드 할 때와 같이, 모든 데이터 파일을 변환 할 필요가 없습니다.

또한, 업그레이드 스크립트 (예 : 업데이트가 필요한 업데이트 데이터 파일)의 개발 및 테스트의 많은 쉽게 MySQL의 5.1에 5.0에서보다 MariaDB 5.1 5.0에서 업그레이드했다.

새로운 기능에 대한 표준 정책은 이것이다 :이 기능은 호환성 문제를 소개 할 경우,이 기능에 대한 기본 MariaDB 구성 중 (세그먼트 키 캐시와 마찬가지로)를 완전히 끄거나 MySQL의에 해당하는 버전처럼 동작하도록 구성됩니다 .

표준 정책의 시행이 항상 가능하지 않기 때문에, 피할 수없는 호환성은 MariaDB와 MySQL 사이에 존재한다. 당신은 바이너리 전용 스토리지 엔진 라이브러리를 사용하는 경우 예를 들어, 당신 때문에 스토리지 엔진 API에 대한 일부 내부 변경 사용하는 MariaDB의 버전 용으로 다시 컴파일해야합니다. 또한, 같은 느린 쿼리 로그와 같은 일부 출력 및 체크섬 TABLE 명령의 결과는 다르다. 스크립트는이 출력을 구문 분석한다면, 당신은 일부 내용을 변경해야 할 수도 있습니다.

호환성에 대한 마지막 참고 : 또는 MariaDB의 구성 옵션 새로운 기능을 사용하기 시작하면, 당신의 MySQL도 동등한 버전으로 쉽게 돌아갈 수 없습니다.

상황은 MySQL을 통해 MariaDB을 선택 여부를 결정해야한다. 오라클와 지원 계약을 체결 한 경우, 선택은 이미 만들어졌다; 그들은 MariaDB를 지원하지 않습니다. 그러나, SkySQL과 같은 몇몇 회사는 MariaDB와 MySQL 모두 전체 24 / 7의 지원을 제공합니다.

MariaDB는 변경 버전 사이에 얼마나 큰에 따라, 몇 달에 몇 주에서 어느 곳으로 최신 공식 MySQL 버전 뒤에 흔적을한다.

플립 측면에서, MariaDB는 많은 기능 당신이 MySQL의에서 찾을 수없는 것입니다 유용 수도 있고, MariaDB가 결국은 심사 광범위하게 테스트 한 후 어떤 새로운 기능을 도입해야합니다 포함되어 있습니다.

MariaDB를 통해 MySQL의를 선택하는 또 다른 이유는 거의 모든 리눅스 배포판의 공식 저장소에서의 MySQL의 존재이다. MySQL을 설치하는 간단한의 apt-get 설치되는 거리 YUM. MariaDB는 공식 저장소에 포함 위해 노력하고 있지만 지금, 그것은 단지 몇 가지에 포함되어 있습니다. [6]

당신은 당신이 닫힌 소스 응용 프로그램에 MySQL을 통합 할 수 있습니다 오라클에서 상용 라이센스가있는 경우의 MySQL을 계속 사용하는 한 가지 이유입니다. MariaDB 개발자는 GPL의 조건에 구속되지 듀얼 라이센스 MariaDB 수 있습니다.

당신이 궁극적으로 선택하든 데이터베이스, MariaDB와 MySQL 사이의 경쟁은 좋은 수 있습니다. 결국, 아무도 마이크로 소프트의 인터넷 익스플로러가 파이어 폭스와 오랜 경쟁에서 도움이되지 않았다 말할 수 있습니다.

다니엘 바솔로뮤 몬티 프로그램에 대한 기술적 인 작가와 시스템 관리자입니다. 그는 노스 캐롤라이나의 미국 상태에서 살고있다.

관련 기사

블록 새로 고침 드루팔 호스팅드루팔 7 캐싱 상기 블록 데이터를 캐싱하여 구성 될 수있다. 등록 및 로그인 한 사용자는 일반적으로받는 분 데이터까지 캐시되지 않은. 블록 캐싱은 특정의 원인이됩니다 ...
호스팅 UID 0 드루팔드루팔은 익명의 사용자가 설치되어 해당 항목을 작성으로 그것은 정상입니다. 즉이 user_install () (드루팔 7) 또는 system_install에서 수행된다 (). 이는 다음과 같은 코드가 포함되어 있습니다. 그...
드루팔 7 멀티 사이트 호스팅 데이터베이스를 공유당신은 일부 테이블 있지만 다른 단지에 테이블 접두사 ($의 db_prefix)를 설정하여 드루팔 설치간에 테이블을 공유 할 수 있습니다. 이에 대한 한 가지 흥미로운 응용 프로그램은 분류 테이블을 공유하는 것입니다 ...
데이터베이스 관리자 모듈 드루팔 호스팅이 프로젝트는 드루팔의 보안 자문 정책이 적용되지 않습니다. DBA는 모듈은 표준 내에서 자신의 드루팔 데이터베이스 테이블에 직접 액세스 드루팔 관리자를 제공합니다 ...
마크 업 유형의 드루팔 호스팅최소 요구 사항은 설치 및 엔진의 요구 사항을 충족해야 드루팔을 호스팅 서버를 실행합니다. 호스팅 회사의 대부분은 기준을 충족. 그러나,이 예외가있을 수 있습니다 ...