2012-12-08 10 views
0

내가 작업하고있는 프로젝트의 데이터베이스를 디자인하려고합니다. 비디오, 사진, 텍스트, 오디오와 같은 여러 유형의 데이터를 저장해야합니다. 나는 그들을 저장해야하고 PHP를 통해 자주 쿼리해야한다. 이 프로젝트는 소셜 네트워크이며 알림 및 메시지를 통해 사용자를 연결해야합니다. 다음은 질문입니다. NoSQL DB를 사용하여 데이터를 저장하고 통지 시스템 (MongoDB 및 Redis와 유사) 또는 MySQL이 이러한 종류의 시스템을 지원할 수 있습니까? 내 영어는 유감 스럽지만 기술적 인 것들은 나처럼 영어 초보자를 설명하기가 어렵다. 고마워.여러 유형의 데이터를 저장하는 가장 좋은 방법

답변

1

SQL 기술자, 즉 MySQL의 문제는 일반적으로 BLOB 내에 해당 바이너리 텍스트를 놓아야한다는 것이므로 이미 잘못하고있는 시점입니다.

또 다른 고려해야 할 사항은 파일 시스템 액세스가 MongoDB 또는 SQL이든 데이터베이스 액세스보다 항상 빠르다는 것입니다. 그러나 데이터베이스 저장소에는 몇 가지 이점이 있습니다. 결국 사이트에서 약간 인기가 있다면 CDN이 필요하다는 것을 알게 될 것입니다. 이런 종류의 배포 네트워크는 값이 비쌀 수 있습니다. MongoDB와 같이 다른 지역의 데이터 복제본을 스핀 업하고 필요에 따라 바이너리 데이터를 복제 할 수 있습니다 (CDN과 마찬가지로 TTL이라고 할 수 있습니다).

파일 시스템이 대부분의 시간이 아니라는 것을 고려해야 할 영역 중 하나입니다. 소셜 네트워크와 같이로드가 많은 사이트에 대한 올바른 대답입니다. 그러나 심지어 그들이 상태로 자신이, 파일 시스템에서 직접 제공하는 데에 면역성이없는 페이스 북의 (https://blog.facebook.com/blog.php?post=2406207130를,이 게시물을 고려하는 것은 5 세입니다하지만 난 많은이 전면에 변경된 의심) :

우리는 또한이 가능한 적은 디스크 읽기만으로 파일을 제공하도록 조정 된 자체 전문 웹 서버를 개발했습니다. 수 천 개의 하드 드라이브 스핀들이 있더라도 I/O (입력/출력)는 트래픽이 너무 높기 때문에 여전히 우려됩니다. 우리의 오징어 캐시는 부하를 줄이는 데 도움이되지만 오징어는 우리의 목적에 충분히 빠르지 않거나 효율적이지 않으므로 자체 웹 가속기도 쓰고 있습니다. 그들은 매우 큰 인프라가 않고, 가장 가능성이 더 좋아 당신이 데이터베이스 저장소 또는 CDN을 사용할지 여부를 고려해야하지만

.

저는 개인적으로 콘텐츠 배포 네트워크 및 다른 사이트에서 이미지를 제공하는 방법에 대해 조사해야한다고 개인적으로 말합니다. Google 전체에서 정보를 찾을 수 있습니다. 최근까지만해도 Akamai를 CDN으로 사용하고있는 Facebook을 검색 할 수 있습니다.

+0

정말로 exaustive 한 대답에 정말로 감사드립니다! – steo

1

어느 쪽이든 갈 수 있습니다. 그러나 DB에 바이너리 데이터를 저장하는 것이 일반적으로 가장 효율적인 방법은 아닙니다. 파일 시스템에 저장하는 것이 더 좋으며 경로를 DB에 넣는 것이 좋습니다.

관련 문제