데이터베이스 백엔드를 변경해야 하는 시기는 언제입니까?

StackOverflow https://stackoverflow.com/questions/74261

  •  09-06-2019
  •  | 
  •  

문제

어떤 데이터베이스 백엔드를 사용해야 하는지 알기 위해 웹 애플리케이션 데이터를 저장할 때 따라야 할 일반적인 경험 법칙이 있습니까?일일 히트 수, 데이터 행 수 또는 선택할 때 고려해야 할 기타 지표가 있습니까?

내 초기 아이디어는 이것에 대한 순서가 다음과 유사할 것이라는 것입니다(그러나 반드시 그런 것은 아니기 때문에 질문하는 것입니다).

  1. 플랫 파일
  2. BDB
  3. SQLite
  4. MySQL
  5. 포스트그레SQL
  6. SQL 서버
  7. 신탁
도움이 되었습니까?

해결책

그다지 쉬운 일이 아닙니다.유일한 일반적인 경험 법칙은 현재 솔루션이 더 이상 따라잡을 수 없을 때 다른 솔루션을 찾아야 한다는 것입니다.여기에는 다른 소프트웨어(반드시 전역적으로 고정된 순서는 아님), 하드웨어 또는 아키텍처를 사용하는 것이 포함될 수 있습니다.

다음과 같은 것을 사용하여 데이터를 캐싱하면 훨씬 더 많은 이점을 얻을 수 있습니다. 멤캐시드 다른 임의의 스토리지 백엔드로 전환하는 것보다.

다른 팁

만약 당신이 중량급 제품(SqlServer, Oracle) 중 하나가 필요하다고 생각한다면, 처음부터 그 중 하나부터 시작해야 합니다.데이터 마이그레이션은 매우 어렵습니다.장기적으로는 처음부터 시작하여 거기에 머무르는 것이 비용을 절감할 것입니다.

순위를 너무 구체적으로 밝히시는 것 같아요.매우 작은 데이터 세트의 경우 플랫 파일 등으로 시작하고 SQL과 같은 구문이 필요하지 않은 약간 더 큰 데이터 세트의 경우 DBM과 같은 것으로 올라간 다음 일종의 SQL 데이터베이스로 이동할 수 있습니다.

하지만 누가 그 모든 재작성을 하고 싶어 할까요?애플리케이션이 조인, 저장 프로시저, 트리거, 외래 키 유효성 검사 등에 대한 액세스를 통해 이점을 얻을 수 있다면 데이터 세트 크기에 관계없이 SQL 데이터베이스를 사용하면 됩니다.

어느 것 보유하고 있는 데이터의 양보다는 고객의 기존 설치와 사용 가능한 DBA 기술에 더 의존해야 합니다.

즉, 데이터베이스 크기는 유일한 고려 사항이 아니며 아마도 가장 중요한 고려 사항이 아닐 수도 있습니다.

이에 대한 포괄적인 대답은 없지만 거의 항상 플랫 파일을 사용하는 것은 좋은 생각이 아닙니다.당신은 그것들을 통해 분석해야 하고(제 생각에) 그들은 잘 확장되지 않습니다.Oracle이나 SQL Server(또는 무료 옵션을 찾는 경우 MySQL, Postgres)와 같은 적절한 데이터베이스로 시작하는 것이 좋습니다.오버헤드가 거의 없으므로 나중에 많은 노력과 두통을 덜 수 있습니다.또한 데이터를 어리석지 않은 방식으로 구조화할 수 있으므로 데이터를 어떻게 가져오거나 내보낼 것인지보다는 데이터로 무엇을 할 것인지 자유롭게 생각할 수 있습니다.

실제로는 데이터와 데이터 사용 방법에 따라 다릅니다.이전 직위 중 하나에서 우리는 다각형 데이터 유형을 사용하여 데이터를 관리할 수 있게 해주는 기본 지리적 위치 및 시간대 확장으로 인해 Postgres를 사용했습니다.우리는 그렇게 해야 했고 저장 프로시저, 뷰 등도 사용하고 싶었습니다.

이제 제가 일했던 또 다른 곳에서는 단순히 데이터가 행 단위로 표준으로 표준화되었기 때문에 MySQL을 사용했습니다.

오랫동안 SQL Server에는 4GB 데이터베이스 제한이 있었지만(SQL Server 2000 참조), 이러한 제한에도 불구하고 오래된 데이터가 제거되는 중소 규모 응용 프로그램을 위한 매우 안정적인 플랫폼으로 남아 있습니다.

이제 Oracle 및 SQL Server 05/08을 사용하여 제가 말씀드릴 수 있는 것은 안정성, 확장성 및 유연성을 최고로 원한다면 이 두 가지가 최선의 선택이라는 것입니다.엔터프라이즈 애플리케이션의 경우 강력하게 권장합니다(단순히 제가 지금 일하는 곳에서 사용하고 있기 때문입니다).

고려해야 할 기타 사항:

  • 언어 통합(ASP.NET 세션 저장, 역할 관리 등)
  • 쿼리 유형(선택, 업데이트, 삭제) [이것은 DBMS 문제가 아니라 스키마 설계 문제에 가깝지만)
  • 데이터 저장 요구 사항

애플리케이션의 데이터베이스 활용도가 가장 중요합니다.주로 어떤 쿼리가 가장 자주 사용됩니까(SELECT, INSERT 또는 UPDATE)?

SQLite를 사용하는 경우 소규모 애플리케이션을 위한 장치이지만 "웹" 애플리케이션의 경우 MySQL 또는 SQL Server와 같은 더 큰 애플리케이션일 수 있습니다.

스크립트를 작성하는 방식과 웹 애플리케이션 플랫폼도 중요합니다.Microsoft 플랫폼에서 개발하는 경우 SQL Server가 더 나은 대안입니다.

일반적으로 나는 내가 사용하는 프레임워크에서 일반적으로 허용되는 것을 따릅니다.따라서 .NET => SQL Server, Python(Django 또는 Pylons를 통해) => MySQL 또는 SQLite를 수행하는 경우입니다.

하지만 저는 플랫 파일을 거의 사용하지 않습니다.

단지 "백엔드 마력"만을 제공하는 RDBMS 솔루션을 선택하는 것에는 더 많은 것이 있습니다.예를 들어, 실패한 트랜잭션을 롤백할 수 있도록 커밋 제어 기능을 갖는 기능이 그 중 하나입니다.이유.

대규모 트랜잭션 비율 애플리케이션을 사용하지 않는 한 대부분의 데이터베이스 엔진이 적합할 것입니다. 따라서 소프트웨어에 대해 얼마를 지불하려는지, 원하는 하드웨어 및 운영 체제 환경에서 실행되는지, 어떤 전문 지식을 갖고 있는지가 문제가 됩니다. 해당 소프트웨어를 관리하는 데 있어

그 진행은 고통스럽게 들립니다.MS 제품(특히 유료 SQL Server)을 어디에든 포함시키려는 경우 다음 중 마지막 항목에 대해서만 비용을 지불하면 되므로 전체 스택을 사용할 수도 있습니다.

SQL Server Compact -> SQL Server Express -> SQL Server Enterprise (clustered).  

처음에 SQL Server Compact에서 앱을 대상으로 하는 경우 모든 SQL 코드는 수정 없이 다음 버전으로 확장됩니다.SQL Server Enterprise보다 더 큰 성과를 거두셨다면 축하드립니다.그게 그들이 부르는 거야 좋은 가지고 있는 문제.

또한:돌아가서 SO 팟캐스트를 확인하세요.나는 그들이 이것에 대해 간략하게 이야기했다고 믿습니다.

이 질문은 실제로 귀하의 상황에 따라 다릅니다.

배포할 서버를 제어할 수 있고 필요한 모든 서비스를 설치할 수 있다면 MySql 또는 MSSQL Express 서버를 설치하고 기존 데이터베이스 프레임워크에 대한 코드와 플랫 파일 구조에 대한 코딩에 소요되는 시간은 노력할 가치가 없습니다. 고려하는 것.

파이어버드는 어떻습니까?그 목록 중 어디에 해당할까요?

그리고 솔루션의 "고객"이 갖춰야 할 요구 사항도 잊지 마세요.소규모 회사를 위한 상용 애플리케이션을 작성하는 경우 Oracle은 좋은 선택이 아닐 수 있습니다.그러나 여러 캠퍼스 간에 데이터를 공유해야 하고 적절한 규모의 IT 부서를 보유하고 있는 대기업을 위한 맞춤형 솔루션을 작성하는 경우 Oracle과 Sql Server의 결정은 고객이 이미 배포했을 가능성이 가장 높은 것으로 귀결됩니다.

현재 데이터 마이그레이션은 Embarcadero의 훌륭한 도구가 있기 때문에 그다지 나쁘지 않습니다. 따라서 대신 고객의 요구에 따라 결정을 내리도록 하겠습니다.

옵션이 있는 경우 SQL Server를 선택하는 것이 좋습니다. 이는 주로 견고한 절차와 기능에 액세스할 수 있고 데이터베이스 백업 기능이 완전히 신뢰할 수 있기 때문입니다.사용 중인 언어가 아닌 데이터베이스 자체 내부에 논리를 최대한 많이 포함하면 보안과 성능에 도움이 됩니다. 실제로 삽입/업데이트 논리에 대한 프로시저를 항상 사용하는 것이 좋습니다. 주입 공격에 무적입니다.

내가 선택의 여지가 있다면 MySQL을 선호한다고 생각하는 유일한 경우는 주로 읽기 액세스에 사용되는 크고 매우 간단한 데이터베이스입니다.이것은 최근에 눈에 띄게 개선된 MySQL을 비난하려는 것이 아니며 선택의 여지가 없으면 기꺼이 사용하지만 업데이트/삽입 활동이 있는 보다 복잡한 시스템의 경우 MSSQL이 일반적으로 더 나은 옵션입니다.

귀하의 목록은 주관적이라고 생각하지만 나는 귀하의 게임을 플레이하겠습니다.

플랫 파일

BDB

SQLite

MySQL

포스트그레SQL

SQL 서버

신탁

테라데이타

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top