헬스장 창문 너머 옆건물에는 요양병원이 있다.
창문으로 침상에 앉아 계시는 할머니 두 분이 보인다.
두 분 모두 벽에 걸려있는 TV를 보고 계시는 듯하다.
운동을 좀 하다 창문을 다시 보니
한 분은 졸고 계시고
다른 분은 계속 TV를 보고 계신다.

문득 부모님 미래 모습이 그분들 상황과 비슷하게 그려진다.
"난 부모님 요양병원에 보내지 말아야지.
근데 내가 없을때 문제가 생기면 어떡하지"
부모님도 언젠간 요양병원에 가시게 될거 같다.
"그렇담 매주 주말마다 찾아가서 외롭지 않게 해드려야지.."

인생이란 무엇일까?
인간의 삶이란 너무 보잘것 없어보인다
공수레공수거
사는게 항상 힘들고 불만족스러웠지만
인생의 마지막을 기다리는 모습에서
나의 고뇌, 욕망 등은 무의미한 느낌이었다.

그렇다고 원하는 것을 포기하고 싶지도 않고
세속의 삶이 가끔 주는 꿀은 너무나도 달콤하다.

누군가 그런다
살아있으니까 대충 사는거라고
나도 안다. 여태껏 아무생각없이 그냥 살아왔다.
나이가 먹어서일까?
자꾸 이것저것 생각을 하게 된다.

보잘것없는 별의미없는 인간의 삶이지만
재미있게 즐겁게 지내다가 가고싶다.
근데 문제는 내가 놀 줄을 모른다...
뭐하면서 놀아야 재밌는지 즐거운질 모른다.
내가 생각해도 무미건조하게 살긴 했다.

오늘 헬스장을 가면서 저 멀리 북한산과 맑은 하늘을 보며
"아 행복하다"라는 말이 나도 모르게 나왔다
좀 어이없다.
내 입에서 행복이라니ㅋㅋ
신기하면서도 참 나도 별거없더라.

갑자기 저번에 홍대 사주카페에서 들었던 말이 생각나네.
나보고 오래된 영혼이라했다ㅋㅋ
환생을 이미 많이 한 영혼이라
전생에 이미 할거 다해봤기 때문에
삶에 별 미련이 없다고 했다.
아마 이 생이 끝나면
오랫동안 다시 인간세상에 내려오지 않을거라고...
뭔가 나랑 너무 잘 맞는 얘기였다.
사주로 본 내용이 맞을까 의심스럽지만ㅎㅎ
ㅋㅋ 사주... 이래서 못 끊지. 후후

난 내 주변친구들에게 하는 얘기가 있다.
난 죽으면 저승사자가 될거라고
저승의 공무원이 되어서
인간이든 동물이든 환생하지 않고
저승에서 내가 원하는거 맘껏 해야지ㅋㅋ

이상 독실한? 가톨릭 신자의 신념이었습니다.

'일상' 카테고리의 다른 글

[일상] 청룡의 해가 들어오고 있어요!  (0) 2024.02.01
[일상] 나의 신(神)  (0) 2021.12.12
[일상] 솔라리턴  (0) 2018.12.19
[일상] 명동성당 아침  (2) 2018.10.30
[일상] 북한산 3인방  (1) 2018.10.27

Rocky Linux 8.9에서 Oracle express 설치 내용 (virtual box에 설치)

enterprise 설치하고 싶었지만... 라이센스 무섭..

yum -y update

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

# Oracle 설치
cd /usr/local/src
curl -o oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
yum -y localinstall oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
rm oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm

cd /usr/local/src
wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm
#rpm -ivh oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm 
yum -y localinstall oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm

# 설정 완료되면 자동 실행됨
# 비밀번호 설정
/etc/init.d/oracle-xe-21c configure

# 확인
ps -ef | grep oracle


# 환경변수 설정 - 맨 아래 입력 후 저장
# vi /etc/profile

export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE
export ORACLE_SID=XE
export PATH=$ORACLE_HOME/bin:$PATH


source /etc/profile

# sqlplus 환경설정
yum install -y epel-release
yum install -y rlwrap

# vi ~/.bashrc

alias sqlplus='rlwrap sqlplus'



source ~/.bashrc

# 재부팅
reboot

# 오라클 실행
/etc/init.d/oracle-xe-21c start

# sqlplus 접속 - system 계정으로 접속
sqlplus

SQL> alter session set "_ORACLE_SCRIPT"=true;
SQL> create user gwchu identified by 12345;
SQL> grant resource, connect, dba to gwchu;

### dbeaver 접속
# 다음의 설정 추가
# vi /opt/oracle/homes/OraDBHome21cXE/network/admin/listener.ora

testdb = 
  (DESCRIPTION =
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.116)(PORT = 1521))
    )
    (CONNECT_DATA = 
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )


# 오라클 재시작
/etc/init.d/oracle-xe-21c restart

# DBeaver 접속확인

# 파일 용량 크므로 삭제
rm -f /usr/local/src/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm

위처럼 설정한 후 연결 잘 되면 끝~

'Database > RDBMS' 카테고리의 다른 글

[MySQL/MariaDB] my.cnf 메모리 설정  (0) 2022.06.11
[PostgreSQL] Architecture  (0) 2022.03.01
[MariaDB] mariabackup 백업 & 복구  (0) 2022.02.15
[MySQL/MariaDB] 계정 정보 추출  (0) 2021.11.11
Transaction과 Isolation Level  (0) 2021.04.07

어쩌다보니 백수가 되었다.

첫 3개월간 스트레스도 받고

면접에서 계속 떨어지며 자존감이 낮아지며 힘든 시기를 보냈다.

 

사람은 적응의 동물이랄까?

취직에 대한 마음을 내려놓으니

백수의 생활을 매우 매우 잘 보내고 있다.

일어나고 싶을때 일어나고...

몸 찌뿌등하면 헬스장 가고

드라마에 빠져서 시간가는 줄도 모르고... 게임도 하고 등등

지금은 오히려 취업을 좀 늦게 하거나... 좀 쉬다가 새로운 일을 준비해볼까 생각을 하는 중이다.

 

삶이란 참 웃기다

마음가짐 하나 바뀌었을 뿐인데

지옥에서 천국으로 변하다니

 

백수는 시간이 정말정말정말 많다.

드라마를 아무리 봐도 시간이 남는다.

요즘 난 그 남는 시간에 나는 블로그에 있는 사주 관련된 글을 읽고 있다.

 

곧 있으면 입춘(立春)이다.

역학에서는 입춘부터 새로운 1년이 시작된다고 한다.

곧 갑진(甲辰)년이 시작이 된다.

청룡의 해... 갑진년

 

물론 나도 신년운세를 보긴 했다.

내 사주는 금수(金水)가 강한 사주고 목(木)을 용신으로 사용하는 사주라

강한 목이 들어오는 갑진년은 긍정적이다.

신자진 수국은 나에게 도충으로 오화를 불러와 도움이 된다고 한다.

나는 일반격이 아니라 외격이기에...

2024년 갑진년은 나에게 매우 유리한 해이다.

재물적으로도 직업적으로도...

그렇다면 나는 2024년에 돈을 많이 벌고 누구나 원하는 직장에 들어가게 될까?

정답은 "yes or no"이다.

그럴수도 있고 아닐 수도 있다는 말이다.

 

여기서 사주팔자에 대해서 생각의 차이가 발생한다.

사주팔자는 단순히 운을 보는 것이다.

이벤트나 사건을 맞히는 것이 아니라는 것이다.

쉽게 말해서 유리한지 불리한지 가능성만 보여주는 것이다.

이벤트나 사건을 맞히려면 신점을 보러가는게 맞다.

 

오늘 어떤 사주 블로그 글에서 이런 비유가 있었다.

"호랑이가 찾아와서 올해는 노루를 잡을 수 있을까요?라고 물어보면 어떻게 대답해야 하나"

님이라면 어떻게 대답하시겠습니까? ㅋㅋ

 

간단한 생각의 변화로 삶이 천국과 지옥을 넘나드는 것처럼

행복과 불행은 종이 한장 차이가 아닐까 생각이 드는 요즘이다.

 

갑진년의 기운이 조금씩 들어와서 그런가

취업을 꼭 하지 않아도 된다는 마음이 들고 있다.

그냥 간단한 알바하면서 새로운 길을 준비할 수도 있고

가끔 지원서 한두개씩 넣으면서 어쩌다가 하나 얻어 걸릴 수도 있고 ㅎㅎ

 

대기업에 가서 느낀건 돈과 복지가 인생의 전부는 아니라는 것을 느꼈고

중견기업에서 느낀건 연봉이 적어도 좋은 사람들과 일하는게 너무너무 즐겁다는 것을 느꼈다.

다음은 어떤걸 경험하게 될까?

 

나는 역학 글이 왜 재밌을까?

나는 내가 보지 못한 시각을 깨닫고 새로운 시각으로 세상을 바라보는 게 너무 즐겁다.

 

예를 들어, 사주에는 충(沖)이라는 개념이 있다.

충은 충돌할때 충이 아니다.

용어로 대대라고 한다. (반대x, 마주 대하다o)

짝이라고 볼 수도 있다.

 

너가 있으면 내가 있는 것처럼

남자가 있으면 여자가 있는 것처럼

여당이 있으면 야당이 있는 것처럼

천간의 합 = 지지의 충 <오운육기(五運六氣)>

점성술에서 말하면 어포지션을 말하는 것이다.

 

점성술에서 1하우스는 나를 뜻한다.

그리고 어포지션 7하우스는 너를 뜻한다.

7하우스는 결혼, 배우자를 뜻한다.

즉, 나와 배우자는 짝이기도 하면서 서로 마주 대하는 어포지션을 말하는 것이다.

신기하지 않나요?

사주와 점성술에서 말하는 대대라는게?

 

그리고 충이라는건 1대 1관계에서만 된다.

균형이 맞아야 산출물이 나온다.

이자불충오(二子不沖午)

자수가 2개이면 오화와 충이 안된다라는 말이다.

충이 성립이 되지 않아서 자오충 소음군화가 발생하지 않는다는 뜻이다.

이런건 쟁충(爭沖)이라고 하는데 좋은건 아니다 ㅎㅎ

 

사주가 좋든 좋지 않든 운을 좋게 만드는 방법이 있다.

쉽게 말해 개운법!!!

그건 바로 사람이다.

나에게 필요한 글자를 가진 사람을 만나면 좋지 않은 운을 피할 수 있고

반대로 나를 더 힘들게 만드는 글자를 가진 사람은 운을 더 좋지 않게 만든다.

이러니 어떻게 단순히 사주팔자만을 가지고 그 사람의 인생에 대해서 결정을 내릴 수 있겠는가?

그래서 결국 돌고 돌아 인생은 알 수 없다는 말이다.

 

새옹지마(塞翁之馬)라는 고사성어를 알지 않은가?

변방의 노인의 말이 도망갔지만, 야생마들을 이끌고 돌아왔고

노인의 아들이 야생마를 타다가 떨어져 절름발이가 되었지만, 전쟁을 피할 수 있었다.

 

좋은 일이 나쁜 일이 되기도 하고

나쁜 일이 좋은 일이 되기도 한다.

 

삶이란 결코 예측할 수 없다

그걸 예측하고 맞히는건 그건 신이지 인간이 아니지..

 

그래도 나처럼 간절히 무언가를 바라는 사람들이 있을 것이다.

그럴 땐... 그냥 기도를 해라.

하느님이든 부처님이든 길거리 굴러다니는 돌에 하든

간절히 정말 간절히 기도를 해라.

간절함이 하늘에 닿으면 이뤄질지도 모르니 ㅎㅎ

 

모두들 새해에 복 많이 받고 원하는 일 모두 이뤄지길~

Happy New Year~!!!

'일상' 카테고리의 다른 글

[일상] 헬스장 창문 너머  (1) 2024.03.17
[일상] 나의 신(神)  (0) 2021.12.12
[일상] 솔라리턴  (0) 2018.12.19
[일상] 명동성당 아침  (2) 2018.10.30
[일상] 북한산 3인방  (1) 2018.10.27

와... 정말 하루 온종일 popup 안뜨게 하려고 이것저것 시도하다가 겨우겨우 스스로 해결했다.

selenium 처음 시작시 참고하면 좋을거 같아서 포스팅을 해본다.

참고로 selenium 버전은 4.8.2이다.

def chrome_driver_dev():
    options = webdriver.ChromeOptions()
    # options.add_argument('--headless')
    # options.add_argument('--no-sandbox')
    # options.add_argument("--start-maximized")
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument("--disable-notifications")
    options.add_experimental_option('excludeSwitches', ['disable-popup-blocking'])

    service = Service('/opt/homebrew/bin/chromedriver')

    return webdriver.Chrome(service=service, options=options)

 

To be continued.........

 

 

Made by 꿩

#덕유산 등산기

 

오랜만에 등산을 하기 위해

어디를 갈까 블로그를 뒤져보던 중

알레 버스라는 것을 알게 되었다

https://www.alle.co.kr/m/page/bus_list.html

 

알레(Alle) :: 등산을 쉽고 편하게

천천히, 꾸준하고, 건강하게

www.alle.co.kr

 

산과 코스가 정해져 있고

편하게 버스를 타고 다녀올 수 있는 서비스였는데

평소 혼자서 등산하는 나에게

차도 없어서 버스 시간표를 알아보고 루트를 정하는 나에게

굉장히 유용한 서비스였다

 

알레버스의 덕유산 루트는 다음과 같다

출처: 알레버스 https://www.alle.co.kr/m/page/bus_list.html

 

안성탐방지원센터에서 출발하여

설천봉에서 케이블카를 타고 내려오는 코스이다

덕유산 초입에는 산악회 버스들과 등산 차량으로 인해

엄청난 인파가 몰렸었다

그 많은 사람들 중

나는 혼자라는 게 좀 슬펐다

뜨거운 여름에 간 덕유산 초입에는 그늘이 많아

그나마 올라가기 편했던 것 같다

여름치곤 등산하기 딱 좋은 날씨였다

중간에 가다보면 칠연폭포 쪽으로 올라가는 길이 있는데

올라갔다 다시 내려와야 하므로 추천하지 않는다

칠연폭포는 물줄기가 7개의 못에 잠시 머무르다 떨어지는 곳이라고 하는데

중간중간 짧은 폭포와 못이 여러개 있었다

다시는 가지 않을 듯!

혼자서 등산하다보니

아무 말없이 아무 생각없이 등산을 했었다

중간 중간 같이 알레버스를 타고 온 등산객이 보이긴 했지만

모르는척 묵묵히 내 갈길을 갔다

나도 언젠간 등산을 좋아하는 친구를 만들어서

주기적으로 같이 등산을 다니고 싶다 ㅠㅠ

 

동엽령까지는 산을 올라가는 길이다

오랜만에 등산을 해서 그런가

생각보다 조금 힘들긴 했는데

북한산성입구에서 백운대 올라가는 길과 비슷하지 않을까 싶다

동엽령에 다다르면 이제 힘든건 거의 끝났다고 보면 된다

능선을 따라 산을 오르락 내리락 하면 된다

확실히 여름이라 그런가

저 사진 속 수풀 안에 어마어마하게 많은 벌레들이 서식하고 있다

꽃이 많이 피어서

벌들도 어마어마하게 많았다

능선길이지만 아직 올라갈 길이 많이 남아 있긴 했다

그래도 처음보다는 많이 수월해서 천천히 가다보면 정상에 도착하게 된다

날씨가 흐려서 많이 덥지도 않지만

사진이 이쁘게 잘 나오기가 힘들다

날씨가 좋으면 온몸에 땀과 화상을 입을 수 있지만

사진이 매우 이쁘게 나온다

난 후자를 선호하지만 아쉽게도 날씨는 흐렸다

덕유산 정상에 다다르자 구름이 조금씩 걷히고 있었다

좀 빠르게 올라와서

버스 출발시간 전까지 정상에서 노닥거리면서 있었는데

이노무 벌들이...

나를 꽃으로 아나 ...

날 가만두질 않았다;;

 

참고로 저기서 조금만 내려가면 카페가 있으므로

거기서 쉬는걸 추천한다

나는 그걸 몰라서

꽃으로 빙의해

벌들의 대시를 받으며

인간에게서 받지 못하는 인기를 많이 받으며

이런 저런 생각을 했다

 

어린왕자에 이런 문구가 있다

"It's the miracle that the person who i like likes me"

내가 좋아하는 사람이 나를 좋아해 주는 건 기적이야

 

씁쓸함을 느끼면서

내려오다보니 바로 밑에 카페와 케이블카 정류장이 있었다

케이블카는 편도로 14,000원...

눈물을 머금고 결제를 했지만

진짜 케이블카 타고 내려오는 걸 추천한다

진심 케이블카 타고 내려오는 데도 한참이 걸린다

멀미나서 죽는 줄...

이제 집에 갈 시간이다

알레버스를 이용한 덕분에

편하고 혼자서라면 갈 수 없었던 산을 가게 되었다

분명히 좋은 거였는데

마음이 좀 허전했다

나는 혼자서 등산을 하는 것보단

같이 등산을 하는 걸 좋아하나보다

등산모임에 들어가야하나...?

매주... 매달은 가기 힘든데;;

To be continued.........

 

 

Made by 꿩

# my.cnf 메모리 설정

 

MariaDB의 메모리 공간은 글로벌 메모리 영역과 로컬 메모리 영역으로 구분된다

 

글로벌 메모리 영역은 스레드가 공유해서 사용되는 공간이다

DB 최초 기동시 메모리를 최소한만 사용하다가 설정된 값까지 증가되고

증가한 이후 메모리룰 반환하지 않고 설정된 값 이내에서 사용된다

 

글로벌 메모리 = innodb_buffer_pool_size + key_buffer_size + innodb_log_buffer_size + tmp_table_size

설정 디폴트 설명
innodb_buffer_pool_size 128MB innodb가 data와 index를 캐시하는 곳 (물리적 메모리의 50%정도)
key_buffer_size 128MB MyISAM의 인덱스를 메모리에 저장하는 버퍼의 크기
innodb_log_buffer_size 16MB 로그파일을 디스크에 쓰기위한 버퍼크기
tmp_table_size 16MB 쿼리가 수행될때 사용되는 임시테이블 크기, 해당 설정 넘어가면 디스크에 write 됨.

 

로컬 메모리 영역은 각 스레드별로 사용되며 공유되지 않는 공간이다

 

로컬 메모리 = (sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size + thread_stack + binlog_cache_size) * max_connections

설정 디폴트 설명
sort_buffer_size 2MB 정렬에서 사용되는 메모리
read_buffer_size 131072 풀스캔에서 사용되는 메모리
read_rnd_buffer_size 256kB 정렬 후, read에서 사용되는 메모리
join_buffer_size 256kB index 사용하지 않는 조인에서 사용되는 메모리
thread_stack 299008 스레드별 스텍 크기
binlog_cache_size 32768 트랜잭션의 bin log를 캐시로 들고 있음
max_connections 151 최대 동시 접속 수

 

총 메모리 = 글로벌 메모리 영역 + 로컬 메모리 영역 + Mariadb 기본 기동(350MB) + performance_schema data(150MB) + OS / 파일 버퍼링 공간(전체 메모리의 약 10%) 를 고려할 것

 

[참고자료]
https://www.webcomand.com/docs/admin_guide/configuration/mysqlmariadb/index.html
https://support.skdt.co.kr/ko/support/solutions/articles/42000064656--cloud-z-db-mariadb%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%84%A4%EC%A0%95%EC%9D%84-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EC%95%BC-%ED%95%98%EB%82%98%EC%9A%94-
MariaDB 공식문서

To be continued.........

 

 

Made by 꿩

'Database > RDBMS' 카테고리의 다른 글

[Oracle] Oracle express 21c 설치 (feat. Rocky 8.9)  (0) 2024.03.16
[PostgreSQL] Architecture  (0) 2022.03.01
[MariaDB] mariabackup 백업 & 복구  (0) 2022.02.15
[MySQL/MariaDB] 계정 정보 추출  (0) 2021.11.11
Transaction과 Isolation Level  (0) 2021.04.07

# Database connection

 

Python으로 각 DB별 연결 내용 정리

# python3 설치
yum install python3 -y

 

1. PostgreSQL

# PostgreSQL 드라이버 설치
pip install psycopg2
python3 -m pip install psycopg2

 

import psycopg2
 
try:
    conn = psycopg2.connect(
        host="192.168.123.50",
        port="5432",
        database="postgres",
        user="user1",
        password="password")
 
    cur = conn.cursor()
 
    cur.execute("select version()")
 
    print(cur.fetchone())
 
except Exception as e:
    print("Error while fetching Schema")
    print(e)
 
finally:
    conn.close()

 

2. MySQL/MariaDB

# MySQL/MariaDB 드라이버 설치
pip install pymysql
python3 -m pip install pymysql

 

import pymysql
 
try:
    conn = pymysql.connect(
        host='192.168.123.50',
        port=3306 ,
        user='user1',
        password='password',
        db='mysql',
        charset='utf8'
    )
 
    cur = conn.cursor()
    cur.execute("select version()")
 
    rows = cur.fetchall()
    cur.close()
    conn.close()
    print(rows)
 
except Exception as e:
    print("Error while fetching Schema")
    print(e)

 

3. ClickHouse

# clickhouse 드라이버 설치
pip3 install clickhouse-driver[lz4]
python3 -m pip install clickhouse-driver[lz4]

 

from clickhouse_driver import Client
 
try:
    client = Client('192.168.123.50',
                user='user',
                password='password',
                verify=False,
                database='default',
                compression=True)
 
    result = client.execute('SELECT now(), version()')
    result2 = client.execute('SHOW databases')
    print(result)
 
except:
    print("Error while fetching Schema")

 

4. MongoDB

# MongoDB 드라이버 설치
pip install pymongo
python3 -m pip install pymongo

 

 

import pymongo
 
try:
    #conn = pymongo.MongoClient('mongodb://{user}:{password}@127.0.0.1:27017')
    conn = pymongo.MongoClient('mongodb://127.0.0.1:27017')
    db = conn.get_database('testdb')
    collection = db.get_collection('testcollection')
 
    for x in collection.find():
        print(x)
 
except Exception as e:
    print("Error while fetching Schema")
    print(e)

 

5. ElasticSearch

# ElasticSearch 드라이버 설치
pip install elasticsearch
python3 -m pip install elasticsearch

 

from elasticsearch import Elasticsearch
 
try:
    es = Elasticsearch('192.168.123.50:9200')
 
    # elastic info
    print(es.info())
 
    # get all index
    print(list(es.indices.get_alias().keys()))
 
    print(es.indices.get_mapping("products"))
    print(es.indices.get_mapping("work"))
 
except Exception as e:
    print("Error while fetching Schema")
    print(e)

 

6. Redis

# Redis 드라이버 설치
pip install scylla-driver
python3 -m pip install scylla-driver

 

import redis
 
try:
    r = redis.Redis(host='192.168.123.50', port=6379, db=0)
    r.set('k_test','v_test')
    print(r.get('k_test'))
    r.close()
except Exception as e:
    print("error")
    print(e)

 

7. ScyllaDB

# ScyllaDB 드라이버 설치
pip install scylla-driver
python3 -m pip install scylla-driver

 

import cassandra
 
print(cassandra.__version__)

 

 

 

To be continued.........

 

 

Made by 꿩

 

'IT > Bash' 카테고리의 다른 글

[Linux] SSH 공개키 설정  (0) 2022.03.28
[Bash] 스크립트 #! 의미  (0) 2021.10.19
[Bash] 터미널 jar 파일 생성  (0) 2021.10.05
[centos] java openjdk 설치 및 삭제  (0) 2021.10.05
Redis 메모리 & 시간 측정 스크립트  (0) 2021.05.14

# BOM (Bill Of Materials)

 

데이터를 다루다보면 계층형 데이터들이 있다

대표적으로 카테고리 데이터!!!

카테고리 데이터는 동일한 데이터이지만

서로 부모와 자식 관계를 가질 수 있다

 

이렇게 계층형 데이터를 DB에 저장할 때

우리가 잘아는 순환 관계로 표현이 된다

위의 모델은 1:M 관계를 표현하지만

M:M 관계를 표현하지 못한다

 

다시말해서

상위 데이터(1)가 여러 개의 하위 데이터(M)을 가질 수 있다.

(상위 카테고리는 여러 하위 카테고리를 가진다)

그러나

여러 개의 하위 데이터(M)가 여러 상위 데이터(M)를 가질 순 없다.

(하위 카테고리는 여러개의 상위 카테고리에 포함되지 않는다 - parent_category_no 컬럼이 하나)

 

이를 해결하는 모델이 바로 BOM 모델이다.

BOM 구조는 새로운 관계 엔티티를 추가하여 1:M 관계로 구성된 모델이다.

보통 제조업에서 많이 쓰여서 부품, 조립규칙으로 많이 설명되는데

요즘 식욕이 많아져서...

음식을 조합하는 걸로 예시를 들어보려한다.

 

샐러드를 만드는 데 기본적으로 채소와 드레싱이 조합이 된다

닭가슴살 샐러드와 일반 샐러드를 만들 때

동일한 채소와 드레싱을 사용하여 만들게 되는데

채소가 닭가슴살 샐러드와 일반 샐러드에 포함이 되고

샐러드가 채소와 드레싱을 포함하는 다대다(M:M)관계가 성립된다

 

BOM 모델은 이렇게 계층형 데이터들 간의 M:M 순환 구조를 가지고 있는

데이터를 저장하는데 사용되는거라 보면 된다.

 

[참고자료]
https://ora-sysdba.tistory.com/entry/Seminar-%EC%88%9C%ED%99%98-%EA%B4%80%EA%B3%84-BOMBill-Of-Materials
http://wiki.gurubee.net/pages/viewpage.action?pageId=983056

To be continued.........

 

 

Made by 꿩

+ Recent posts