[Ruby On Rails] ORM_ORM이란, symbol데이터타입

sunaaa·2021년 4월 12일
2

Ruby On Rails

목록 보기
7/20
post-custom-banner

DB와 Rails는 엄밀히 말하자면 다른 영역임!

Rails는 어플리케이션 서버에서 비즈니스 로직을 따로 관리하게 되어있음

이 둘이 긴밀하게 상호작용 할 수 있도록 도와주는 !!! 그것은 바로 ORM ~

ORM ?? Object Relational Mapping 통역 역할 ~
Ruby On RailsRuby라는 언어를 사용하고 ~
PostgreSQLSQL이라는 프로그래밍 언어를 사용중~
두 언어는 서로 다른 언어죠? 이 둘을 통역해줄 수 있는 장치가 필요하겠죠?
그 역할을 바로 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영역에 저장해서 계속해서 메모리를 재사용~~
    ✅ 자주 쓰이는 key값, 설정들에 있어서 symbol을 사용하면서 💎Rails는 자체적으로 메모리를 세이브하는 전략을 취함

더 알아보기

프로세스가 차지하고 있는 메모리의 구조
: 4개의 Segment 영역으로 나뉘어져 있다.(Code, Data, Heap, Stack)

Heap VS Stack

  1. Heap
  • 프로그래머가 동적으로 사용하는 영역
  • 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역
  • 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됨
  • 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.
  1. Stack
  • 지역변수, 매개변수, 복귀 번지 등이 저장되어 있는 프로그램이 자동으로 사용하는 임시 메모리
  • 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸함
  • 다른 세그먼트들이 하위 영역으로부터 할당되지만 Stack 세그먼트는 상위 영역부터 할당됨
  • 스택 프레임(stack frame) : 스택 영역에 저장되는 함수의 호출 정보
  • 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출함
  • 후입선출(LIFO, Last-In First-Out) 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출됨
  • 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됨
profile
Be Playful Front-end Developer
post-custom-banner

0개의 댓글