DB와 Rails는 엄밀히 말하자면 다른 영역임!
Rails는 어플리케이션 서버에서 비즈니스 로직을 따로 관리하게 되어있음
이 둘이 긴밀하게 상호작용 할 수 있도록 도와주는 !!! 그것은 바로 ORM
~
ORM
?? Object Relational Mapping
통역 역할 ~
Ruby On Rails
는 Ruby
라는 언어를 사용하고 ~
PostgreSQL
은 SQL
이라는 프로그래밍 언어를 사용중~
두 언어는 서로 다른 언어죠? 이 둘을 통역해줄 수 있는 장치가 필요하겠죠?
그 역할을 바로 ORM
이 합니다 ~~~🎉
db폴더는 이제 닫고 ~ models 폴더를 열어봅시다 ~
어랏 option파일에 이미 뭐가 들어있네요?
belogs_to :item
이 mojo?
아까 rails g model option item:references
쳤던 것 기억납니까?
이걸 해주면 option이라는 모델이 item에 속해있다는 걸 알려주기 위해 belogs_to
를 넣어주게 됩니다 ~~
여기서 잠깐 ~~~ :item
이게 mojo? 💎Ruby
에만 있는 것 ~
뭐냐면 symbol
이라는 데이터타입입니다~
symbol
을 쓰는 이유는 매우매우 명확합니다~ 아래 코드로 쳌쳌🧨하시죠!
irb
를 켜면 Ruby 문법을 실행할 수 있습니다 ~
String
은 컴퓨터에 저장을 할 때 메모리 영역 중에서 stack
영역을 씁니다stack
영역을 쓰게 되면 특징이 mojo? 그 값을 선언할 때마다 메모리 주소를 새롭게 할당받게 됩니다string
데이터타입인 'hello'.object_id
는 매번 다른 메모리 주소를 불러오고 있고~ symbol
데이터타입인 :hello.object_id
는 같은 메모리 주소를 불러오고 있죠? 메모리 재사용~~~symbol
은 메모리를 Heap
영역에 저장해서 계속해서 메모리를 재사용~~symbol
을 사용하면서 💎Rails
는 자체적으로 메모리를 세이브하는 전략을 취함프로세스가 차지하고 있는 메모리의 구조
: 4개의 Segment 영역으로 나뉘어져 있다.(Code, Data, Heap, Stack)Heap VS Stack
Heap
- 프로그래머가 동적으로 사용하는 영역
- 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역
- 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됨
- 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.
Stack
- 지역변수, 매개변수, 복귀 번지 등이 저장되어 있는 프로그램이 자동으로 사용하는 임시 메모리
- 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸함
- 다른 세그먼트들이 하위 영역으로부터 할당되지만 Stack 세그먼트는 상위 영역부터 할당됨
- 스택 프레임(stack frame) : 스택 영역에 저장되는 함수의 호출 정보
- 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출함
- 후입선출(LIFO, Last-In First-Out) 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출됨
- 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됨