Closed f-lab-robert closed 3 months ago
1. 호텔 이름 번역
2. 이미지 저장 방법
3. 숙소 설명의 이모티콘
4. 면적 단위
5. 타임존 관리
timestamp 사용시 서버 타임존 설정에 따라 데이터 조회시 자동으로 변환되므로, 다양한 타임존을 사용해야하는 글로벌 시스템에서는 이로 인해 복잡함이 발생할 수 있기 때문에 datetime을 사용한다.
6. 회원 등급
필드 타입을 enum 타입으로 설정할 경우 데이터의 무결성 보장, enum은 내부적으로 정수 값으로 저장되어 저장공간 절약이라는 이점, 문자열이 아니라 정수로 저장되기 때문에 쿼리 성능 향상을 기대해 볼 수 있다.
단점으로는 등록 삭제, 수정의 번거로움. 그때마다 데이터베이스를 변경해야하는데에 있어 관리의 복잡성이 있을 수 있다.
결론 : grade 컬럼이 자주 변경되지 않고, 회원 등급의 특징을 생각해보면 비교적 그 수가 적고 고정되어 있으며 자주 변경될 여지가 적으므로 충분히 사용될만 하다고 생각해서 enum으로 변경.
7. 리뷰에서 텍스트 중간에 사진이 포함되었을 때 처리 방법
1) 생성된 html을 그대로 DB에 저장 (DB 저장공간 문제)
2) 이미지를 이미지 추가 API에서 추가할 때 서버에 저장하고 즉시 url을 받는 방법
2-1) 백엔드에서는 이미지 url만 관리, 나머지는 프론트엔드에서 위치 크기 조절
2-2) 태그 포함된 글 전체를 텍스트로 저장, 마치 깃허브에서 issue에 글쓸 때 priview 보기전에 Write 탭에서 '![이름](url)'
로 작성하는 것과 같이..
8. 현 DB 모델링에서 admin이 댓글을 남길 수 있는 방법
애플리케이션 단에서 로직을 추가한다.
위 방법은 유연하게 애플리케이션 단에서 관리가 가능하지만, 실수로 인해 데이터가 일관되게 관리 되지 않을 수 있다.
DB 구조를 변경한다면, reply 테이블에 admin_id 외래키 추가
UTF-8mb4
UTF8 mb4 는 무엇이며 그에 준하는 대체제 들은 무엇이 있을까요
타임존 관리
- 가장 핵십은 항상 UTC 로 DB 에 저장하고, 백엔드 혹은 프론트엔드에서 요청을 한 사용자의 위치를 바탕 ( 어떻게 백엔드와 프론트엔드에서 현재 요청한 사용자의 위치를 알 수 있을까요 ) 으로 현지 시간으로 변환해주면 좋지 않을까 생각합니다.
리뷰에서 텍스트 중간에 사진이 포함되었을 때 처리 방법
생성된 html을 그대로 DB에 저장 (DB 저장공간 문제) -> 잘 이해가 되지 않습니다. 더 구체적인 설명이 필요할 것 같습니다.
2-1) 의 옵션을 잘 생각해보시면 프론트엔드에서는 어떻게 위치와 이미지의 크기를 알 수 있을까요. 불가능해보입니다.
2-2) 의 옵션을 구현 가능해보입니다. 다만, 프론트 엔드 관점에서 어떤 부분을 신경써야할지 생각해보면 좋을 것 같습니다.
UTF-16
UTF-32
하지만 UTF-16, 32는 저장 공간이 많이 필요하며, UTF-8 mb4에 비해 저장 공간 효율성이 낮아 UTF-8 mb4를 사용하는 것이 낫다.
백엔드
IP기반 위치확인 API 및 라이브러리를 활용하면 사용자의 IP주소를 기반으로 대략적인 위치를 파악 할 수 있다.
MaxMind GeoIP2
특징: IP 주소를 기반으로 국가, 도시, 위도/경도, ISP 등의 정보 제공 장점: 대규모 데이터베이스, 정기적인 업데이트 사용: 다양한 프로그래밍 언어에서 사용 가능 (Python, PHP, Java 등)
ip-api
특징: 상세한 위치 정보 제공 (국가, 지역, 도시, 우편번호, 위도/경도 등) 장점: 무료 버전 제공, 높은 정확도, HTTPS 지원(무료버전의 경우 미지원) 사용: RESTful API를 통해 다양한 프로그래밍 언어에서 사용 가능
프론트 엔드
자바 스크립트를 사용하여 사용자의 브라우저 타임존을 반환 받아 확인할 수 있다.
HTML 전체를 DB에 저장하는 방법은 리뷰가 아니라 단순하게 게시판의 게시글을 생각해서 생각했던 것이라 기획 의도에 맞지 않기도 하고 실제로 사용하기에도 부적절한 점(컬럼 타입을 'text' 혹은 'longtext'등으로 사용하여 HTML 전체를 저장하는 것은 성능에 영향이 분명히 있을 것)이 있을 것 같아 제외시켰습니다.
test
test