2014-04-20 2 views
0

저는 MySQL을 사용 중이며 일부 이미지를 저장하려고합니다. 나는 이미지를 'BLOB'로 직접 저장하는 대신에 디렉토리에 이미지를 저장하고 데이터베이스에 경로를 저장하는 포럼을 읽었습니다. 하지만 사용자가 디렉토리에서 이미지를 삭제하면 (또는 다른 방법으로 이미지가 삭제됨) 어떻게 될까요? 그 상황을 처리 할 방법이 있습니까? 왜 DB에 이미지를 직접 저장하지 않는가?mysql 데이터베이스에 이미지 또는 경로를 저장 하시겠습니까?

EDIT : 데이터베이스는 웹 사이트 개발과 관련이 없습니다. 나는 사용자가 카메라를 사용하여 일부 이미지를 찍을 소프트웨어를 개발 중이다. 그리고 그 이미지를 가지고 놀고 난 후에, 다른 매개 변수 (이미지를 저장하기위한 하나의 열)를 가진 데이터베이스에 그 이미지에 대한 레코드를 저장하려고한다. 소프트웨어와 데이터베이스는 사용자 PC에서 실행됩니다. 그리고 나는 모든 레코드에 대한 최종 보고서를 생성 할 것입니다.

+0

최대 1000 번 중 999 번까지는 경로가 저장됩니다. 이 주제는 논의 된 w-i-d-e-l-y와 열정적 인 의견의 대상입니다. – Strawberry

+0

'하지만 사용자가 디렉토리에서 이미지를 삭제할 경우 (또는 다른 방법으로 이미지가 삭제됨) .' 영원히 표시하려면 이미지를 사용자의 서버에 저장해야합니다. –

답변

1

글쎄, mysql에 이미지를 저장하면 데이터베이스의 크기와로드가 증가 할 수있다. 당신의 위치가 높은 양, 소통량 위치가있는 경우에, 이것은 좋은 생각이 아니다. 대신, 나는 보통 & 폴더의 이미지 파일을 데이터베이스에 저장하는 것을 선호한다. 가장 중요한 것은 파일을 덮어 쓰지 않도록 고유 한 이름 (예 : img1_2014_04_20_16_30_25.JPG)을 설정하는 것입니다. 위에서 언급 한 이름에서 쉽게 시간 기능을 사용하여 고유하게 만들 수 있습니다. 그럼 내가 아는 한 mysql과 같은 오류를 처리하는 직접적인 방법은 없습니다, 당신이 프론트 엔드와 함께 할 수있는 모든 이미지가 존재하는지 확인하거나 디스플레이로 기본 이미지를 넣어.

+0

Sidhart 안녕하세요, 감사합니다. 나는 방금 내 게시물을 가볍게 업데이트했다. – ashok

+0

캠에서 이미지를 언급 ​​한 이래로 (1Mb에서부터 몇 Mb까지 다양 할 수 있음) 개인적으로 데이터베이스에 저장하는 것이 좋습니다. 오히려 사용자 컴퓨터의 특정 위치에 고유 한 이름이 지정된 이미지로 저장하고 파일 이름을 db에 저장하는 것을 선호합니다. 필자는 실제로 Excel의 데이터를 가져 오는 동안 응용 프로그램의 성능을 향상시킬 수 있다고 생각합니다. –

+0

안녕하세요, 이제 데이터베이스의 디렉토리 및 경로에 이미지를 저장하려고하지만 문제가 남아 있습니다. 이미지가 디렉토리에서 삭제되거나 이름이 변경되면 (우리는 항상 사용자가 평신도라고 가정해야합니다.) 소프트웨어 외부에서 – ashok

0

절대 이미지가 삭제되지 않을 것입니다. 물론 여분의 보안을 위해 특정 사용자에게만 디렉토리와 파일에 대한 권한을 부여 할 수 있습니다. blob을 저장하는 단점 - MySQL이 상당히 큰 데이터베이스를 처리 할 수있는만큼 이미지는 데이터베이스에 엄청난 양의 크기를 추가 할 수 있으며 실제로 커지면 관리, 유지 및 최적화하는 것이 훨씬 더 어려워집니다. 엔진을 교체하기로 결정하면 마이그레이션이 정말 어려울 것이며, noSQL 솔루션 (couchdb, mongo 등)을 사용하기로 결정하면 훨씬 더 고통 스러울 것입니다. 아마도 모든 레코드를 반복하고 파일이 존재하는지 확인하기 위해 cron을 설정할 수 있습니다. 그렇지 않으면 테이블에서 레코드를 삭제하십시오. 그렇다면 다시 당신이 정확히 무엇을하려고하는지 확신하지 못합니다. 사용자가 이미지를 삭제할 수있는 옵션이있는 경우 일부 인터페이스를 통해 문제가 발생한다고 가정합니다.

1) 파일이

2

를 삭제됩니다 레코드는 데이터베이스에서 삭제됩니다) : 있도록 논리를 구현해야합니다.

+0

안녕하세요, 유용한 설명 주셔서 감사합니다.사용자가 이미지를 삭제할 수있는 옵션은 없지만 소프트웨어와 db가 자신의 PC에서 실행되기 때문에 소프트웨어 외부의 디렉토리에서 이미지를 삭제하거나 이동할 수있는 가능성이 항상 있습니다. 그래서 저는 그 상황을 다루기를 원했습니다. 파일이 없으면 레코드를 삭제할 수있는 옵션이 좋지만 디렉토리가 이동되거나 소프트웨어 외부에서 이름이 변경되면 데이터가 손실 될 수 있습니다. 그리고 예 설정 권한은 하나의 옵션입니다. – ashok

관련 문제