티스토리 뷰
으아아 db 테이블을 막상 create하려니 정말 타당하게 테이블을 설계한게 맞을까 고민이 되었다ㅜㅜ
게다가 테이블 생성 전에 미리 레시피 하나랑 카카오 아이디 전용 아이디 하나, 기본 아이디 전용 하나 데이터를 미리 insert해보려고 sql문도 작성 중이다.
특히 varchar에 대해 한글 글자수랑 영어 글자수를 알맞게 잘 지정했을지 검토를 하고 있는데,
아참. 한글은 2-3바이트까지 차지할 수 있었지! 학원에서 배웠던 기억이 난다.
VARCHAR(50) 기준
한글
1글자가 3바이트 차지하는 경우: 약 16글자 (50 ÷ 3=16)
1글자가 2바이트 차지하는 경우: 약 25글자 (50 ÷ 2=25)
영어
1글자당 1바이트 차지함.
∴ 50글자
아스키코드
비밀번호를 영어만/숫자만/영어+숫자혼용을 하든 모두 아스키코드 범주에 포함된다.
| VARCHAR | 한글 | 영어 | 아스키 |
| 바이트수 | 2-3바이트 | 1바이트 (대소문자 모두) | 1바이트 |
| pwd 해당사항 | - | - | 영어만 숫자만 영어+숫자 ex) abCabc ex) 1230123 ex) a1b2C3 --- ex) 비밀번호가 `passWord123`라면 아스키코드로 표현되고 총 11바이트를 차지한다. |
| 참고사항 | - | - | db 테이블 문자셋이 ASCII or UTF-8인지 확인해야 함. UTF-8의 경우 ASCII문자는 그대로 저장할 수 있지만, 다른 문자들은 더 많은 공간을 차지하게 된다. |
비밀번호는 몇 글자가 좋을까요? NIST의 비밀번호 가이드라인
NIST라는 미국국립표준기술연구소에서 권장하는 비밀번호 지침이 있다고 한다.
- 패스워드 길이는 최소 8자 이상 ~ 최대 64자까지 암호를 허용할 것(비밀번호 최대 길이는 제한하지 않아야 한다.)
- 비밀번호 복잡성 요구 사항 완화하기(대소문자,숫자,특수문자 조합을 강제하지 않도록 권장한다.)
- 비밀번호 재사용 방지
- MFA(모바일 인증번호, 생체인증 등을 활용한 2차 인증)와 비밀번호 관리자 기능을 사용할 것
그래서 비밀번호는 VARCHAR가 좋을까 TEXT가 좋을까
✅ varchar
최대 n바이트까지의 문자열을 저장할 수 있고, n이 설정된 경우 그 길이를 초과하면 오류가 발생된다.
n의 값을 더 크게 설정하고 싶으면 text 타입으로 바꾸어야 한다.
문자열의 길이를 자동으로 관리하기 때문에, db의 메모리와 CPU 성능을 더 효율적으로 사용할 수 있다.
인덱스 설정이 더 용이하고 빨라서, 검색 및 데이터 조작 시 향상된 성능을 기대할 수 있다.
text
길이에 제한이 없지만, 일부 db에서는 text필드를 인덱싱하는 것이 varchar에 비해 덜 효율적일 수 있다.
주로 긴 문서나 설명 등을 저장할 때 사용되고, 비밀번호와 같이 상대적으로 짧은 문자열을 저장할 때는 과할 수 있다.
상대적으로 더 많은 메모리를 소비하고, 특정 db에서는 인덱스 제한이 있어서 검색 성능이 떨어질 수 있다.
인덱스
특정 열(column)에 대한 검색을 더 빠르게 수행할 수 있도록 도와주는 데이터 구조.
인덱스 성능: db에서 데이터 검색 속도를 높이기 위해 사용되는 인덱스의 효율성과 효과를 나타내는 개념.
- 검색 속도 향상
- 정렬 및 그룹화 성능 향상
- 중복 데이터 방지
- 효율적인 JOIN 작업
결론
음 처음에는 NIST의 가이드라인을 보고 text타입으로 바꿔야 하나 고민했지만, 굳이 그럴 필요는 없을 것 같고 varchar의 공간을 좀 더 늘리면 좋을 것 같다.
https://www.chosun.com/economy/tech_it/2024/10/04/2X2PQAT545FKTCCRJVEFP7FU5U/
'리액트로 웹 개발 A to Z' 카테고리의 다른 글
| 레시피 등록 이미지를 어느 경로에 저장하면 좋을까? public (0) | 2024.10.30 |
|---|---|
| cmd에서 mysql 표 편하게 보기 (0) | 2024.10.29 |
| date와 datetime. birthday 정보 저장하기 (0) | 2024.10.29 |
| 데이터베이스 명명 규칙? (0) | 2024.10.24 |
| 협업할 때 데이터를 어떻게 저장하는 게 좋은 방법일까 (0) | 2024.10.23 |