<오늘 한 일/>
- 알고리즘 문제 풀이
- https://guco.tistory.com/321
- 차근차근 잘 풀긴 했는데 다른 사람 풀이가 너무 멋져서 말이 안 나온다
- 어떻게 저런 생각을...!
- Django 50문 50답
- Django에서 제공하는 sqlite는 어떤 장단점이 있습니까?
- 장점
- 서버 설치 필요 없음: SQLite는 서버가 없는 데이터베이스로, 별도의 설치나 설정 과정이 필요하지 않습니다. 이로 인해 개발 환경이나 간단한 웹 애플리케이션을 사용할 때 사용하기에 쉽습니다.
- 파일 기반 데이터베이스: SQLite는 단일 파일로 데이터를 저장하며, 이를 통해 데이터베이스의 백업, 전송 및 관리가 간편해집니다.
- 경량화: SQLite의 메모리 사용량이 낮고, 라이브러리 용량 자체도 작기 때문에 가볍게 사용할 수 있습니다.
- 이식성: SQLite가 독립적으로 실행되어 다양한 운영체제에서 사용할 수 있습니다. 또한 SQLite는 기본적으로 임베디드 시스템에서도 실행될 수 있습니다.
- 트랜잭션 지원: SQLite는 트랜잭션(Atomic Commit, Rollback)을 지원하며, 데이터의 일관성을 유지할 수 있습니다.
- 단점
- 동시성 제한: 하나의 쓰기 락(write lock)이 있어 동시적인 쓰기 작업이 제한됩니다. 대량의 동시 쓰기 환경을 위한 데이터베이스에는 적합하지 않습니다.
- 데이터베이스 크기: 파일 기반 데이터베이스인 SQLite는 개별 파일 크기에 제한이 있습니다. 대규모 데이터베이스를 관리하는데 상대적으로 부적절할 수 있습니다.
- 덜 발달한 기능: 대형 관계형 데이터베이스 시스템에 비해, SQLite는 제공되는 기능이 상대적으로 덜 발달하여 고급 기능에 대한 제약이 있습니다. (예: 외래키 제약조건 자동 지원이 무효로 설정)
- 장점
- AWS를 통해 배포할 경우, sqlite를 사용하지 않는 이유는 무엇입니까?
- 동시성 제한: SQLite는 동시 쓰기 작업에 제한이 있습니다. 웹 애플리케이션에서 많은 사용자가 동시에 데이터를 추가하거나 수정하는 경우, 지속적인 성능 저하를 겪을 수 있습니다.
- 확장성 제한: SQLite는 대규모 트래픽과 데이터 볼륨을 다루기 위한 수평적 확장성이 제한되어있습니다. 클라우드 환경에서는 확장성이 중요한 요소 중 하나이므로, 대규모 웹 애플리케이션에는 더 적합한 RDBMS(예: PostgreSQL, MySQL)를 사용하는 것이 좋습니다.
- 데이터베이스 관리 및 백업: SQLite는 단일 파일을 사용하여 데이터를 저장하기 때문에, 데이터베이스 관리와 백업 작업에 제한이 있습니다. AWS 또는 다른 클라우드 환경에서는 PostgreSQL, MySQL, Amazon RDS와 같은 시스템을 사용하면 데이터베이스 관리 및 백업 작업을 자동화할 수 있어 운영 부담을 줄일 수 있습니다.
- 고급 기능: SQLite는 간단한 웹 애플리케이션에 적합하나, 복잡한 프로젝트에서는 PostgreSQL, MySQL 등의 RDBMS가 제공하는 고급 기능(예: 외래키 제약조건, 저장 프로시저)과 성능을 활용하고자 하는 경우가 있습니다.
- 클라우드 지원 서비스 활용: 클라우드 공급자가 제공하는 데이터베이스 관리 서비스(예: Amazon RDS, Google Cloud SQL) 사용하면 데이터베이스 구성, 관리, 백업, 복원 등의 작업을 편리하게 처리할 수 있고, 이러한 서비스는 PostgreSQL, MySQL 등의 RDBMS에 더 최적화되어 있습니다.
- Django settings에서 DB 스택을 변경하는 방법은 무엇입니까?
- settings.py 파일 내에 DATABASES 설정을 수정하면 됩니다.
- 기본적으로 sqlite로 설정되어 있으나, Postgresql, MySQL, MariaDB 등 다른 데이터베이스로 바꾸려면 해당 DB를 프로젝트와 연결시킬 수 있는 라이브러리를 설치하고, DB 설정 부분에 ENGINE, NAME, USER,PASSWORD, HOST, PORT를 각 DB에 맞는 값을 추가한 후 [python manage.py migrate] 명령어를 실행하면 됩니다.
- Django 프로젝트를 배포할 때, 노출되어서는 안되는 값은 어떤 것이 있습니까?
- SECRET_KEY, API 키 또는 클라이언트 시크릿 키 등 각종 키를 비롯하여, JWT 사용 시 SIGNING_KEY도 노출되면 안 됩니다.
- 데이터베이스 설정 정보(DB명, USER명, 암호, 호스트, 포트 번호)
<느낀 점/>
- 알고리즘 문제 풀이에 점점 더 흥미가 생기는 것 같다
- 전에는 어떻게 푸는지 잘 모르니까 머리만 아팠는데 지금은 문제를 보면 이렇게 풀어야겠다 하는 게 떠올라서 그런 듯
- 문제마다 접근법이 있는데 문제를 보자마자 이렇게 푸는 게 정답이군! 이 정도는 아니라서 약간의 스트레스는 있다
- 자료구조/알고리즘 공부를 더 많이 해야 할 듯!
<내일 목표/>
- 기술 과제 및 면접 준비