2017-12-26 23 views
0

친구/동료/기타에게 내 사진을 보여주기 위해 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"| 
+----------------------------+ 

- 도시 - 국가 " 지점 ")과 사진 (항공기 모델 - 모델 _ 가족 - 제조사"지점 ")에 표시된 항공기를 가리 킵니다.

앞서 언급했듯이 방문자는 이러한 테이블의 모든 열을 기준으로 사진을 필터링 할 수 있어야합니다. 따라서 다양한 필터링 옵션에 대해 데이터베이스 쿼리에 다른 조인이 필요합니다. 예 :

  1. 사용자가 특정 국가에서 찍은 사진을 찾고 있습니다. 해당 이미지 데이터를 반환하는 SELECT 쿼리는 사진, 공항, 도시 및 국가 테이블에 참여해야합니다.
  2. 사용자가 특정 항공기로 사진을 필터링하고 있습니다 모델입니다. SELECT 쿼리는 Photo 및 Model 테이블 만 참여해야합니다.

사용자가 동시에 여러 개의 (또는 더 많은) 애스펙트로 사진을 필터링하는 경우 질문이 더욱 복잡해집니다.

이러한 이유로 복잡한 응용 프로그램 수준의 SQL 쿼리 작성 알고리즘이 필요하며 위의 테이블 구조를 고려해야합니다.

내 질문은 :

  • 가 한 방법 (복잡한 SQL 문자열 건물 알고리즘) 문제에 대한 좋은 방법인가?

  • 아니면 사용자의 필터링 옵션에 관계없이 모든 테이블을 함께 결합해야합니까?

  • 또는이 작업에 더 적합한 더 평평한 (그리고 비정규화된) 모델을 사용하는 MongoDB 같은 NoSQL 솔루션은 좋을까요? 다른 필터링 옵션에 대해 서로 다른 조인을 설정하지 않아도 큰 이점이있는 것 같습니다. 저장된 데이터가 업데이트되거나 삭제 될 가능성은 매우 낮으므로 역 정규화가 심각한 문제는 아닐 수도 있습니다.

미리 도움을 주셔서 감사합니다.

답변

0

나는 그렇게 많이하지만, NoSQL에에 MYSQL을 사용하지 않은 (Mongodb)

이 같은 데이터 구조 뭔가를 얻을 수 있으며 모든 매개 변수를 기반으로 검색 할 수

[ 
    { 
    "_id": 0, 
    "Airport": "Heathrow", 
    "city": "London", 
    "country": "United Kingdom", 
    "Aircraft": "G-CIVL", 
    "model": "747-400", 
    "model_family": "747", 
    "manufacturer": "Boeing", 
    "photo_url": "http://www.dummy-url/dakshdajk8sdjkhs8ds8dh8sd8sdj8s.png" 
    }, 
    { 
    "_id": 1, 
    "Airport": "Heathrow", 
    "city": "London", 
    "country": "United Kingdom", 
    "Aircraft": "G-CIVL", 
    "model": "747-400", 
    "model_family": "747", 
    "manufacturer": "Boeing", 
    "photo_url": "http://www.dummy-url/dakshdajk8sdjkhs8ds8dh8sd8sdj8s.png" 
    } 
]