마리아DB- 데이터베이스 작업을 위한 프로그램. 라이선스가 부여된 MySQL의 대안으로 만들어진 프리웨어 응용 프로그램입니다. 작업 원리에 따르면 Oracle의 동일한 제품과 매우 유사합니다. DBMS는 myisam, blackhole, csv와 같은 표준 기능과 형식을 지원합니다. MySQL과 동일한 클라이언트 API, 프로토콜 및 구조를 지원합니다. 모든 커넥터(PHP, Perl, Python, Java, .NET, MyODBC, Ruby)는 데이터베이스 관리 시스템과 완벽하게 상호 작용합니다. 요청 실행 시간은 라이선스가 있는 상대방보다 훨씬 짧습니다. 복제가 더 빠르고 안전합니다. 향상된 비동기 I/O InnoDB 테이블용. MyISAM에 대한 캐시 샤딩을 지원합니다. 이를 통해 MyISAM 테이블 작업 속도를 4배 높일 수 있습니다.



- 다른 데이터베이스로 작업할 수 있습니다.
- 데이터 저장을 위한 데이터베이스 관리 시스템입니다.
- 많은 클라이언트 애플리케이션과 API를 지원합니다.
- 대부분의 커넥터에 완벽하게 연결됩니다.
- 정보를 저장하기 위한 다양한 데이터베이스를 생성할 수 있습니다.
- Aria 스토리지 엔진을 통해 복잡한 쿼리를 더 빠르게 처리할 수 있습니다.
- "사용자에 대한 모든 요청 종료" 기능을 지원합니다.
- 향상된 기능이 풍부합니다.
- MyISAM 테이블에 대한 비동기 I/O가 개선되었습니다.
- 병렬 복제를 지원합니다.
- 최적화된 매개변수가 많습니다.
- 무료 소프트웨어를 선호하는 웹 개발자를 위한 탁월한 솔루션입니다.
- 러시아어 지원이 있습니다.


- 클럭 주파수가 1200MHz 이상인 프로세서.
- RAM 256MB 이상.
- 무료 장소 636MB의 하드 드라이브에서.
- 32비트 또는 64비트 아키텍처(x86 또는 x64).
- 운영 체제 윈도우 XP, 윈도우 비스타, 윈도우 7, 윈도우 8, 윈도우 10

DBMS: 비교표

프로그램 이름 러시아어 분포 설치 프로그램 인기 크기 색인
★ ★ ★ ★ ★ 286.7MB 100
★ ★ ★ ★ ★ 0.5MB 97

1년 반의 개발과 5개의 시험판을 거친 후 새로운 MariaDB 10.2 DBMS 분기의 첫 번째 안정적인 릴리스가 형성되었으며, 그 내에서 MySQL의 분기가 개발되고 있습니다. 이전 버전과 호환추가 스토리지 엔진과 고급 기능의 통합이 특징입니다. MariaDB 개발은 개별 공급업체와 독립적인 완전 개방적이고 투명한 개발 프로세스에 따라 독립적인 MariaDB 재단에서 감독합니다. MariaDB는 많은 Linux 배포판(RHEL 7, SUSE 12, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian 9)에서 MySQL 대신 제공되며 Wikipedia, Google Cloud SQL 및 님버즈.

MariaDB 10.2의 주요 개선 사항:

  • Flash에 최적화된 RocksDB 스토리지 엔진을 기반으로 Facebook에서 개발한 MyRocks 스토리지 엔진에 대한 실험 지원을 추가했습니다. MyRocks 저장소는 부동 크기 데이터 페이지를 사용하여 고정 블록 경계에서의 정렬을 피하고, 패딩만 허용하는 Log Structured Merge Trees 데이터 저장소 모델(정리는 가비지 수집기가 수행함)을 사용합니다. 쿼리 실행 과정에서 순차 읽기/쓰기 작업 횟수가 몇 배 감소하여 InnoDB에 비해 SDD에서 20~30%, 부하가 많은 HDD에서 최대 6배의 성능 향상을 가져왔습니다. 임의 쓰기 작업. 또한 MyRocks를 사용하면 InnoDB 압축 스토리지에 비해 데이터베이스 크기를 50%, 압축하지 않은 InnoDB에 비해 3.5배 줄일 수 있습니다. MyRocks의 단점 중 하나는 외래 키 및 전체 텍스트 인덱스에 대한 지원이 부족하다는 점입니다.
  • 다음에 의해 정의된 창 기능에 대한 지원이 추가되었습니다. 예어 OVER를 사용하여 현재 행과 연결된 행 집합에 대해 계산을 수행할 수 있습니다. 집계 함수와 마찬가지로 창 함수를 사용하면 쿼리 결과를 처리하는 동안 다른 행을 참조할 수 있지만 집계 함수와 달리 결과를 단일 행으로 그룹화하지 않습니다.
  • 공통 테이블 표현식("WITH" 표현식) 및 재귀 공통 테이블 표현식("WITH RECURSIVE") 지원. WITH 절을 사용하여 하위 쿼리를 쿼리에서 여러 번 참조할 수 있는 로컬 임시 테이블로 정의할 수 있습니다. "WITH RECURSIVE"를 사용하면 자신의 결과에 액세스할 수 있습니다. 예를 들어 쿼리를 실행하는 과정에서 트리 탐색을 구성할 수 있습니다.
  • 열 제약 조건을 설정하기 위해 "CREATE TABLE" 블록에 "CONSTRAINT... CHECK" 문을 추가했습니다.
  • DEFAULT 블록에서 표현식을 지정하는 기능을 구현했습니다(예: "b int DEFAULT (a+1)"). BLOB 및 TEXT 필드에 대한 DEFAULT 값 지정 지원이 제공되었습니다.
  • InnoDB 스토리지는 MySQL 5.7.18에서 릴리스되도록 업데이트되었으며 기본적으로 활성화되어 있습니다(이전에는 기본값이 InnoDB - XtraDB의 포크였으며 InnoDB가 XtraDB의 주요 기능 대부분을 구현한 후 의미가 손실됨). InnoDB는 공간 인덱스(공간 인덱스)에 대한 지원을 추가했습니다.
  • 지정된 사용자를 생성하는 데 사용되는 전체 "CREATE USER" 문을 보여주는 "SHOW CREATE USER" 문을 추가했습니다.
  • "CREATE USER" 표현식의 경우 리소스 소비를 제한하고 tls/ssl을 구성하는 옵션이 구현되었습니다. 예를 들어, 이제 시간당 최대 요청 또는 연결 수를 제한할 수 있습니다.
  • 변경할 수 있도록 새로운 "ALTER USER"문이 도입되었습니다. 계정기존 사용자;
  • 가상 계산 열에 대한 많은 제한 사항을 제거했습니다.
  • 즉석에서 생성된 동적 SQL 문을 실행하기 위해 "EXECUTE IMMEDIATE" 문에 대한 지원이 추가되었습니다.
  • 대부분의 표현식을 PREPARE 문에 사용할 수 있는 기능을 추가했습니다.
  • JSON 형식의 데이터 작업을 위한 기능이 추가되었습니다.
  • ed25519 알고리즘을 사용하여 암호를 저장하는 인증 플러그인을 추가했습니다.
  • Amazon Web Services(AWS) 키 관리 서비스(KMS)에서 사용되는 키를 해독하기 위한 플러그인이 Windows, CentOS, RHEL 및 Fedora용 빌드에 추가되어 이후에 데이터베이스의 데이터를 암호화하는 데 사용할 수 있습니다.
  • 이제 여러 다른 트리거를 하나의 이벤트에 바인딩할 수 있습니다.
  • 지정된 시간 동안 슬레이브 서버의 상태가 마스터 서버보다 뒤처지는 지연 복제에 대한 지원이 추가되었습니다.
  • ANALYZE TABLE 표현식의 구현이 재설계되어 이제 통계 수집 중에 테이블을 잠그지 않습니다.
  • 동기식 다중 마스터(활성-활성) Galera 복제를 구성하는 데 사용되는 wsrep 라이브러리가 릴리스 25.3.20으로 업데이트되었습니다.
  • Ubuntu 17.04용 패키지 제공
  • mysqldump에 "--add-drop-trigger" 옵션을 추가하여 생성하기 전에 트리거를 삭제하기 위해 SQL 덤프에 표현식을 추가하는 MySQL 5.6 기능을 재현합니다.
  • 바이너리 로그의 지속적인 백업을 구성하기 위해 mysqlbinlog 스크립트를 추가했습니다.
  • OpenSSL 1.1 및 LibreSSL에 대한 지원이 추가되었습니다.
  • 교착 상태 감지 시스템을 비활성화하고 통계를 계산할 때 삭제된 것으로 표시된 레코드를 고려하기 위해 innodb_deadlock_detect 및 innodb_stats_include_delete_marked 변수를 추가했습니다.
  • 슬레이브 서버가 마스터 서버의 바이너리 로그를 읽는 속도 제한을 설정하는 변수 read_binlog_speed_limit가 추가되었습니다.
  • 이전 GPL 라이센스 클라이언트 라이브러리가 제거되고 새로운 LGPL 라이센스 라이브러리로 교체되었습니다.

작성자:데이터베이스 관리 시스템은 동적 웹 제품 개발의 필수적인 부분이 되었습니다. 그것의 도움으로 필요한 파일의 전체 배열을 체계화할 수 있습니다. 이 모든 것이 필요합니다. 빠른 접근애플리케이션 또는 웹사이트의 최적화. 그러나 가장 인기 있는 것까지도 모든 것을 완전히 마스터하려면 수십 년이 걸릴 것입니다. 어느 것을 사용하고, 연구하고, 기술을 펌핑할지 결정해야 합니다. 가장 인기 있는 비교는 MariaDB와 MySQL입니다. 우리는 오늘 그것들에 집중할 것입니다. 인기를 얻고 있지만 이미 상당한 경쟁 우위를 점하고 있는 제품을 잊지 맙시다.

관계 시스템

그러한 솔루션이 발명되기 전에는 거대한 제품을 만드는 것이 불가능했습니다. 상당한 양의 물리적 및 랜덤 액세스 메모리, 처리할 수 없습니다 빅 데이터, 상대적으로 혼란스러운 방식으로 파일 형식으로 저장된 경우. 80년대 초에 IBM이 개발한 최초의 RDBMS가 출시되었습니다.

언뜻보기에 데이터베이스를 생성하는 것은 매우 사소한 작업처럼 보입니다. 겉으로 보기에는 다른 유형의 정보가 열에 배치된 큰 테이블처럼 모든 것이 단순해 보입니다. 사실, 본 발명은 많은 수학적 논의와 개발 시도가 선행되었습니다. 요점은 단순한 데이터베이스를 만드는 것이 아니라 변수가 서로 의존하는 데이터베이스를 만드는 것이었습니다. 미래 데이터베이스에 대한 가장 정확한 설명은 관계형 데이터베이스의 12가지 규칙을 만든 Dr. Codd가 제공했습니다. 그건 그렇고, 그들 중 13 명이 있습니다. 그들은 오늘날에도 여전히 관계형 데이터베이스를 개발하는 데 사용됩니다.

관계형 데이터베이스 관리 시스템은 관계형 이외의 관리 방법을 사용해서는 안 됩니다. 이 모든 것이 적어도 이념적 수준에서 수학 용어를 이해하는 사람들에게만 간단해 보일 수 있습니다. 데이터의 각 원자 단위 사이에는 관계형 관계가 있어야 하며, 이는 물리적 저장소에 흩어져 있는 파일보다 훨씬 낫습니다.

자바스크립트. 빠른 시작

앞서 말했듯이 DBMS는 테이블이며 시스템은 다른 구조를 가질 수 없습니다. 그러나 테이블의 데이터는 매우 다른 유형. 일부 DBMS는 많은 유형을 지원하지 않으며 일부는 새로운 유형을 도입하기도 합니다. 정보 기술. 이들은 부울, 문자열, 부동 소수점 데이터 및 기타 여러 가지입니다. 그리고 이러한 모든 데이터는 관계형 모델에 따라 상호 연결됩니다.

그러나 문자열에 데이터를 쓰려면 데이터 유형을 지정해야 합니다. Excel 및 유사한 프로그램의 셀과 매우 유사한 절차를 수행합니다. 물론 이러한 규칙에는 예외가 있지만 이것은 데이터베이스를 비교한 것이 아니라 책 전체에 대한 주제입니다.

웹 사이트 및 응용 프로그램의 경우 셀에는 리소스 사용자, 콘텐츠 자체, 제품 및 기타 모든 것에 대한 데이터가 포함됩니다. 여기서 데이터베이스의 목적은 사용자의 요청에 따라 이 정보를 즉시 제공하는 것입니다. 즉, 클라이언트 스크립트와 교환하여 서버 스크립트입니다.

DBMS의 장점과 단점

DBMS가 장점보다 단점이 더 많다면 아무도 그렇게 적극적으로 사용하지 않을 것이라는 데 동의합니다. 비교를 하자면 파일 시스템그리고 그 위에 구축된 사이트를 보면 데이터베이스 관리 시스템이 얼마나 더 원활하고 효율적으로 작동하는지 알 수 있습니다. 이것이 우리가 예외 없이 MariaDB 또는 MySQL과 같이 모든 시스템이 작동해야 하는 지점부터 시작하는 이유입니다.

자주 논의되는 단점 중 현대 시스템데이터베이스 관리:

마스터하기 쉽지 않습니다. Photoshop을 사용하려면 이 소프트웨어의 기본 도구에 익숙해야 하고 사용법을 배워야 합니다. 프로그램 자체가 어떻게 작동하는지 이해할 필요는 없습니다. 이것은 DBMS에 대해 말할 수 없습니다. MySQL이 작동하는 방식을 이해한다는 것은 데이터베이스를 이해하는 것을 의미합니다. 패턴을 따르려고 하면 개발이 실패할 가능성이 큽니다. DBMS를 원칙적으로 이해하지 않는 것과 잘못 이해하는 것, 어느 것이 더 나은지는 알 수 없습니다.

가격. 데이터베이스 관리 시스템 자체에는 비용이 많이 들지 않을 수 있지만 데이터베이스 유지 관리, 타사 소프트웨어 구매 등. 광범위한 데이터베이스를 좋은 호스팅비용이 듭니다.

무게. 고기능 응용 프로그램을 위한 파일만으로도 무게가 많이 나갈 것입니다. 그리고 데이터베이스에 랩핑하면 파일에 일부 기능이 있고 논리적 연결에 있으며 스크립트에 의해 호출되기 때문에 볼륨이 크게 증가합니다. 이 모든 것은 비용뿐만 아니라 서버의 메모리 비용도 듭니다. 이는 서버가 다음과 같은 경우 특히 두드러집니다. 개인용 컴퓨터개발자.

중앙 배치. 에서만 지난 몇 년, 개발자는 분산 레지스트리를 사용하여 파일을 저장하기 시작했습니다. 파일이 동일한 데이터베이스 내에 있으면 취약합니다.

다행히 DBMS의 장점으로 이러한 단점을 대부분 커버할 수 있습니다. 웹 프로그래머에게 파일과 DBMS 중 무엇이 더 나은지 묻는다면 답은 분명할 것입니다. 시스템은 어떤 파일 시스템에서도 사용할 수 없는 많은 가능성을 열어줍니다.

첫째, 메모리 절약입니다. DBMS 자체가 일정한 자리를 차지하지만 불필요한 정보가 증식하는 것을 허용하지 않는다. 중복성, 중복 파일이 없습니다. 동시에 과도하게 저장해야 하는 정보는 이런 방식으로 저장됩니다. 우리가 말했듯이 이것은 일반 개발자가 이해하기 어려운 복잡한 수학적 모델입니다.

DBMS가 이중 진리를 피하는 것이 중요합니다. 시스템은 동일한 종류의 정보를 제공하는 요소를 독립적으로 선택하고 서로 모순되지 않도록 합니다. 동일한 볼륨으로 제품은 훨씬 더 많은 양의 정보를 수신하는 것으로 나타났습니다.

데이터베이스 관리 시스템은 공동 개발에서 중요한 역할을 합니다. 모든 예방 조치를 준수하면서 파일 트리에 대한 그룹 액세스를 제공하는 것은 매우 어렵습니다. 그러나 보안 시스템의 손실 없이 제한된 범위의 사람들에게 DBMS에 대한 승인된 액세스를 제공할 수 있습니다.

자바스크립트. 빠른 시작

웹 애플리케이션 빌드의 실제 예제와 함께 JavaScript의 기본 사항을 배우십시오.

그건 그렇고, 안전한 보관에 대해. 오늘날에는 최신 DBMS보다 데이터 스토리지를 더 잘 구현하기가 어렵습니다. DBA를 구현하면 필요한 보안 조치를 결정할 수 있습니다. 무엇이 더 좋을까요? 또한 새로운 데이터베이스 보호 도구가 매일 릴리스됩니다. 액세스는 일반적으로 더스팅 형식을 통해 이루어지지만 충분한 기술만 있으면 인체 측정에서 2단계 인증에 이르기까지 모든 것을 구현할 수 있습니다. 이는 특히 MariaDB인 오픈 소스 DBMS에 적용됩니다(나중에 자세히 설명).

데이터베이스 관리 시스템보다 백업 측면에서 더 나은 것을 상상하기는 어렵습니다. 응용 프로그램을 파일에 저장하면 데이터의 안전이 귀하의 손에 달려 있습니다. 백업과 필요한 복사본을 제때에 만들어야 합니다. DBMS는 일정 간격으로 이를 수행하고 정보를 외부 미디어나 클라우드로 전송할 수 있습니다.

MySQL: 당연한 성공

단언컨대, 현존하는 모든 DBMS 중에서 가장 대중적이다. 웹 애플리케이션 및 복잡한 소프트웨어: 도시 도서관의 자료 회계는 MySQL 또는 MSSQL을 통해 구현될 가능성이 큽니다. 이 시스템의 기능으로 인해 경쟁업체는 점점 더 많은 새로운 솔루션을 내놓을 수 있습니다. 그러나 개발자 자신은 그다지 뒤처지지 않습니다. 최신 버전소프트웨어가 방금 출시되었습니다. 그들은 20년 이상 동안 주기성을 중단하지 않았습니다.

이전에 이 개발은 Sun Microsystems가 소유했으며 Java 및 기타 여러 개발 도구를 제공했습니다. 2010년에는 MySQL과 함께 모든 제품이 Oracle로 이전되었습니다. 현재까지 DBMS를 유지하고 있습니다.

v시스템은 원래 1995년 같은 이름의 회사에서 개발했습니다. 제작자는 가장 빠른 프로그래밍 언어인 C, C++ 및 HTML을 사용했습니다. 따라서 개발자는 지속적으로 지원되는 안정적이고 빠른 DBMS를 마음대로 사용할 수 있습니다. 오늘날 MySQL은 서버, 데이터베이스 및 스크립팅 프로그래밍 언어로 구성된 소위 "신사 제품군"의 일부입니다.

사용성은 경쟁사에 비해 MySQL의 명백한 장점이라고 할 수 있습니다. 항상 그렇듯이 소프트웨어의 인기가 높을수록 작업하기가 더 쉽습니다. 모든 버그는 신속하고 신속하게 수정됩니다. 이것은 커뮤니티 덕분에 빠르게 발전하고 있는 프로그래머와 개발자를 위한 소프트웨어라는 것을 잊지 마십시오. 새로운 플러그인이 계속 나오고 있습니다 다양한 확장 MySQL용.

MySQL을 설치하는 것은 매우 쉽습니다. GUI의 존재 덕분에 - GUI사용자, 이것은 일반 설치켜짐. DBMS에 추가 기능을 설치할 때도 마찬가지입니다.

MySQL이 가장 크로스 플랫폼 DBMS 중 하나라는 것은 말할 나위도 없습니다. "적어도 계산기에서" 소프트웨어 출시를 최우선 과제로 삼았던 썬의 손길을 느낄 수 있습니다. 확장성에 대한 평가: 네트워크에서 작업하는 거의 모든 가장 큰 리소스는 MySQL을 기반으로 구축됩니다. 더 있지만 전문적인 옵션, 예를 들어 우리가 잊지 않은 PostgreSQL입니다.

DBMS 최고의 "마리아"

모든 오픈 소스 프로젝트와 마찬가지로 MySQL에는 MariaDB라는 성공적인 포크가 있었습니다. 부모 DBMS와 그 파생물은 모두 제작자의 딸인 Mu와 Maria의 이름을 가집니다. 이 시스템은 MySQL의 대안으로 사용되지만 이는 근본적으로 잘못된 표현입니다. 어느 쪽이 더 나은지에 대한 논쟁이 있지만 Maria 또는 My는 여전히 진행 중입니다.

Maria 개발자의 목표는 MySQL과 완벽하게 호환되지만 크게 개선된 제품을 만드는 것이었습니다. 예를 들어, MySQL의 데이터 저장 엔진은 MyISAM이었습니다. Maria에서는 메인 프로젝트에 비해 DBMS가 더 나은 성능을 제공한 Aria입니다. 그리고 MariaDB는 MySQL을 기반으로 하지만 최신 버전에는 원본 코드의 25% 이하가 포함되어 있습니다.

Maria는 더 나은 전반적인 성능을 자랑합니다. 이것은 문자 변환에 특히 해당됩니다. 많은 양의 정보에서 계수는 2% 이상에 이릅니다. 디버그 코드도 MySQL에 비해 최적화되어 있습니다. 일반적으로 개발자는 최고 속도"부모"가 줄 수있는 것보다 개발. MariaDB 뒤에 있는 커뮤니티는 더 많은 개선을 약속합니다.

또한 사용자 자신이 Maria의 작업을 개선하고 최적화할 수 있습니다. 이 DBMS를 다른 모든 DBMS와 구별하는 것은 완전한 오픈 소스입니다. 닫힌 요소나 모듈이 없고 모든 것이 사용 가능합니다. 코드를 무기한으로 사용할 수 있을 뿐만 아니라 MariaDB를 개발하는 커뮤니티에 변경 사항을 제안할 수도 있습니다.

Postgres로부터 클레임 획득

PostgreSQL은 관계형이 아니라 객체 관계형인 또 다른 데이터베이스 관리 시스템입니다. 이것은 사용자 자신이 다양한 데이터를 포함할 수 있는 작업을 위한 개체를 생성할 수 있음을 의미합니다. 완전 무료이며 가장 유연합니다. 일부 개발자는 PostgreSQL을 시장에서 가장 전문적인 솔루션이라고 부릅니다. 이 DBMS는 Postgres라는 버클리 대학에서 만든 비영리 대학 프로젝트에서 가져왔습니다. 이 시스템은 8년이라는 긴 시간 동안 개발되어 현재까지 지원되고 있습니다.

그러한 제품에서 발생하는 것처럼 "프로그래머를 위한 프로그래머"로 밝혀졌습니다. 이는 매우 기능적이지만 일반 개발자가 마스터하기에는 너무 어렵습니다. 처음에는 DBMS에도 자체 쿼리 언어가 있었지만 나중에 이 아이디어는 포기되어 사소한 "후편"만 남게 되었습니다. 독립 개발자들의 열의에도 불구하고 PostgreSQL은 그들이 부르는 것만큼 좋지 않습니다. 지금까지 문제 영역은 소스 코드에서 발견되었습니다.

확장성 면에서 PostgreSQL은 MySQL 및 MariaDB와 비교할 때 열등하지 않습니다. 대규모 빅 데이터 처리 프로젝트는 이 소프트웨어를 기반으로 구축되며, 개발자들이 그 안정성을 신뢰합니다. 여러 인터페이스 옵션을 통해 제품을 개인화할 수 있습니다.

그러나 PostgreSQL은 여전히 ​​대량 제품이 아닙니다. 사실 이 시스템은 단순한 개발자에게는 너무 복잡합니다. 문서를 선택하더라도 가장 논리적인 질문을 포함하여 모든 질문에 대한 답변을 얻을 수는 없습니다. 또한 PostgreSQL의 쿼리 실행 속도가 혼란스럽습니다.

이 DBMS는 엔터프라이즈 솔루션에 적합합니다. 예를 들어, 각 개발자가 지원을 처리할 수 있는 IT 회사의 데이터베이스입니다. 또한 PostgreSQL은 완전 무료입니다.

그게 우리가 가진 전부입니다. DBMS와 같은 복잡한 결정에서는 리더를 지정하기가 어렵다는 점을 기억하십시오. 사용법 면에서는 MySQL, 확장성 면에서는 MariaDB와 PostgreSQL입니다. 모든 경우에 만병 통치약이 될 제품을 얻는 즉시 우리는 그것에 대해 확실히 말할 것입니다.

자바스크립트. 빠른 시작

웹 애플리케이션 빌드의 실제 예제와 함께 JavaScript의 기본 사항을 배우십시오.

이제 기본 데이터를 저장하기 위한 DBMS를 선택할 수 있습니다. MySQL에서 개발을 시작했지만 지금은 어느 것을 선택해야 할지 잘 모르겠습니다. 이 단계에서 다른 DBMS로 이동하는 것은 나에게 문제가 되지 않을 것입니다(저는 PDO를 사용합니다). DBMS의 "고부하"가 무엇인지에 대한 명확한 이해와는 거리가 멀다. 내 계산에 따르면 약 1 년 안에베이스가 매우 무거워 질 것입니다 (아래 참조)

주요 선택은 MySQL, PostgreSQL, MariaDB 중 하나입니다. 또한 가능하지만 권장하지 않음 마이크로소프트 SQL Windows Azure의 서버

상황은 이렇습니다.

  1. 데이터베이스에 대한 복잡한 쿼리가 없습니다. 두 테이블의 최대 JOIN
  2. ~에 대한대부분의 요청을 읽음
  3. 가장 중요하고 "주요" 테이블이 하나 있습니다(테이블 구조는 스포일러 아래에 있습니다). 테이블은 하루에 약 10-30,000개의 레코드가 증가합니다. 이 테이블에 데이터를 쓰는 것이 가장 중요합니다!
  4. ~에 대한대부분의 읽기 요청은 "마스터" 테이블에 대한 것입니다. 이 테이블은 모든 필드에서 검색됩니다(매우 드문 경우 ~0.5% - 한 번에 여러 필드). 빨리 검색해야 합니다(3번 포인트에도 불구하고)
  5. 인덱스는 한 번에 두 필드의 각 필드에 대해 "기본" 테이블에 추가될 가능성이 가장 큽니다(모든 쿼리에서 ownerID가 지정되기 때문에 ownerID 및 필드 이름). 모든 필드에 대해 빠른 검색이 필요하지만 이것은 우선순위 작업이 아닙니다. (또는 Sphinx를 사용하는 것이 더 낫습니까?)
  6. "메인" 테이블에 대한 읽기 요청의 가장 큰 부분(~ 80%)은 인덱스에 대한 간단한 선택 "s 및 제한 = 20인 PersonalID입니다. 인덱스의 다른 필드에 대한 나머지 요청(아직 없음) ownerID 및 필드 이름, 또한 제한 = 20
  7. "기본" 테이블의 레코드에서 데이터 변경은 극히 드물게 발생합니다. 테이블에서 레코드가 삭제되지 않습니다.
  8. 트랜잭션 및 외래 키 지원은 선택 사항입니다.
  9. 마스터-슬레이브 데이터 복제 기능 필요
  10. DBMS 수준의 샤딩 가능성 환영
  11. 데이터베이스의 신뢰성은 매우 중요합니다(예: MyISAM과 같은 충돌 수동 복구즉시 사라짐)
  12. "기본" 테이블에 새 필드를 추가할 수 있습니다. 물론 이것은 극히 드문 일이며 가장 중요한 요구 사항과는 거리가 멀지만 MySQL의 경우 10GB 크기의 테이블에 새 열을 추가하는 것은 매우 긴 프로세스이며 실제로 새 열을 옮기고 싶지 않습니다. 필드를 별도의 테이블로
  13. 처음에는 이 모든 것이 전용 서버에서 회전합니다.
  14. 다른 테이블은 천천히 성장하고 그들에 대한 액세스는 매우 드물 것입니다. 나는 그것에 대해 걱정하지 않습니다. 자주 업데이트되는 데이터가 redis에서 회전하고 있습니다"
"마스터" 테이블의 구조 CREATE TABLE IF NOT EXISTS `clients` (`id` bigint(11) NOT NULL AUTO_INCREMENT, `personalID` int(11) NOT NULL, `ownerID` int(11) NOT NULL, `fromID` int(11) NOT NULL DEFAULT "4", `fromDomain` varchar(255) NOT NULL, `datetime` datetime NOT NULL, `status` int(11) NOT NULL DEFAULT "0", `paid` tinyint(1) NOT NULL DEFAULT "0", ` paymentType` tinyint(4) NOT NULL DEFAULT "1", `wmSum` float NOT NULL DEFAULT "0", `wmCommission` float NOT NULL DEFAULT "20", `sysNumber` varchar(14) NOT NULL, `sysNumberLastUpdate` 타임스탬프 NOT NULL DEFAULT CURRENT_TIMESTAMP, `sysNumberStatus` varchar(250) NOT NULL, `timezone` float NOT NULL, `comment` varchar(500) NOT NULL, `countryID` int(11) NOT NULL, `postIndex` varchar(6) NOT NULL , `지역` varchar(500) NOT NULL, `city` varchar(500) NOT NULL, `address` varchar(500) NOT NULL, `fio` varchar(500) NOT NULL, `phone` varchar(15) NOT NULL , `email` varchar(255) NOT NULL, `price` float NOT NULL, `quantity` int(11) NOT NULL DEFAULT "1", `label` v archar(30) NOT NULL, `tag` int(11) NOT NULL, `ip` varchar(15) NOT NULL, `referer` varchar(200) NOT NULL, PRIMARY KEY(`id`), KEY `from`( `ownerID`,`fromID`), KEY `paid`(`paid`), KEY `status`(`status`), KEY `label`(`label`), KEY `sysNumberLastUpdate`(`sysNumberLastUpdate`), KEY `personalID` (`ownerID`,`personalID`)) ENGINE=InnoDB 기본 CHARSET=utf8;

추신 저를 구글로 보내려는 분들은 답변도 하지 말아주세요. 비교하여 정보 찾기 현재 버전나는 다른 DBMS에서 성공하지 못했고, PostgreSQL, Microsoft SQL Server 및 MariaDB와 함께 일하지 않은 사람을 위해 가능성, 장단점을 연구하는 것은 매우 긴 작업입니다. 네, 그리고 MySQL에서 저는 전문가와는 거리가 멀고 이러한 대규모 프로젝트는 저에게 생소한 일이며 MySQL의 기능은 버전마다 다릅니다. 내가 확실히 아는 유일한 것은 MySQL의 MyISAM 유형 테이블이 확실히 작동하지 않는다는 것입니다.

  • 3년 전에 받은 질문
  • 조회수 39797회

MySQL의 원래 버전은 Jvid Achmark, Allan Larsson 및 Michael Monty가 설립한 핀란드-스웨덴 회사 MySQL AB에 의해 개발되었습니다. MySQL의 첫 번째 버전은 1995년에 등장했습니다. 처음에는 개인용으로 계획되었지만 몇 년 후에는 엔터프라이즈 수준의 데이터베이스로 바뀌었습니다.

2008년 1월 Sun Microsystems는 MySQL AB를 10억 ​​달러에 인수했습니다. 그 직후 Oracle은 Oracle 데이터베이스의 직접적인 경쟁자였기 때문에 그러한 결정이 무료 MySQL 프로젝트에 피해를 줄 것을 우려한 유럽 위원회의 허가를 받아 Sun Microsystems를 인수했습니다. MySQL의 개발 전략에 대한 불신으로 인해 MariaDB라는 포크가 생성되었습니다.

몇 년이 지나고 이 기간 동안 MariaDB는 기본적으로 많은 Linux 배포판에서 사용되기 시작했습니다. 대부분의 인터넷 사이트의 작동을 보장하는 데 사용됩니다. 이 기사에서는 MySQL과 MariaDB를 비교하고 두 번째가 첫 번째보다 나은 이유와 원본 MySQL이 필요한 경우를 알아보겠습니다.

Sun Microsystems에서 받은 다른 많은 오픈 소스 프로젝트와 달리 Oracle은 여전히 ​​MySQL을 개발 중입니다. 많은 개발자들이 사임한 후 새로운 사람들이 고용되었습니다. 그러나 MySQL의 새 버전 개발은 종료되었습니다. 원천개발팀만 사용할 수 있으며 작업이 완료된 후에만 공개 저장소에 업로드됩니다. 모든 결정은 회사 내에서 논의됩니다.

MariaDB는 완전히 공개적으로 개발되었으며 개발에 관한 모든 결정과 새로운 아이디어는 이메일 뉴스레터와 버그 보고 시스템에서 자유롭게 논의할 수 있습니다. MariaDB 개발에 기여하는 것은 매우 쉽습니다. 개발자뿐만 아니라 사용자의 패치도 수락됩니다. 일반적으로 MariaDB는 더 활발히 발전하고 있습니다.

브랜딩으로 인해 MySQL에는 여전히 대규모 커뮤니티가 있지만 점점 더 많은 프로젝트가 MariaDB로 이동하고 있습니다. REHL 7 및 SLES 12와 같은 잘 알려진 엔터프라이즈 배포판은 이미 MariaDB를 사용하고 있습니다. 즉, MySQL 또는 MariaDB의 전투에서 후자가 승리합니다.

2. 출시 빈도

Oracle의 정책은 3개월마다 모든 제품에 대한 보안 업데이트를 릴리스하는 것입니다. 하지만 나가는 길 새로운 버전 MySQL은 2개월마다 예정되어 있습니다. 이로 인해 제품 업데이트와 보안 업데이트가 동기화되지 않는 경우가 많습니다.

개발자는 모든 오류 메시지와 취약점을 닫을 시간이 없기 때문에 데이터베이스가 몇 달 동안 취약한 상태로 남아 있을 수 있습니다. MySQL의 또 다른 문제는 보안 업데이트가 매우 모호하다는 것입니다. 관리자가 단순히 프로그램을 새 버전으로 업데이트할 수 없다면 백포트를 만들기가 어렵습니다.

MariaDB는 프로그램 업데이트와 보안 업데이트를 동기화하여 모든 버그를 수정합니다. 모든 고정 CVE는 문서화되어 있으며 모든 사용자는 새 버전에서 변경된 사항을 확인할 수 있습니다.

4. 특징 및 기능

일반적으로 MariaDB는 더 빠르게 개발되고 더 많은 기능을 가지고 있습니다. 이러한 기능은 최적화, 향상된 메모리 관리 등과 관련이 있습니다. 일반적으로 시간이 지나면 이러한 기능이 MySQL로 이전됩니다. 예를 들어 MySQL 이전에 MariaDB에서도 동일한 GIS 지원이 나타났습니다. 무엇보다도 MariaDB는 Inodb, MyISAM 및 쿼리 처리 엔진에 대한 많은 성능 향상을 제공하고 GIS, 테이블 제거, 가상 및 동적 열, 다중 출처 복제, 역할 등을 지원합니다.

그러나 MariaDB에는 단점이 있습니다. MySQL이 가지고 있는 일부 기능을 지원하지 않습니다. 즉, MariaDB는 MySQL JSON 구문과 호환되지 않으며, ngram, MeCab, MySQL X 플러그인은 지원되지 않으며 동시에 여러 테이블에 데이터를 할당할 수 있는 테이블스페이스도 지원하지 않습니다. 그러나 개발자는 단점을 수정하기 위해 적극적으로 노력하고 있습니다.

MySQL 클러스터에 관심이 있는 사람들에게는 MariaDB가 사용하는 것이 흥미로울 것입니다. 새로운 시스템복제 Galera, 그 작동은 표준 master-salve와 다릅니다. Galera는 2007년부터 개발 중이지만 한 번도 포함된 적이 없습니다. 공식 버전 MySQL.

5. 스토리지 엔진 지원

MariaDB 데이터베이스 관리 시스템은 데이터 저장을 위한 더 많은 엔진을 지원합니다. 이러한 엔진의 대부분은 MySQL용 플러그인으로 사용할 수 있지만 MariaDB에서는 공식 릴리스에 포함되어 있습니다. 이것은 엔진이 적절하게 통합되어 잘 작동할 것임을 의미합니다. 다음은 지원되는 엔진 목록입니다.

  • 아리아;
  • XtraDB는 InnoDB의 개선된 버전입니다.
  • FederatedX는 Federated의 향상된 버전입니다.
  • 오그라프;
  • 스핑크스SE;
  • IBMDB2I;
  • 토쿠DB;
  • 카산드라;
  • 연결하다;
  • 순서;
  • 거미;
  • 칼럼스토어;
  • 마이시암.

원래 MySQL은 기본적으로 Aria, MySIAM 및 InnoDB의 세 가지 유형의 테이블만 지원한다는 것을 상기시켜 드리겠습니다. 이것은 MySQL 또는 MariaDB를 선택할 때 중요한 측면입니다.

6. 버전의 이름과 번호

MariaDB와 MySQL의 이러한 차이점은 그다지 중요하지 않지만 누군가에게는 흥미로울 것입니다. MySQL이라는 이름은 개발자 중 한 명인 Michael Monty의 첫 딸을 기리기 위해 주어졌습니다. 그녀의 이름은 My입니다. MariaDB의 개발은 같은 사람이 계속했고, 이번에는 그의 막내 딸 Maria의 이름을 따서 프로그램 이름을 지었습니다.

버전의 경우 원래 버전 5.6 이전에는 MariaDB 버전이 기반으로 하는 MySQL 버전과 동기적으로 번호가 매겨졌습니다. 하지만 충분한 변경 사항이 누적되고 MariaDB 코드를 기반으로 하기 시작하면 버전 번호를 10으로 변경하는 것이 관례였습니다. 그 순간부터 MariaDB 번호 매기기가 유일한 방법입니다.

결론

이 기사에서는 MySQL과 MariaDB를 비교했습니다. 대부분의 면에서 MariaDB는 MySQL보다 훨씬 낫습니다. 이것이 대부분의 Linux 배포판에서 기본적으로 리포지토리에서 사용하는 이유입니다. 아주 드문 경우에만 원본 버전이 필요할 수 있습니다.