서론
사실 mysql을 사용하는 것은 생각보다 많이 쉽다.
줄 몇줄 추가뿐.. 이 계기로 mysql과 sqlite3의 차이점을 찾아봤다
mysql vs sqlite3
- 둘에게 각각 적절한 사용처가 있을지 찾아보고 비교해야 한다.
- 위 DBEngine 사이트를 보면
기준 | mysql | sqlite3 |
---|---|---|
DBModel | 관계형 DBMS | 관계형 DBMS |
License | open source | open source |
server | FreeBSD / Linux / OSX / Solaris / Windows | server-less |
xml support | yes | no |
support language | Ada / C / C# / C++ / D / Delphi / Eiffel / Erlang / Haskell /Java / JavaScript (Node.js) / Objective-C / OCaml / Perl / PHP / Python / Ruby / Scheme / Tcl | Actionscript / Ada / Basic / C / C# / C++ / D / Delphi / Forth / Fortran / Haskell / Java / JavaScript / Lisp / Lua / MatLab / Objective-C / OCaml / Perl / PHP / PL / SQL / Python / R / Ruby / Scala / Scheme / Smalltalk / Tcl |
Server-side scripts | yes | no |
둘의 큰 차이점을 나타내는 부분은 server-less라는 점. 둘의 각각 상대적인 장점이 뭐가 있을 지 찾아봐야한다.
- 위 링크에서 보면 (물론 장고 프로젝트로 고민하는 사람이지만 루비도 같은 ORM이니)
- 가벼운 앱, 싱글 유저가 사용할 때는 sqlite3가 나쁘지는 않다.
- 서버를 따로 두고 싶으면 mysql
- 괜히 sqlite쓰다가 mysql로 넘어가려고 하지마라!
- 개발용, 혼자 쓸때만 sqlite를 써라. 제발 production에서 제발 제발 쓰지마라 제발
- mysql이 환경설정은 더 걸리겠지만 그래도 mysql써라 등등의 의견이 있다. 크게 이견이 없이 단합되는것같다. 그러므로 앞으로 ROR개발을 할 때는 mysql을 사용하도록 하겠습니다.
만들어보기
- project를 만들었습니다.
- mysql2 gem을 추가한 뒤 $bundle install을 해줍니다.
gem 'mysql2'
-
mysql에 들어가 사용할 DB를 미리 만들겠습니다. 똑같이 sqltest로 이름을 하겠습니다. 아직 아무것도 없군요!
-
그리고 /config/database.yml 에서 환경을 설정해줍시다.
default: &default
adapter: mysql2
host: localhost
username: root
socket: /tmp/mysql.sock
development:
<<: *default
database: sqltest
test:
<<: *default
database: sqltest
production:
<<: *default
database: sqltest
- 그리고 잘 저장되는지 보기 위해 model과 controller를 만들어 보겠습니다. model의 이름은 sqlmodel입니다.
$ rails g model sqlmodel tit:string
$ rails g controller home index add
- 컨트롤러와
class HomeController < ApplicationController
def index
@allData = Sqlmodel.all
end
def add
@s = Sqlmodel.new(tit:params[:tit])
@s.save
redirect_to :back
end
end
- 뷰
<form action = '/home/add' method = 'get'>
<input type = 'text' name = 'tit'>
<button type = 'submit'>submit</button>
</form>
<% @allData.each do |p| %>
<p><%= p.tit %></p>
<% end %>
내용을 쳐서 출력을 시켜보겠습니다. 잘 나오네요!
터미널에서 보게 되면
못보던게 생겼네요
제 mysql에 잘 저장이 되는것을 볼 수 있습니다. 레일즈는 참 쉽군요