2010-03-01 4 views
55

내가 일하는 회사는 플랫 파일 형식을 사용하는 제품을 데이터베이스 형식으로 전환하려고합니다. 우리는 꽤 큰 데이터 파일 (예 : 25GB/파일)을 처리하고 있으며 업데이트가 정말 빨라졌습니다. 우리는 연속적으로뿐만 아니라 데이터에 무작위로 액세스하는 쿼리를 실행해야합니다. 그들에게 데이터베이스 사용의 이점을 알리려고 노력 중입니다.하지만 제 동료 중 일부는 이것을 꺼리는 것 같습니다. 그래서 사람들이 왜 나를 도와 줄 수 있는지 궁금 해서요. 왜 데이터베이스를 사용해야하는지, 아니면 플랫 파일이 더 좋은지에 대한 이유를 분명히 밝혀야합니다.데이터베이스 대 플랫 파일

+7

여기서 언급하는 데이터 구조의 종류를 언급해야합니다. 25GB 파일 각각을 1GB 당 25 행으로 변환하는 경우 플랫 파일을 사용하는 것이 좋습니다. –

+0

사실 동료가 관계형 데이터베이스를 데이터 저장소로 사용하고 싶지 않은 이유에 대해 더 궁금한 점이 있습니까? Geezus – Jeff

+0

은 모두 모든 종류의 변수에 의존합니다. 사람이 다른 사람보다 낫다고 말할 수는 없습니다. –

답변

73
  1. 데이터베이스는, 작업을 쿼리 처리 할 수 ​​있습니다. 데이터베이스는 매우 복잡한 쿼리를 처리 할 수 ​​있습니다.
  2. 데이터베이스 인덱싱 작업을 처리 할 수 ​​ 그렇다면
  3. 데이터베이스는 멀티 프로세스/멀티 스레드 액세스를 처리 할 수있는 매우 빠르게 할 수 있습니다 ID =의 X와 기록을 얻을 같은 작업.
  4. 데이터베이스는
  5. 데이터베이스 쉽게
  6. 데이터베이스가 신뢰할 수있는
  7. 데이터베이스 트랜잭션 동시 처리 할 수 ​​있습니다) (1 참조)
  8. 데이터베이스가 데이터를 업데이트 할 수있는 데이터 무결성을 볼 수 네트워크 액세스를 처리 할 수 ​​있습니다 액세스
  9. 데이터베이스 + ORM을 사용하면 매우 프로그래머에게 친숙한 방식으로 데이터를 조작 할 수 있습니다.
2

SQL 임시 쿼리 기능으로 충분합니다. 테이블에서 좋은 스키마와 인덱싱을 사용하면 빠르고 효율적이며 좋은 성능을 얻을 수 있습니다. 수동으로 파일을 통해 을 걸을 필요가 없습니다

4

구입할 수있는 경우 빌드하지 마십시오.

나는이 인용문을 최근에 들었다. 그리고 그것은 정말로 가이드 라인에 맞는 것처럼 보인다. 자신에게 물어보십시오 ... 앱의 파일 처리 부분에서 작업하는 데 시간이 얼마나 걸렸습니까? 성능을 위해이 코드를 최적화하는 데 상당한 시간이 소비되었다고 생각됩니다. 관계형 데이터베이스를 계속 사용했다면 애플리케이션의이 부분을 처리하는 데 훨씬 적은 시간을 소비했을 것입니다. 앱의 진정한 "비즈니스"측면에 더 많은 시간을 할애했을 것입니다.

+0

사실, 전체 응용 프로그램은 이상한 bash 스크립트입니다. 전체 시스템은 파일을 움직이는 한 사람의 쇼입니다. 슬픈, 나도 알아 ... – hyperboreean

+2

쿨하지만 마지막으로 나는 최고의 데이터베이스가 무료인지 확인했다. – rook

+4

아아, 그 반대도 마찬가지입니다. 더 나은 말은 "존재하는 경우 사용자 요구에 맞는 좋은 솔루션을 구입하십시오. 그렇지 않으면 빌드하십시오" –

5

Databases

그러나 여전히 파일을 저장할 필요가있는 경우 XML을 조사하는 것보다 Oracle, SQLServer 등과 같은 새로운 RDBMS를 사용할 수있는 용량이 부족합니다.

XML은 파일을 파일로 저장하는 기능을 제공하지만 파일과 데이터를 통해 쿼리 할 수있는 구조 파일 형식입니다. XML 파일은 플랫 파일보다 읽기 쉽고 사람이 쉽게 읽을 수 있도록 XSLT를 적용하여 쉽게 변형 할 수 있습니다. XML은 꼭 필요한 경우 데이터를 전송할 수있는 좋은 방법입니다.

나는 DB를 강력히 제안하지만, 그 길로 갈 수 없다면 XML은 괜찮습니다.

+3

오라클과 SQL Server는 비용이 들지 만 무료 일 때 비용을 지불하는 이유는 무엇입니까? MySQL은 모든 방법. – rook

+3

25GB CSV 파일이있는 경우 행과 열의 XML 태그를 사용하면 크기가 두 배로 늘어날 수 있습니다. 플랫 파일에서 XML로 이동할 때 상당한 부 풀림을 고려해야합니다. –

+4

@Scott Root : 개인적으로 XML을 싫어하는 경향이 있습니다. 데이터를 전달하는 무거운 방법이라고 생각하기 때문입니다. – hyperboreean

3

아마존의 SimpleDB, Tokio Cabinet 등과 같은 비 관계형 (NoSQL) 데이터베이스는 어떻습니까? Google, Facebook, LinkedIn이 거대한 데이터 세트를 저장하는 데 이들을 사용한다고 들었습니다.

데이터가 구조화되었는지, 스키마가 수정되었는지, 쉽게 복제 할 수 있어야하는지, 액세스 시간이 중요한지 등을 알려주십시오.

+0

우리는 이것도 조사하고 있습니다 ... 먼저 우리 모두가 같은 페이지에 있는지 확인해야합니다. 하지만 복잡한 보고서를 실행해야하는 경우 nosql이 어떻게 처리하는지 잘 모르겠습니다. – hyperboreean

3

언급되지 않은 파일의 유형입니다. 미디어 파일 인 경우 플랫 파일로 이동하십시오. 아마도 태그에 DB가 필요하고 DB의 레코드에 "외부 BLOB"를 연결하는 방법이 필요합니다. 하지만 전체 텍스트 검색이 필요한 경우 다른 방법으로는 갈 수 없지만 전체 DB로 마이그레이션 할 수는 있습니다.

다른 점은 파일 시스템이 물리적 파일의 수만큼 천장을 제공 할 수 있다는 것입니다.

4

더 빠릅니다. 전체 플랫 파일을 메모리에로드하지 않는 한 데이터베이스는 거의 모든 경우에 더 빠른 액세스를 허용합니다.

그들은 안전합니다. 데이터베이스를 안전하게 백업하는 것이 더 쉽습니다. 플랫 파일에는없는 파일 손상 여부를 확인하는 메커니즘이 있습니다. 플랫 파일의 손상이 백업으로 마이그레이션되면 완료되고 아직 알지 못할 수도 있습니다.

더 많은 기능이 있습니다. 데이터베이스를 사용하면 많은 사용자가 동시에 읽기/쓰기를 할 수 있습니다.

설정이 완료되면 작업하기가 훨씬 쉽지 않습니다.

32

이 몇 시간 전에 an answer I've already given입니다 :

그것은 도메인 특정 애플리케이션 요구에 전적으로 의존한다. A 많은 시간을 직접 텍스트 파일/이진 파일 액세스는 사용자의 OS 파일 시스템 의 모든 파일 액세스 기능을 제공하는 것뿐만 아니라 매우 빠름, 능률적 일 수 있습니다.

또한, 대부분 프로그래밍 언어 이미있는 모듈 내장 (또는 하나를 쉽게 만들 수 있습니다) 특정 구문 분석.

당신이 필요로하는 것은 많은 경우

이 (인서트?) 순차/몇 액세스 조금/동시성을 추가, 파일을 이동하는 방법입니다. 동시성에 대한 요구 사항, 비 순차적 읽기/쓰기, 자성 원자 권한, 당신의 데이터 등을 본질적으로 관계가있는 한편,

는 당신은 더 나을 것입니다 관계형 데이터베이스 또는 OO 데이터베이스.

은 (300킬로바이트 아래) C/C++로 작성된 준수 ACID , 및 높은 유비쿼터스 (이미 없는 경우에 포함 된 매우 가벼운 이 SQLite3으로 수행 할 수 있습니다 많이가있다 귀하의 프로그래밍 언어 - 예를 들어 파이썬 -, 분명히 하나가 있습니다). 140 테라 바이트만큼 큰 db 파일이나 128 tebibytes (Link to Database Size)의 도 유용 할 수 있습니다 ( ).

귀하의 요구 사항이 더 크면 토론이 없어도 은 완전한 RDBMS로 이동하십시오.

"시스템"은 단지 스크립트의 무리라고 말하면서 pgbash을 살펴 봐야합니다.

2

부팅 할 때마다 파일을 메모리에로드하지 않는 한 데이터베이스를 사용하십시오. 그처럼 간단합니다.

여러분의 대학에는 이미 파일에 대한 쿼리를 처리하는 프로그램이 있다고 가정합니다. 그렇지 않으면 데이터베이스를 사용하십시오. 데이터베이스와 플랫 파일 사이

1

차이는 아래와 같다 : 플랫 파일이 덜 유연성을 제공하는 반면

  • 데이터베이스는 더 많은 유연성을 제공한다.

  • 데이터베이스 시스템은 데이터 일관성을 제공하지만 플랫 파일은 데이터 일관성을 제공 할 수 없습니다.

  • 데이터베이스는 플랫 파일보다 안전합니다.
  • 데이터베이스는 DML 및 DDL을 지원하지만 플랫 파일은이를 지원할 수 없습니다.

  • 데이터베이스의 데이터 중복이 적지 만 플랫 파일의 데이터 중복이 많습니다.

관련 문제