친구/동료/기타에게 내 사진을 보여주기 위해 Node.js를 사용하여 개인 웹 기반 비행기 사진 갤러리를 개발 중입니다. 서버는 수 백 또는 1-2,000 개의 이러한 사진을 최대 (정적 파일)로 호스팅하며 동반 데이터는 데이터베이스에 저장됩니다.Node.js 이미지 갤러리 용 데이터베이스 솔루션
웹 사이트는 트래픽을 너무 많이 생성해서는 안됩니다 (한 번에 1-2 개의 액세스 만). 주요 특징은 항공기 제조업체, 항공기 유형, 항공기 등록, 항공기, 사진 촬영지 공항, 사진 날짜 및 기타 여러 측면에 따라 사진을 필터링하고 주문할 수있는 복잡한 검색 엔진입니다.
나는 이러한 목표를 제공하기 위해 관계형 모델을 개발는, MySQL 데이터베이스에 구현 될 : 모든 사진 항목이 (공항에서 촬영 된 위치에 대한 정보가 포함됩니다
+-------+
| Photo |
+-------+
N | | N
+----------------+ +--------------+
1 | | 1
+------------------------+ +--------------------------+
|Aircraft | e.g. "G-CIVL"| | Airport | e.g. "Heathrow"|
+------------------------+ +--------------------------+
N | | N
1 | | 1
+-----------------------+ +-----------------------+
| Model | e.g. "747-400"| | City | e.g. "London" |
+-----------------------+ +-----------------------+
N | | N
1 | | 1
+-------------------------+ +--------------------------------+
|Model_family | e.g. "747"| | Country | e.g. "United Kingdom"|
+-------------------------+ +--------------------------------+
N |
1 |
+----------------------------+
|Manufacturer | e.g. "Boeing"|
+----------------------------+
- 도시 - 국가 " 지점 ")과 사진 (항공기 모델 - 모델 _ 가족 - 제조사"지점 ")에 표시된 항공기를 가리 킵니다.
앞서 언급했듯이 방문자는 이러한 테이블의 모든 열을 기준으로 사진을 필터링 할 수 있어야합니다. 따라서 다양한 필터링 옵션에 대해 데이터베이스 쿼리에 다른 조인이 필요합니다. 예 :
- 사용자가 특정 국가에서 찍은 사진을 찾고 있습니다. 해당 이미지 데이터를 반환하는 SELECT 쿼리는 사진, 공항, 도시 및 국가 테이블에 참여해야합니다.
- 사용자가 특정 항공기로 사진을 필터링하고 있습니다 모델입니다. SELECT 쿼리는 Photo 및 Model 테이블 만 참여해야합니다.
사용자가 동시에 여러 개의 (또는 더 많은) 애스펙트로 사진을 필터링하는 경우 질문이 더욱 복잡해집니다.
이러한 이유로 복잡한 응용 프로그램 수준의 SQL 쿼리 작성 알고리즘이 필요하며 위의 테이블 구조를 고려해야합니다.
내 질문은 :
가 한 방법 (복잡한 SQL 문자열 건물 알고리즘) 문제에 대한 좋은 방법인가?
아니면 사용자의 필터링 옵션에 관계없이 모든 테이블을 함께 결합해야합니까?
또는이 작업에 더 적합한 더 평평한 (그리고 비정규화된) 모델을 사용하는 MongoDB 같은 NoSQL 솔루션은 좋을까요? 다른 필터링 옵션에 대해 서로 다른 조인을 설정하지 않아도 큰 이점이있는 것 같습니다. 저장된 데이터가 업데이트되거나 삭제 될 가능성은 매우 낮으므로 역 정규화가 심각한 문제는 아닐 수도 있습니다.
미리 도움을 주셔서 감사합니다.