반응형
Terraform에서도 언급되고, Jenkins pipeline 문법에서도 언급되는..(이 경우엔 카운터파트가 imperative가 아니라 scripted)
Declarative vs. Imperative
- Declarative: 사용자(개발자)가 원하는 최종 형태를 선언
e.g., Terraform 을 사용할 때의 Declarative 선언 형태 : (config 파일이 정의된 상태에서) 이 config를 가진 5대의 서버. → 즉, end state 에 대한 정의가 있고 이를 어떻게 구현하는지는 표현하지 않음
요 end state 를 보통 desired state 라고 표현함 특히특히특히 k8s에서...
(TMI지만 k8s가 k8s인 이유는 k ubernete s 요 k랑 s 사이에 8글자가 들어가서...! )
- Imperative: 사용자(개발자)가 원하는 형태를 만들어 내기 위한 동작들을 기재
e.g., 위의 예시라고 한다면 aws ec2 인스턴스를 생성하고, 거기에 인증정보를 ㅁㅁ를 통해서 넣고, ㅁㅁㅁ 를 어디에 설치하고 , ....
단순히 놓고 보면 전자가 더 편하게 느껴지겠지만, 세부 설정을 위해서는 결국 두가지 선언형태를 다 사용하게 되는.. 👀 👀
인프라에서만 사용되는 개념은 아니고, 언어 특성을 이야기할 때도 언급되는 개념이다.
일반적으로 사용하는 프로그래밍 언어.. Java나 C 같은 것들을 여기서는 Imperative 라고 할 수 있고,
SQL 이런 DB용 언어를 Declarative 하다고 할 수 있다.
일반적인 프로그래밍 언어에서는 내가 원하는 걸 어떻게 얻어야 할 지에 대한 instruction을 나열하지만
SQL에서는 select OO from OO where OOO... 이런식으로 내가 얻고자 하는 end result만
정형화해서 표현한다.
그리고 나서 그 쿼리에 맞는 결과물을 가져오는 건? DB의 몫...!
execution plan을 내가 짜느냐(java, python 등), 남이 짜느냐(sql)가 이 두 개념을 가르는 차이라 할 수 있겠다.
SQL도 execution plan을 내가 바꾸도록 유도할 수 있지만 그거는 논외로...👀 👀
반응형
'CS and others' 카테고리의 다른 글
[이럴땐이렇게] Mac OSX 에서 확장자 일괄 변경하기 (하위 폴더내 파일 포함) (1) | 2021.08.29 |
---|---|
패킷에서 특정 프로토콜의 영역이 이상하게 잡힌다면...? (0) | 2021.08.14 |
[이럴땐이렇게] 맥북에서 창이 화면 밖으로 나간 경우(집 나간 창) 데려오기 (3) | 2021.06.26 |
201202 Linux 두 디렉토리(폴더)의 차이점 비교(diff -rq) (0) | 2020.12.02 |
200803 TIL: 파이썬 인공지능 특강 (0) | 2020.08.03 |