데이터베이스에 저장된 데이터가 매우 일반적인 콘텐츠 관리 응용 프로그램을 작성 중입니다. 이 특별한 경우 컨테이너에는 많은 자원이 있으며 이러한 자원은 사진, 영화, 업로드 된 파일 또는 일반 텍스트와 같은 일종의 디지털 자산에 매핑됩니다.데이터베이스 대신 파일 시스템에서 내 텍스트를 제공 하시겠습니까?
필자는 그림을 저장하는 것 외에도 파일 시스템에 텍스트 에셋을 저장하고 응용 프로그램에서 데이터베이스 (파일 위치)를 검색하도록하고 있기 때문에 일주일 동안 동료와 의견을 나눴습니다.), 클라이언트 응용 프로그램에 제공하기 전에 텍스트 파일 (파일 시스템에서)을 읽으십시오.
상식적으로 나는 우스꽝 스러웠다. 데이터베이스에서 뭔가를 찾으려고해도 텍스트를 데이터베이스 열에 저장하고 행 검색과 함께 제공 할 수도있다. 데이터베이스 조회 + 파일 IO는 제어 할 수 없을 정도로 느린 것처럼 보였습니다. 얼마 동안 앞뒤로 가고 난 후에, 나는 약간의 벤치 마크를 달리기로 결정했고, 결과는 조금 놀랍다 고 알았다. 벤치 마크 시간에는 일관성이 거의없는 것처럼 보입니다. 벤치 마크에서 유일한 확실한 승자는 데이터베이스에서 대량의 데이터 세트를 가져 와서 텍스트 자산을 표시하기 위해 결과를 반복하는 것이었지만 데이터베이스에서 개체를 한 번에 하나씩 가져 와서 텍스트 콘텐츠를 표시하는 것이 목과 목인 것처럼 보였습니다.
이제는 벤치 마크 실행의 한계를 알고 있으며 "테스트"에 대한 올바른 생각조차 모르고 있습니다 (예 : 파일 시스템 쓰기가 데이터베이스 쓰기보다 훨씬 빠릅니다). . 제 질문은 확인을위한 것 같아요. 파일 I/O는 데이터베이스 텍스트 저장/조회와 비교할 수 있습니까? 여기서 논쟁의 일부를 놓치고 있습니까? 미리 의견/조언을 주셔서 감사합니다!
내가 사용하고있는 일에 대해 빠른 작업 : 이 루비 1.8.6 및 sqlite3를을 사용하여 루비 레일에 응용 프로그램, 입니다. 내일 같은 코드베이스를 MySQL 으로 옮길 계획이며 벤치 마크가 인지 확인하십시오.
나는 천국을 사용할 수 없었다 그러한 테스트를 직접 해보지는 않았지만, 파일 시스템이 많은 파일과 어떻게 섞여 있는지 궁금합니다. 궁극적으로 파일 시스템은 일종의 데이터베이스이기도합니다. "실제"데이터베이스에 대해 내가 좋아하는 것은 거래 처리/원자 삽입입니다. 필자는 파일 시스템을 사용하여 파일이 손상된 상태로 남겨지는 작업의 중간에 쓰기가 중단 될 수 있다는 두려움과 편집증에 빠져 있습니다. 파일 시스템에 큰 "멍청한"파일 (이미지와 같은)을 넣고 파일 이름을 db에 저장하는 것이 일반적인 방법이라고 생각합니다. 웹 서버가 직접 서비스를 제공하도록하십시오. –