웹 응용프로그램용 파일 저장소:파일 시스템 대 DB 대 NoSQL 엔진
사용자가 생성한 파일을 많이 저장하는 웹 애플리케이션이 있습니다.현재 이것들은 모두 서버 파일 시스템에 저장되어 있는데, 저에게는 몇 가지 단점이 있습니다.
- 애플리케이션에서 정의한 대로 "폴더"를 이동하면 디스크에 있는 파일도 이동해야 합니다(파일 시스템에 저장해야 하는 요구 사항보다 원래 개발자 측의 이상한 설계 결정으로 인한 것임).
- 파일 시스템 작업에 대한 테스트를 작성하는 것은 어렵습니다. 저는 이동, 삭제 등의 작업을 수행하지 않고 기록하는 모의 파일 시스템 클래스가 있는데, 이 클래스는 작업을 거의 수행하지 않지만 테스트에 대한 100% 신뢰도는 없습니다.
- 다른 서비스의 파일에 액세스하여 추가 작업(예: Solr의 인덱싱, 썸네일 생성, 영화 형식 변환)을 수행해야 하는 다른 작업을 추가할 예정이므로 파일을 원격으로 가져와야 합니다.네트워크 공유를 통해 이런 일을 하는 것은 의심스러운 일입니다.
- 파일 시스템에 대한 권한은 과거에도 종종 문제가 있었지만 이제는 순수 Linux 환경으로 전환했기 때문에 문제가 덜 될 것입니다.
그래서 저의 주된 질문은
- MySQL에 파일을 BLOB로 저장하는 단점은 무엇입니까?
- 카산드라와 같은 NoSQL 시스템에도 동일한 문제가 있습니까?
- 모길레와 같이 적절할 만한 다른 제안이 있는 사람이 있습니까?FS등?
직접적인 답은 아니지만 매우 흥미롭고 어떻게든 유사한 질문에 대한 몇 가지 지침입니다(네, 그것들은 블롭과 이미지에 관한 것이지만 이것은 IMO와 비교할 수 있습니다).
MySQL에 파일을 BLOB로 저장하는 단점은 무엇입니까?
- DB에 이미지 저장 - 예 또는 아니오?
- 데이터베이스 대 파일 시스템의 이미지
- https://stackoverflow.com/search?q=images+database+filesystem
카산드라와 같은 NoSQL 시스템에도 동일한 문제가 있습니까?
추신: 저는 킬조이가 되고 싶지 않지만 NoSQL 솔루션이 여러분의 문제를 해결해 줄 것이라고는 생각하지 않습니다(NoSQL은 대부분의 기업과 무관합니다).
하이브리드 솔루션일 수도 있습니다.
데이터베이스를 사용하여 각 파일에 대한 메타데이터를 저장하고 파일 시스템을 사용하여 실제로 파일을 저장합니다.
'폴더'의 재구성은 DB에서 모델링할 수 있고 실제 OS 위치에서 참조할 수 있습니다.
1MB 정도의 열로 나누면 최대 2GB의 파일을 카산드라에 쉽게 저장할 수 있습니다.이것은 꽤 흔한 일입니다.
하나의 큰 열로 저장할 수도 있지만 액세스할 때 전체를 메모리로 읽어야 합니다.
OS나 애플리케이션에서 파일에 액세스할 필요가 없다면 파일 시스템에 파일을 저장할 필요가 없습니다.데이터베이스 백업과 동시에 파일을 백업하려면 데이터베이스 외부에 파일을 저장하는 것이 더 적은 이점이 있습니다.따라서 데이터베이스에 파일을 저장하는 것이 유효한 해결책일 수 있습니다.
추가적인 단점은 DB에서 파일을 처리하는 것이 파일 시스템 수준에서 파일을 처리하는 것보다 오버헤드가 크다는 것입니다.하지만, 장점이 단점보다 더 크고, 당신의 경우에도 그럴 수 있을 것으로 보이는 한, 당신은 그것을 시도해 볼 수도 있습니다.
제 주된 관심사는 디스크 스토리지 관리입니다.데이터베이스 파일이 커질수록 전체 데이터베이스 관리가 더욱 복잡해집니다.여러분은 프라이팬에서 불 속으로 이동하고 싶지 않을 것입니다.
언급URL : https://stackoverflow.com/questions/2890452/file-storage-for-web-applications-filesystem-vs-db-vs-nosql-engines
'code' 카테고리의 다른 글
함수의 VLA 배열 매개 변수에 정수 대신 별표([*])를 사용하는 이유는 무엇입니까? (0) | 2023.09.15 |
---|---|
mysql WHERE 절에서 "IN"의 값을 동적으로 추가하는 방법은? (0) | 2023.09.15 |
WooCommerce 단일 제품 페이지에 여러 탭 추가 (0) | 2023.09.15 |
pyspark에서 데이터의 각 행을 루프하는 방법프레임 (0) | 2023.09.15 |
Android SDK Manager가 구성 요소를 설치하지 않음 (0) | 2023.09.15 |