컷오프, 컷오버 같이 단순한 cut 동사에 전치사가 붙는 형태의 동사를 '구동사' 라고 하는데 

원형에서 파생된 의미로 사용되기 때문에 그 이미지를 알지 못하면 의미를 떠올리기 쉽지않다. 

컷오버 는 IT에서도 많이 사용하는 단어이니까 그 의미를 확실히 구별해보자

 

- CUT-OFF

CUT 은 '자르다' 는 뜻이고 OFF 는 붙어있던(on) 어떤것에서 떨어져 나가는(off) 것을 의미한다. 

잘려나간 쪽의 의미가 강조되어 cut off 는 탈락, 제외 등의 의미를 갖게 된다.

 *cut off date 는 어떤 자격이 상실되는 기준일 이라는 의미로 쓰인다.  

아래 기사의 cut-off time 은 '마라토너들이 자격을 갖추기 위해 들어와야 하는 시간(기록)' 의 의미로 쓰였다.

5:30 부터는 자격이 상실(cut off) 된다.  

출처 : https://www.runnersworld.com/races-places/a45197676/boston-is-back-cutoff-time-for-2024-race/

 

공천에서 배제되는 것을 국내 정치권에서도 컷오프 라고 사용하고 있다. 

출처 : https://mobile.newsis.com/view.html?ar_id=NISX20240307_0002651677#_PA

 

 

- CUT-OVER

반면, over 는 '~ 를 넘어서' 의 의미로 구(old) 에서 신(new) 으로의 단절(cut) 이 생기고, 신(new) 으로 넘어가는(over) 것에 포커스를 맞추는 의미를 갖게 되어 신규시스템 전환 등에서 많이 사용된다. 

출처 : https://www.sastrageek.com/post/ewm-cutover-activity

 

시스템 이전(transition) 에도 상세하게 들어가면 여러 전략이 나올수 있다.  위의 그림은 시스템의 이전을 제일 간단하게 잘 표현하고 있다. 

 

 

반응형
Posted by 돌고래트레이너
생계/AWS2024. 2. 17. 18:09

무과금으로 AWS RDS mysql 생성하기

본 포스팅의 목적은 무과금으로 AWS RDS db인스턴스를 생성함에 있다. 

실제 DB를 테스트 용도로 사용하려면 세부 옵션들의 변경이 필요함을 숙지하자. 

 

- 프리티어 가입

- RDS 생성

로그인 후 '서비스 옆 네모박스' -> 데이터베이스 -> RDS 클릭  

 

* RDS 옆에 별표시를 클릭해서 즐겨찾기 등록을 하자

 '데이터베이스 생성' 버튼을 누르자

아직 생성된 인스턴스가 없어서 0 개로 표시된다. 

 

표준생성 선택후  DBMS 는 mysql 로 선택을 하자 

 

엔진버전은 뭘 해도 상관없지만 나는 8.0.33 을 선택했다. 

샘플템플릿은 '프리티어'를 선택했다. 

 

DB 인스턴스 식별자를 적어준다. 

master 사용자 이름은 dbadm 으로 넣어줬다. root 를 사용하던 편한대로 넣어준다. 

 

프리티어에서 버스터블 클래스 만 선택이 가능하다. 

디폴트인 db.t3.micro 를 선택했다.  

과금이 무서우니까 스토리지 자동조정은 꺼놓자. 

아마존은 무서운 놈들이다. 

 

연결설정은 로컬pc에서 붙을수 있게 퍼블릭액세스에 '예' 를 선택한다.

 

 

 

데이터베이스를 생성 하자. 

추가 기능에 대한 팝업창이 뜬다. 

ElastiCache , RDS 프록시를 사용할것을 추천해준다. 

지금은 필요가 없으니 '닫기' 버튼을 누른다. 

화면으로 돌아오면 상태가 '생성중' -> '백업중' -> '사용가능'  으로 최종 완료된다. 

 

 

- client tool 로 접속하기 

위의 화면에서 db식별자를 클릭하면 아래 화면으로 이동한다. 

엔드포인트와 포트정보를 확인한다. 

 

 

반응형
Posted by 돌고래트레이너
정보/블로그 IT 팁2024. 1. 25. 22:54

윈도우 설치용 부팅usb를 만드는 것을 알아보자 

일단 부팅usb로 사용할 USB 를 준비하자.  최소 10GB 이상 필요하다.

준비가 되었으면 포맷을 하자. 

파일탐색기 -> 장치선택 -> 우클릭 -> 포맷

 

 

아래링크  윈도우 10 설치 미디어를 다운받자.  

https://www.microsoft.com/ko-kr/software-download/windows10%5C

 

 다운받은 "MediaCreationTool22H2.exe" 를 실행하자.

 

 

 

그래 거기 .. 

 

완료될때까지 기다리자..

 

부팅usb가 완료되었다

참 쉽죠?

도움이 되었다면 따봉주세요

반응형
Posted by 돌고래트레이너
정보/세금관련2024. 1. 24. 15:27

개인사업자로 IT프리랜서 일을 하면서 매 분기 부가세를 납부 때마다 어떤 것이 공제되고 어느것은 불공제인지 헷갈린다  

그래서 정리해보았다. 

 

 일단, 부가세 ( 서비스 제공자입장) 의 개념

고객이 나에게 100 이란 비용을 주기로 하면 나는 그에 해당하는 용역/서비스를 제공하는 계약을 한다.
이때 부가세는 10 이되고 (비용의 10%)  최종적으로 고객으로부터 110 을 받음  

부가세 납부하는 날 (년 2회, 1월/7월)이 되면, 사업관련 매입비용을 공제 처리하고 나머지를 납부함. 

예를 들어, 2024년 1월에 부가세 납부를 하게 된다고 치면...

지난 6개월간(2023.07~2023.12) 받은 부가세에서 공제금액을 제한 것을 납부하는데, 그것은 아래와 같다. 

부가세납부금액 = (10 * 6 ) - 매입세액 중 공제금액

매번 헷갈리지만 부가세 공제가 되지 않는 항목들은 아래와 같다. 

 

부가세 불공제 항목

- 자동차의 구입ㆍ임차 및 유지에 관련된 지출 
- 접대비 관련 지출
- 업무 관련 항공, 철도 운임 등 
  호텔 등의 숙박의 경우는 업무관련의 경우 매입세액 공제에 해당
- 공연ㆍ놀이동산 입장권, 목욕, 이발, 미용업및 성형수술 진료관련 이용요금   
- 인건비 (종소세 신고시 비용으로 반영)
- 폐업/간이과세/면세사업자로부터 매입한 내역
- 사업자 등록 전 매입세액 
- 세금계산서 미수취 또는 부실기재에 대한 매입세액 
- 국외 사용액
 

 

부가세 공제 항목

 그렇다면 어떤것이 공제가 되는가 ...? 

홈택스에는 '사업과 직접적으로 연관이 있는 비용' 이라고 명시되어 있다. 

그 판단은 사업자 본인이 가장 잘 할수 있을 것이다. 

IT프리랜서인 나의 기준으로 직접적인 연관있는 비용은 아래정도가 생각난다.  

- 업무용 노트북

- 업무용 사무기기 (마우스, 키보드 등) 

- 업무관련 SW  

+ 사업장과 관련된 공과금 (전기/통신 등)

* 내글은 재미로 보시거나 참고만 하시고 각자의 케이스는 최종적으로는 세무사를 통해서 확인을 하시길 바랍니다. 

 

반응형
Posted by 돌고래트레이너
생계/MySQL2024. 1. 16. 15:20

DBeaver 에서 information_schema, performance_schema 보이게 하기. 

디비버 설치 직후 디폴트 상태에서는 information/performance schema 가 아래처럼 보이지 않습니다. 

 

그것을 보려면 아래처럼 따라하면 됩니다. 

커넥션에서 우클릭 -> Connection view -> show system objects 선택

 

선택후 재접속하면 Databases 아래에 information/performance schema 가 보이게 됩니다. 

 

이상 끗

반응형
Posted by 돌고래트레이너
생계/MySQL2024. 1. 15. 14:36

 

mysql 접속시 유저/패스워드 입력안하고 로긴하는 방법을 알아보자 

 

lee@mysql-m:~$ 
lee@mysql-m:~$ mysql_config_editor print --all
lee@mysql-m:~$ 
lee@mysql-m:~$ mysql_config_editor set --login-path=rootconn --host=localhost --user=root --password
Enter password: 
lee@mysql-m:~$ 
lee@mysql-m:~$ 
lee@mysql-m:~$ ls -al
합계 48
drwxr-xr-x  6 lee  lee  4096  1월 16 21:43 .
drwxr-xr-x  3 root root 4096  1월 13 01:00 ..
-rw-------  1 lee  lee   106  1월 14 19:46 .Xauthority
-rw-------  1 lee  lee  1416  1월 16 17:57 .bash_history
-rw-r--r--  1 lee  lee   220  1월 13 01:00 .bash_logout
-rw-r--r--  1 lee  lee  3771  1월 13 01:00 .bashrc
drwx------ 11 lee  lee  4096  1월 13 01:29 .cache
drwx------ 11 lee  lee  4096  1월 14 18:21 .config
drwx------  3 lee  lee  4096  1월 13 01:14 .gnupg
drwxr-xr-x  3 lee  lee  4096  1월 13 01:14 .local
-rw-------  1 lee  lee   136  1월 16 21:44 .mylogin.cnf
lee@mysql-m:~$ mysql_config_editor print --all
[rootconn]
user = "root"
password = *****
host = "localhost"
lee@mysql-m:~$ 

mysql_config_editor 명령으로 credential 을 생성하면 유저 홈 디렉토리에 ".mylogin.cnf" 파일이 생성이 된다.

이후부터는 mysql 로긴시 패스워드를 입력할 필요없이 login-path 옵션을 붙여주면 된다.  

 

반응형
Posted by 돌고래트레이너
생계/MySQL2024. 1. 15. 00:30

virtual box 에 mysql master-slave replication 을 구성해보자  

가상머신은 oracle virtual box 을 사용하고 VM 에는 우분투를 설치하자. 

해당 작업은 이전에 작성한 내용을 참고하자

버추얼박스에 우분투 설치하기

1) 서버구성 

- mysql 설치 (master 역할) 

이것도 이전에 작성한 글을 참고해서 mysql 설치하자. 

버추얼박스에 mysql 설치하기

- vm 복제 (slave 역할)

vm 이 내려간 상태에서 vm 관리자 메뉴에서 대상vm을 복제하자

 

이름과 경로를 설정해준다.

 

같은 네트워크 대역을 사용하여 slave 에서 master 로 통신이 가능하게 설정해야한다. 
 vm 시작전 설정 -> 네트워크 -> 호스트전용어댑터


- hostname 변경 

복제한 vm의 hostname 이 그대로 사용중이니 mysql-s 로 변경해준다. 

@slave 

hostname
sudo hostnamectl set-hostname mysql-s

sudo reboot


2) Replication 설정
 2-1) 설정파일

@master
cd /etc/mysql
sudo vi my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1

sudo service mysql restart

*선택적 설정 고려 
max_binlog_size
expire_log_days
binlog_format=statement|mixed|row


@slave
cd /etc/mysql
sudo vi my.cnf

[mysqld]
server-id=2
relay-log=mysql-relay-bin
read_only

sudo service mysql restart


 2-2) Replication 유저 생성
@master
sudo mysql -u root -p1111

-- slave ip 로 생성한다. 
CREATE USER 'REP_ADM'@'192.168.56.102' IDENTIFIED WITH mysql_native_password BY '1111';
GRANT REPLICATION SLAVE ON *.* TO 'REP_ADM'@' 192.168.56.102';
   
SHOW MASTER STATUS;  

File, Position 값을 확인 

@slave 
sudo mysql -u root -p1111

-- master IP 를 넣는다 
CHANGE MASTER TO
MASTER_HOST='192.168.56.101',  
MASTER_USER='REP_ADM',
MASTER_PASSWORD='1111',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=2391;

START SLAVE;

SHOW SLAVE STATUS \G
=> [ERROR] : equal MySQL server UUIDs

sudo rm -rf /var/lib/mysql/auto.cnf
sudo service mysql restart


START SLAVE;


3) Replicatin 연결 확인 

-- 복제확인
sudo mysql --login-path=rootconn -e 'show slave status \G'|egrep "Master_Host|Master_User|Master_Log_File|Master_Log_Pos|ReplicateIgnore_DB|Running|IO_Err|SQL_Err|Seconds_Behind_Master|SQL_Delay"

** 아래 메세지가 보여야 정상 복제중
Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates


-- 에러확인
show variables like '%log_error%';
=> tail -100f  /var/log/mysql/error.log



4) Replication 에러 메시지별 대응

[ERROR] [MY-013117] [Repl] Replica I/O for channel '': Fatal error: The replica I/O thread stops because source and replica have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: MY-013117
=> VM 을 복제하면서 동일 uuid 문제 => auto.cnf 삭제 

[ERROR] [MY-013124] [Repl] Replica SQL for channel '': Replica failed to initialize applier metadata structure from the repository, Error_code: MY-013124
=> slave 를 리셋해준다. 
  stop slave; 
  reset slave;
  stop slave;
   
[ERROR] [MY-010584] [Repl] Replica I/O for channel '': Error connecting to source 'REP_ADM@192.17.7.5:3306'. This was attempt 1/86400, with a delay of 60 seconds between attempts. Message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061
=> rep user error : Authentication 확인 => mysql.user 의 plugin 확인 후 변경 => WITH mysql_native_password

[ERROR] [MY-010584] [Repl] Replica SQL for channel '': Worker 1 failed executing transaction 'ANONYMOUS' at source log mysql-bin.000003, end_log_pos 342; Error 'Can't create database 'test'; database exists' on query. Default database: 'test'. Query: 'create database test', Error_code: MY-001007
=> 트랜잭션 실패 : 대상 object 가 존재하지 않거나 실행할수 없어서 발생. skip 또는 object 동일하게 만들고 slave 재시작

** 트랜잭션 실패로 인한 에러메세지가 아는 내용이고 굳이 적용할 필요 없으면 아래명령으로 skip 한다. 
stop slave;
set global sql_slave_skip_counter=1;  -- skip 할 error 갯수
start slave;
show slave status\G

 

이상 끗.

도움되었다면 따봉줘!

반응형
Posted by 돌고래트레이너
생계/MySQL2024. 1. 13. 02:33

vm 재설치한 mysql 에 workbench 로 재접속시 에러 발생 

server public key 를 삭제

해당 파일을 날려준다. 

 

반응형

'생계 > MySQL' 카테고리의 다른 글

mysql login-path 로 로그인하기  (0) 2024.01.15
가상머신 virtualbox mysql replication 구성하기  (0) 2024.01.15
mysql 자주쓰는 함수  (0) 2023.11.06
mysql show 명령어 db정보 확인  (0) 2023.10.23
mysql select lock  (0) 2021.08.02
Posted by 돌고래트레이너
생계/DA2023. 12. 27. 17:49

그간 여러 사이트를 다니고 나서 느낀 모델링에 대한 개인적인 소회, 생각들 한번 정리해보자.

 

- 튜닝에 비해 바로 효과 나타나지 않아 중요해 보이지 않는다. 

한때 좋은 모델과 데이터의 품질에 대해서 신경을 쓰려던 트렌드가 잠깐 생겼었는데 조금은 뜸해진 느낌

튜닝은 바로 효과가 나타나고 비용과 즉시 연결이 된다. 클라우드의 시대가 오면서 더 확고해졌다. 

온프레미스에선 성능 개선으로 자원사용륭이 낮아졌다고 해서 서버를 낮은 스펙으로 바꾸지 않는다. 

이미 구매를 한 서버니 그럴일이 없다. 어느 정도 이상의 튜닝은 굳이 할 필요가 없다. 

하지만 클라우드에서는 서버의 스펙다운이 자유롭다. 튜너를 투입해서 얻은 성능개선이 운영비 절감을 가시적으로 할수있게 되었다. 

 

- 통합 관점의 표준은 개별적이고 독립적으로 개발하는 MSA 트렌드와 상충

물론 완전히 하나를 버리고 하나를 택하는 극단적인 상황까지 가는 것은 아니지만 통합 관점의 표준과 데이터의 중복도 허용하지 않는 기존의 방식을 계속 고수하려면 갈등이 발생한다. 

 

- 잘못된 모델은 시간이 한참 지나고 나서야 비싼 청구서를 부과한다. 

물리모델은 dbms 의 특성을 반영할수 밖에 없는데 최근에 mysql 로 환경이 많이 바뀌면서 이 특성을 잘 고려해야한다. 

오라클은 인덱스를 통해 데이터를 찾아갈때 인덱스의 리프노드에서 데이터의 rowid 를 찍어서 바로 원하는 데이터를 찾아갈수 있지만 mysql 은 조금 방식이 다르다.

mysql 의 innodb 테이블에서는 pk 가 클러스터링 되어 저장이 되는데, 세컨더리 인덱스에서 rowid 를 찍는것이 아니라 pk 를 찍어준다. 그래서 pk 가 여러 칼럼으로 구성되면 인덱스의 크기가 커지고 성능상 불리함이 있다. 

그래서 mysql 은 단순하게 일련번호로 pk 를 만드는 오라클의 모델링에서는 참을수 없는 방식으로 가이드를 한다.

다만 이때도 업무식별자를 도출해 유니크 인덱스를 만들 필요가 있다.

일련번호로 식별자를 만들때의 단점은 어떤 규칙으로 데이터가 만들어지는지 파악하기 힘들다는 것에 있다. 

심한경우 운영환경에서 여러사람을 거친 경우 나중에는 특정 테이블을 잘못 사용하고 있거나 무슨 테이블인지 모르겠다고 해서 비슷한 새로운 테이블을 또 만드는 경우가 생기게 된다. 



- 틀린 모델로 운영이 가능하다 .


안타까운 사실은 모델이 틀려도 어떻게든 운영을 한다는 것이다. 물론 내눈에 보이지 않는 누군가의 노력이 있었겠지만. 

좋은 모델을 만들고 유지하려면 비용을 지불해야 하지만 당장의 우선순위에서 밀리다 보니 고객은 이쪽에 더 돈을 지불할 의사를 보이지 않는듯한 느낌이다. 

반응형

'생계 > DA' 카테고리의 다른 글

데이터 모델링 식별자 선정  (0) 2024.10.09
RDBMS 에서의 관계 라는 것  (0) 2023.12.12
이력 모델  (0) 2023.12.09
엔터티 통합과 분리  (0) 2023.12.09
엔터티 유형 분류  (0) 2023.11.29
Posted by 돌고래트레이너
생계/DA2023. 12. 12. 17:43

1. 관계의 의미

우리가 많이 사용하는 RDBMS 의 'R' 은 Relational 이라는 관계형을 의미한다. 
데이터를 테이블형태로 구조화 하여 사용하는 것이 특징이고, 테이블과 테이블에는 관계라는 것을 설정할수있다
관계라는 것은 내가 어디에서 왔는가를 의미한다. 조인과는 다른 개념이다. 
나와 1촌인 부모-자식 에만 관심이 있고, 할아버지-손자 의 관계는 관심이 없다. 
부모없는 자식, 아버지와 할아버지가 같은 모델은 잘못된 모델이다.   

2. 관계의 구현

데이터모델링에서 관계라는 것은 논리적인 표현이고, 결국 관계란 자식의 컬럼으로 표현되며, 
물리적으로 이를 구현한 형태가 외래키 (FK) 이다. 

요즘은 참조 제약조건을 DBMS 단의 FK 로 구현하지 않는 추세인데, 이유는 아래정도가 있다.

- 개발 편의성
 이관작업시 데이터 선후 관계를 고려해야함.
 ogg는 데이터간의 관계를 따지지 않기때문에 일시적 오류 가능성
- lock 의 전이, 데드락 발생 가능성
 
정말 필수적인 테이블에만 일부 FK를 생성해서 운영하곤 한다. 
dbms 단에서 제약조건을 처리하지 않는것이지, 아예 참조제약조건을 무시하는 것이 아니다. 
application 레벨에서 참조 제약조건을 수행하는 로직을 추가해야 한다.  

논리모델에서는 관계를 표현해야 하지만 물리모델에서 FK 를 생성하는 가는 전략적 문제이다. 
다만 FK 를 생성하지 않으니 논리모델에서 관계를 생략하는 것은 덜 완성된 모델이다. 

* 관계가 생략될수 있는 경우
 - 기준엔터티
  환율엔터티의 경우, 
 - 가공엔터티
  
 - 외부엔터티 
  외부의 시스템의 참조하는 경우
   

3. 속성과 관계 누락
속성은 있지만 관계가 안그려진것 -> 속성을 보고 관계가 누락된것을 발견할수 있으니 불행 중 다행
속성표현X, 관계는 그려진 경우 -> 존재하지 않음
관계없는데 관계가 그려진 경우 


4. 식별/비식별 관계 

관계는 부모의 식별자를 물려받는 것. 
이때 부모의 식별자가 자식의 식별자에 포함이 되면 식별관계가 되고, 부모-자식 간 강한 종속성이 나타남. (부모없는 자식x)
반면, 부모의 식별자가 자식의 일반속성으로 가게되면 부모-자식간의 약한 종속성이 나타나고 부모와 독립적으로 존재할수 있다.

* 유의 사항 
- 부모의 일부만 물려받지 않는다. 
- 부모의 속성을 물려받지 않는다. 


6. 관계의 단절 필요성

조상이 많은 경우 계속해서 식별관계로 그릴경우 식별자가 비대해진다.
이런 모델에서 조인을 걸 경우 SQL 이 복잡해지는 단점이 있다.
이때 인조식별자를 만들어 비식별 관계로 만드는 것을 고려한다.
자식이 많을 경우에도 고려할수 있다. 

반응형

'생계 > DA' 카테고리의 다른 글

데이터 모델링 식별자 선정  (0) 2024.10.09
모델링에 대한 생각  (0) 2023.12.27
이력 모델  (0) 2023.12.09
엔터티 통합과 분리  (0) 2023.12.09
엔터티 유형 분류  (0) 2023.11.29
Posted by 돌고래트레이너