본문 바로가기

나는 이렇게 학습한다/DB20

RDB와 NoSQL를 차이 RDB란? 관계형 데이터베이스는 엄격하게 정의된 스키마를 요구하는 테이블 기반 데이터 구조입니다. 엄격한 스키마로 데이터 중복이 없고, 데이터를 유지보수하는데 효율적입니다. 다만, 시스템이 커지면 join문이 복잡해지고 성능 향상을 하려면 스케일 업만 가능하여 비용이 크게 발생합니다. *스키마(schema)는 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조입니다. -위키- 그렇다면 NoSQL은 무엇일까요? NoSQL은 테이블 구조가 아닌 비정형 데이터를 저장할 수 있습니다. 유연하고 자유로운 데이터 구조이나 데이터 수정시 모든 컬렉션에서 수정이 필요하기 때문에 update가 적고 조회가 많은 경우에 유리합니다. 이 둘은 언제 사용하는게 좋을까요? RDB 데이터.. 2022. 3. 18.
관계형 데이터베이스의 key 종류 Table (=Relation) 하나의 셀에는 단일 값을 갖습니다. 각 row는 동일하지 않습니다. *column (=어트리뷰트) *row (=튜플, 레코드) col 1 col 2 row 1 row 2 기본키 (Primary key) 후보키 중에 선택한 유일성, 최소성을 만족하는 키입니다. Null값과 중복 값을 가질 수 없습니다. 슈퍼키 (Super key) 슈퍼키는 각 row를 식별할 수 있는 하나 혹은 그 이상 컬럼들의 집합입니다. (=유일성) 예시 :: (이름, 학번), (학번), (주민번호, 이름, 학번) 후보키 (Candidate key) 각 row를 유일하게 식별하여 Primary key로 사용할 수 있는 컬럼들을 말합니다. (=최소성) 예시 :: (학번), (주민번호) 대체키 (Altern.. 2022. 3. 17.
물리삭제와 논리삭제를 코드로 구현해 보았다. 삭제에는 두 가지 방법이 있다. 물리삭제는 실제 데이터베이스에서 제거하는 것이고, 논리삭제는 같은 테이블에 '삭제플레그'의 값을 변경하여 실제 삭제된 것과 동일하게 처리하는 방식이다.(이 외에도 논리삭제의 방법은 다양하다) 코드로 구현해 본다면? 깃헙 링크 (깃헙 링크에 들어가면 코드를 모두 볼 수 있다.) @app.route("/snack/", methods=["DELETE", "PUT"]) def delete(id): if request.method == "DELETE": SnackDelete.delete_physics(id) elif request.method == "PUT": SnackDelete.delete_logical(id) result_value = SnackDelete.select_all.. 2022. 2. 3.
생활코딩 #MySQL 클라이언트 Workbench, 수업을 마치며 오늘 배운 것 명령어 기반(MySQL Moniter) GUI 기반(MySQL Workbench) 보통 명령어 기반 서버를 사용한다. 그 이유는 GUI에 들어가는 리소스를 아끼기 위해서이다. 서로 장단점이 있다. 맥락에 따라 사용할 것. MySQL Workbench 설치링크 : https://dev.mysql.com/downloads/workbench/ 서버가 있고 클라이언트가 별도로 있다. 서버를 중심으로 정말 많은 클라이언트가 있다. 서버를 사용하는 모든 앱, 웹, 데이터 분석 시스템들은 본질적으로 모두가 '클라이언트' 이다. 이 세상에는 어마어마하게 많은 MySQL 클라이언트가 있다. 자신에게 잘 맞는 클라이언트를 만나자! 수업을 마치며 다음 공부거리 SQL(관계형DB) > CRUD > READ > .. 2021. 8. 18.
생활코딩 #테이블 분리하기, JOIN 오늘 배운 것 테이블 분리하기 앞선 글에 적은 것처럼 테이블 분리는 데이터를 좀 더 효율적으로 관리하기 위함. 아래는 실습 코드 MariaDB [(none)]> use daco; Database changed MariaDB [daco]> SHOW TABLES; +----------------+ | Tables_in_daco | +----------------+ | topic | +----------------+ 1 row in set (0.008 sec) MariaDB [daco]> RENAME TABLE topic TO topic_backup; Query OK, 0 rows affected (0.041 sec) # 테이블 이름 변경 방법 -> 리네임 테이블 (이름) 투 (새이름); MariaDB [da.. 2021. 8. 14.
생활코딩 #관계형 데이터베이스의 중요성 오늘 배운 것 기술을 배우면 본질과 혁신이 무엇인지 나눠서 파악해보자 본질 : 데이터베이스 = CRUD = 본질은 공통점이다 혁신 : 관계형 = 다른 혁신들과 차이점은? 관계형 데이터베이스의 필요성 데이터가 중복된다면 무언가 개선할 것 이 있다는 증거다 1억개의 데이터 중에 1천만개가 중복된다면? -> 용량이 큰 데이터가 중복된다면 경제적 손해 -> 수정이 필요하다면 많은 리소스가 필요 -> 데이터 추출이 명확하지 않을 수 있음 (ex. 동명이인) 등등 오늘 느낀 것 본질 CRUD를 잊지 말 것. 이제 본격적으로 기술을 배우기 시작한다. 테이블 분리, 조인, 이것들은 결국 데이터를 효율적이고 혁신적으로 관리하기 위함일 터, 이것은 저비용 고효율을 의미하겠지. 머리를 어떻게 굴리냐에 따라 데이터관리는 천지.. 2021. 8. 14.