데이터베이스 대 플랫 파일
제가 일하는 회사는 플랫 파일 형식을 사용하는 제품을 데이터베이스 형식으로 전환하려고합니다. 우리는 매우 큰 데이터 파일 (예 : 25GB / 파일)을 처리하고 있으며 매우 빠르게 업데이트됩니다. 데이터에 무작위로 액세스하는 쿼리를 연속적으로 실행해야합니다. 나는 그들에게 데이터베이스 사용의 장점을 설득하려고 노력하고 있지만 일부 동료들은 이것을 꺼리는 것 같습니다. 그래서 저는 여러분들이 데이터베이스를 사용해야하는 이유나 게시물에 대한 링크를 통해 저를 도와 줄 수 있는지, 아니면 적어도 플랫 파일이 더 나은지 (만약 있다면) 이유를 명확히 할 수 있는지 궁금합니다.
- 데이터베이스는 쿼리 작업을 처리 할 수 있으므로 파일을 수동으로 살펴볼 필요가 없습니다. 데이터베이스는 매우 복잡한 쿼리를 처리 할 수 있습니다.
- 데이터베이스는 인덱싱 작업을 처리 할 수 있으므로 ID = x로 레코드 가져 오기와 같은 작업이 매우 빠를 수 있습니다.
- 데이터베이스는 다중 프로세스 / 다중 스레드 액세스를 처리 할 수 있습니다.
- 데이터베이스는 네트워크에서 액세스를 처리 할 수 있습니다.
- 데이터베이스는 데이터 무결성을 감시 할 수 있습니다.
- 데이터베이스는 데이터를 쉽게 업데이트 할 수 있습니다 (1 참조))
- 신뢰할 수있는 데이터베이스
- 데이터베이스는 트랜잭션 및 동시 액세스를 처리 할 수 있습니다.
- 데이터베이스 + ORM을 사용하면 프로그래머 친화적 인 방식으로 데이터를 조작 할 수 있습니다.
전적으로 도메인 별 응용 프로그램 요구에 따라 다릅니다. 많은 경우 직접 텍스트 파일 / 이진 파일 액세스는 매우 빠르고 효율적일뿐만 아니라 OS 파일 시스템의 모든 파일 액세스 기능을 제공 할 수 있습니다.
또한 프로그래밍 언어에는 특정 구문 분석을위한 기본 제공 모듈이 이미 있거나 쉽게 만들 수 있습니다.
필요한 것이 많은 추가 (INSERTS?)이고 순차 / 적은 액세스가 거의 / 동시성이없는 경우 파일을 사용하는 것이 좋습니다.
반면에 동시성, 비 순차적 읽기 / 쓰기, 원 자성, 원 자성 권한에 대한 요구 사항, 데이터 특성상 관계형 등의 경우 관계형 또는 OO 데이터베이스를 사용하는 것이 좋습니다.
매우 가볍고 (300kb 미만) ACID를 준수하고 C / C ++로 작성되고 매우 유비쿼터스 인 SQLite3 으로 수행 할 수있는 작업이 많이 있습니다 (예 : Python-과 같이 프로그래밍 언어에 아직 포함되지 않은 경우). 확실히 사용할 수 있습니다). 140 테라 바이트 또는 128 테비 바이트 ( Link to Database Size ) 만큼 큰 db 파일에서도 유용 할 수 있습니다 .
더 큰 요구 사항이 논의되지 않을 경우 본격적인 RDBMS로 이동하십시오.
"시스템"은 단순히 스크립트의 무리라는 주석에서 말했듯이 pgbash를 살펴 보아야 합니다.
살 수 있다면 만들지 마십시오.
최근에이 인용구를 들었는데, 정말 가이드 라인으로 적합 해 보입니다. 스스로에게 물어보십시오. 앱의 파일 처리 부분을 작업하는 데 얼마나 많은 시간이 소요 되었습니까? 성능을 위해이 코드를 최적화하는 데 상당한 시간이 소요되었다고 생각합니다. 관계형 데이터베이스를 계속 사용했다면 응용 프로그램의이 부분을 처리하는 데 훨씬 적은 시간을 소비했을 것입니다. 앱의 진정한 "비즈니스"측면에 더 많은 시간을 할애했을 것입니다.
더 빠릅니다. 전체 플랫 파일을 메모리에로드하지 않는 한 데이터베이스는 거의 모든 경우에 더 빠른 액세스를 허용합니다.
더 안전합니다. 데이터베이스는 안전하게 백업하기가 더 쉽습니다. 플랫 파일에는없는 파일 손상을 확인하는 메커니즘이 있습니다. 플랫 파일의 손상이 백업으로 마이그레이션되면 완료된 것이며 아직 알지 못할 수도 있습니다.
더 많은 기능이 있습니다. 데이터베이스는 많은 사용자가 동시에 읽기 / 쓰기를 허용 할 수 있습니다.
일단 설정되면 작업하기가 훨씬 덜 복잡합니다.
모든 방법으로 데이터베이스 .
그러나 여전히 파일을 저장해야하는 경우 XML을 살펴 보는 것보다 새로운 RDBMS (예 : Oracle, SQLServer 등)를 사용할 수있는 능력이 없습니다.
XML은 파일로 저장할 수있는 기능을 제공하는 구조 파일 형식이지만 파일 및 데이터에 대한 쿼리 기능을 제공합니다. XML 파일은 플랫 파일보다 읽기 쉬우 며 XSLT를 적용하여 쉽게 변환 할 수있어 사람이 더 쉽게 읽을 수 있습니다. XML은 필요한 경우 데이터를 전송할 수있는 좋은 방법이기도합니다.
DB를 강력히 제안하지만 그 길을 갈 수 없다면 XML은 괜찮습니다.
Amazon의 SimpleDB, Tokio Cabinet 등과 같은 비 관계형 (NoSQL) 데이터베이스는 어떻습니까? 구글, 페이스 북, 링크드 인이 거대한 데이터 세트를 저장하는 데 사용한다고 들었습니다.
데이터가 구조화되었는지, 스키마가 고정되었는지, 간편한 복제가 필요한지, 액세스 시간이 중요한지 등을 알려주시겠습니까?
SQL 임시 쿼리 기능은 저에게 충분한 이유입니다. 좋은 스키마와 테이블에 대한 인덱싱을 사용하면 빠르고 효과적이며 좋은 성능을 얻을 수 있습니다.
부팅 할 때마다 파일을 메모리로로드하지 않는 한 데이터베이스를 사용하십시오. 그렇게 간단합니다.
이는 귀하의 대학에 파일에 대한 쿼리를 처리하는 프로그램이 이미 있다고 가정합니다. 그렇지 않은 경우 데이터베이스를 사용하십시오.
언급되지 않은 파일 유형. 미디어 파일 인 경우 플랫 파일을 사용하십시오. 태그 용 DB와 "외부 BLOB"를 DB의 레코드에 연결하는 방법이 필요할 수 있습니다. 그러나 전체 텍스트 검색이 필요한 경우 전체 DB로 마이그레이션하는 것 외에는 다른 방법이 없습니다.
또 다른 사실은 파일 시스템이 실제 파일 수에 관한 한도를 제공 할 수 있다는 것입니다.
데이터베이스와 플랫 파일의 차이점은 다음과 같습니다.
데이터베이스는 더 많은 유연성을 제공하는 반면 플랫 파일은 더 적은 유연성을 제공합니다.
데이터베이스 시스템은 데이터 일관성을 제공하는 반면 플랫 파일은 데이터 일관성을 제공 할 수 없습니다.
- 데이터베이스는 플랫 파일보다 더 안전합니다.
데이터베이스는 DML 및 DDL을 지원하지만 플랫 파일은이를 지원할 수 없습니다.
데이터베이스의 데이터 중복성이 적고 플랫 파일의 데이터 중복성이 더 높습니다.
참고 URL : https://stackoverflow.com/questions/2356851/database-vs-flat-files
'Development Tip' 카테고리의 다른 글
TypeScript에 'this'에 대한 별칭이 있습니까? (0) | 2020.10.23 |
---|---|
연결 문자열이 유효한지 확인하는 방법은 무엇입니까? (0) | 2020.10.23 |
다른 어셈블리의 클래스 이름에서 유형 확인 (0) | 2020.10.23 |
EJB 3.1 @LocalBean 대 주석 없음 (0) | 2020.10.23 |
babel CLI 복사 nonjs 파일 (0) | 2020.10.23 |