올바른 데이터베이스 선택: MySQL vs.그 외 모든 것
요즘에는 모두가 MySQL을 사용하는 것처럼 보일 것입니다. 모두가 MySQL을 사용하기 때문입니다.저는 들어오는 많은 양의 데이터를 처리할 웹 애플리케이션을 개발하고 있는데, "MySQL과 함께 사용"해야 하는지, 아니면 다른 오픈 소스 데이터베이스나 상업용 데이터베이스를 살펴봐야 하는지 궁금합니다.
편집: 최적의 성능, 데비안 5에서 작동하는 루비 + 레일과의 통합, 그리고 돈이 빠듯하지만 장기적으로 비용이 절감된다면 더 비싼 것에 투자하는 것을 고려할 것입니다.
이전에도 게시한 적이 있지만 이 조언을 변경할 이유가 없습니다.
MySQL을 사용하는 것이 더 쉽습니다.
더 나은 UI 도구.산을 사용하지 않으면 더 빨라집니다.잘못된 데이터에 대한 내성이 향상되었습니다.자동 증분 열은 자동 증분을 입력하는 것만큼 쉽습니다.권한은 파일 시스템 및 OS 사용자와 관련이 없습니다.구분 기호를 설정하는 것이 저장 프로시저를 작성할 때 PG의 "달러 기호 견적"을 사용하는 것보다 쉽습니다.MySQL에서는 한 번에 하나만 연결하는 것이 아니라 모든 데이터베이스에 연결합니다.
Postgres(PG)는 훨씬 더 표준을 준수하지만, 특히 UI 관점에서 볼 때 더 추하고 복잡합니다.이전에는 수동으로 진공 청소를 해야 했고 실제로 참조 무결성을 강제로 적용했습니다(이것은 골칫거리가 될 수 있는 훌륭한 일입니다).자동 증분은 훨씬 유연하지만 시퀀스(직렬을 사용하여 마스킹할 수 있음)가 필요합니다. 잠시 기다려 주십시오. OID란 무엇입니까?
따라서 데이터베이스, 데이터 유효성, ACID 규정 준수 등에 대해 잘 모르거나 관심이 없지만 간편함과 속도에 대해서는 관심이 있다면 MySQL을 사용하는 경향이 있습니다.
너무 많은 "웹 프로그래머"들이 "웹 2.0"이나 PHP 또는 Java에 대해 많이 알고 있지만 데이터베이스 이론이나 실제("인덱스? 그게 뭐죠?")에 대해서는 잘 알지 못합니다.그들은 데이터베이스를 단순히 고급 해시 테이블이나 데이터 가방으로 보는 경향이 있으며, 실제로는 동적으로 변경하거나 해시 테이블만큼 관대하지는 않습니다.
이러한 사람들에게 MySQL은 -- 5.0 이전까지는 RDBMS가 아니었고, 많은 면에서 여전히 그렇지 않기 때문에 -- 신의 선물입니다.이는 경쟁사보다 "빠르고" 웹 프로그래머가 원하지 않거나 이해하거나 가치를 보지 않는 "밀밀한" 데이터베이스 자료에 "시간을 낭비"하지 않습니다.
반면에 데이터베이스 배경을 가진 사람들에게 MySQL은 지뢰밭입니다. 복잡한 보기, 그룹별, 그룹별 순서 등 작동해야 하는 항목이 작동하거나 운이 좋으면 서버가 손상되거나, 운이 나쁘면 잘못된 데이터로 결과를 제공할 수도 있습니다.
저는 이런 것들을 다루는 데 며칠을 보냈지만, 그다지 복잡하지 않은 견해와 그룹별로 복잡하다는 것은 인정할 수 있습니다.
MySQL은 더 빠르지 않습니다.ACID에 InnoDb 테이블을 사용하는 경우(또는 3천만 개 이상의 행에서 MyISAM 테이블이 망가지는 경향이 있다는 이유만으로) 예, 한 테이블을 직접 선택하는 것이 PG보다 빠를 수 있습니다.그러나 조인을 추가하면 PG가 갑자기 훨씬 빨라집니다.(MySQL은 특히 외부 조인을 잘 못합니다.)
요약하자면, 데이터베이스가 백(bag)인 경우, 데이터 마이닝이나 보고를 할 생각이 없는 경우, 관계나 업데이트가 거의 없는 텍스트를 제공하는 데 주로 관심이 있는 경우, 즉 데이터베이스를 사용하여 블로그를 구동하는 경우 MySQL은 훌륭한 선택입니다.
그러나 실제로 데이터를 관리하는 경우 프런트 엔드 프로그램 및 중간 계층 비즈니스 규칙보다 데이터가 더 오래 지속되고 비즈니스에 더 중요하다는 것을 알고 있다면 실제 데이터베이스의 기능이 필요한 경우 PG를 사용하십시오.
모든 테이블 구조를 Hibernate(또는 다른 ORM)에서 자동 생성할 수 있다고 결정한 "웹 프로그래머"는 이를 보고 "너무 복잡하다"와 "복잡하다는 것은 더 많은 비용과 더 느린 속도를 의미한다"고 말하며 MySQL을 사용합니다.
제가 말했듯이, PG는 훨씬 뛰어나고, 저는 MySQL의 이상한 버그와 부딪히는 것을 싫어하며, 저는 전반적인 PG 성능이 MySQL보다 약간 복잡한 쿼리보다 더 낫다고 생각합니다.
그러나 MySQL을 사용하면 데이터베이스 설계를 잘 이해하지 못하는 많은 사람들이 MySQL이 훌륭한 선택임을 알게 됩니다.
PG를 사용합니다. 일관성 있고, 신뢰할 수 있으며, 표준을 준수하며, 복잡한 쿼리에서 (적어도) 더 빠르며, 이상한 버그로 인해 일정이 완전히 취소되지 않습니다.
내 생각엔 포스트그레SQL은 MySQL에 대한 매우 실행 가능한 대안입니다.오라클에 훨씬 더 가깝습니다.
개인적으로 저는 다음과 같은 이유로 가능할 때마다 MySQL을 피하려고 합니다.
- 기본 스토리지 엔진 MyISAM에는 외부 키 지원이 없습니다.Innodb는 그러나 MyISAM 테이블에 대한 외부 키를 지원하지 않습니다.
- 제가 잘못된 데이터를 삽입하려고 하면 MySQL이 기꺼이 변경해 줄 것입니다.
- 잘못된 DateTime, Date 또는 Timestamp 값이 "0"으로 변환됩니다. http://dev.mysql.com/doc/refman/5.1/en/datetime.html
- Varchar 및 Char 유형 열: http://dev.mysql.com/doc/refman/5.1/en/char.html
- SQL Strict Mode에 따른 숫자 데이터 유형: http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html
이러한 것들이 어떤 사람들에게는 중요하지 않을 수도 있지만, 데이터의 품질에 관해서라면, 저는 차라리 다른 것을 사용하고 싶습니다.
세계의 RDBMS에는 차이가 있을 수 있습니다.http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems#Fundamental_features 을 살펴보십시오.
이것을 지침으로 사용하면 선택의 폭을 많이 좁힐 수 있을 것입니다.
주의해야 할 몇 가지 사항:
SQL Server 2005 Express는 4GB 파일 크기로 제한되지만 .NET 및 Java 언어에서 탁월한 지원을 제공합니다.
MySQL은 Windows와 Linux 모두에서 실행되며, 많은 언어(.NET 및 Java 포함)에서 외부 라이브러리와 함께 MySQL을 지원합니다.
SQLite는 모든 운영 체제에서 효과적으로 지원되며 애플리케이션의 통합 부분으로 배포될 수 있습니다.
볼랜드 인터베이스의 오픈 소스 및 분기 버전인 Firebird는 꽤 좋고, 대부분의 (모든?) Linux 맛에서 행복하게 작동하며 성능이 매우 좋습니다.저는 RoR 사람이 아니기 때문에 자세한 내용은 모르지만, 뉴저지에 있는 친구가 있는데, 그의 모든 RoR 프로젝트에서 파이어버드를 사용하고 있으며, 그것은 확실히 RoR과 잘 작동합니다.
여기에서 Firebird Rails 어댑터에 대한 링크를 찾았습니다.
MySQL은 많은 문제를 해결할 수 있는 강력하고 확장 가능한 솔루션이지만 기본값이 매우 보수적이기 때문에 일반적으로 즉시 사용할 수 있는 솔루션은 아닙니다.다른 데이터베이스 제품과 마찬가지로 원하는 성능을 위해 설치를 조정하는 데 시간이 필요합니다.또한 제한사항을 수용하는 데 시간이 필요하며, 이는 선택한 데이터베이스에 대해서도 마찬가지입니다.
MySQL의 인기는 부분적으로 자체적으로 발생합니다. 많은 호스팅 공급자가 제공하기 때문에 많은 사람들이 MySQL을 사용합니다.
Mysql은 훌륭하고 mssql은 훌륭합니다.다른 건 사용하지 않았습니다.저는 당신이 완전히 궁지에 몰렸다면, 당신이 가장 강력한 기술 스택을 사용하라고 말하고 싶습니다.저는 c#, asp.net 및 기타 마이크로소프트 스택 경험이 풍부하기 때문에 mssql을 전문으로 하는 것은 당연합니다.*nix, php 등에 더 익숙하다면 오픈 소스 스택을 고수하는 것이 더 편할 것입니다.당신은 확실히 두 스택을 혼합하고 일치시킬 수 있지만, 한 세계 또는 다른 세계에 집착하는 것은 당신에게 약간의 고통을 피할 수 있습니다.
더피모를 좋아합니다. 저도 포스트그레를 추천합니다.SQL. 개발자의 관점에서 보면 매우 좋습니다. 유닉스 기반과 윈도우즈 모두 많은 플랫폼에서 작업하고, 제가 작업한 모든 언어/환경(윈도우즈, 리눅스, 델파이, Java, 펄, 파이썬)에 대해 안정적인 인터페이스가 다양합니다.저장 프로시저 언어: PLPGSQL 또한 쉽고 강력합니다.사용자 지원(뉴스 그룹, 목록, SO)은 유용하고 유용합니다.
"요즘에는 모두가 MySQL을 사용하는 것처럼 보일 것입니다. 왜냐하면 MySQL은 모두가 사용하는 것이기 때문입니다."MySQL이 사람들이 사용하는 유일한 것이라면 Oracle과 MSSQL이 여전히 존재하는 이유는 무엇입니까?
어떤 데이터베이스 엔진을 사용해야 할지에 대한 논쟁은 소들이 집에 올 때까지 논의될 수 있습니다.저는 개인적으로 데이터베이스 엔진을 선택할 때 항상 하나의 상수를 발견했습니다.당신이 살 수 있는 것은 일반적으로 당신이 원하는 것입니다.
XXX를 데이터베이스에 지출하는 것을 정당화할 수 있다면 데이터베이스를 선택한 이유를 이미 알고 있을 것입니다.
MySQL은 설치하기 쉽고 특별한 설정 없이도 잘 작동합니다.적절한 접근 방식을 통해 MySQL은 사용자의 요구에 유연하게 적응할 수 있습니다.그러나 DBMS와 데이터 구조를 아무리 잘 조정해도 프로젝트 속도가 느려지는 경우도 있습니다.
MySQL은 다음과 같은 경우에 사용됩니다.
- DBMS 설정에 대해 자세히 알고 싶지 않은 경우.
- 당신은 구조적으로 생각합니다.
- MySQL과의 통합은 모든 프로그래밍 언어, 프레임워크, CMS, CMF 등에서 이루어집니다.
- 소형 구조 데이터(최대 1~2기가바이트)를 관리하려면 DBMS가 필요합니다.
당신은 많은 양의 수신 데이터를 처리한다고 언급했습니다.아마도 이 가이드가 도움이 될 것입니다.
언급URL : https://stackoverflow.com/questions/831849/choosing-the-right-database-mysql-vs-everything-else
'programing' 카테고리의 다른 글
Firestore에서 여러 문서를 한 번에 생성/업데이트하는 방법 (0) | 2023.07.04 |
---|---|
유형 스크립트 열거값을 사용하여 새 유형 작성 (0) | 2023.07.04 |
VBA Match에서 오류 2042가 표시되는 이유는 무엇입니까? (0) | 2023.07.04 |
파이썬 세트에서 무작위로 2개의 아이템을 고르려면 어떻게 해야 하나요? (0) | 2023.07.04 |
Mongodb: mongo 셸의 ObjectId에서 Date 범위 쿼리 수행 (0) | 2023.07.04 |