主に20代前後の学生や社会人向けに休学、留学、英語、長期インターン、シェアハウス、転職、投資、プログラミングなどキャリアや海外に関する記事を書いています。筆者は複数カ国の留学経験もあれば、新卒の会社からレイオフされた経歴も持つ文系出身のソフトウェアエンジニアです。現在はフルリモートでVueとGoを使用しながらフリマアプリの開発に従事しています。タイトルが「文系エンジニア大学生の技術ブログ」なのは大学生時代に学んだ技術をアウトプットしようとしてブログを始めた名残です。
ソフトウェアエンジニア/プログラミングスクールメンター/トビタテ留学JAPAN 理系、融合・複合コース/カナダ・インド・アメリカ・イスラエル留学/海外インターン/技術:Ruby(Ruby on Rails)、Python(Flask、Django), My SQL,GCP,AWS, JavaScript,Heroku,Docker,Vue.js,Nuxt.js,Golang/アジャイル/スクラム開発
railsのデフォルトはint型
普段railsを触っているとマイグレーションファイルで簡単にデータベース(DB)周りを操作できてしまうので、意識しないと
DB周辺の知識を深める機会がありません。
-
マイグレーションファイル・・・active recordを介してDBを操作するファイルのこと。
例えば,Userテーブルで年齢のデータを扱うためにageというカラム名を作成する場合、
データ型を意識しなければならない理由として
データベースのパフォーマンス向上
させるためです。intではなくtinyintを使用するのは、
データベースの容量を節約させるため
であり、全ての値を確実に含めることができる最小のデータ型を使用します。例えば、先ほど年齢のデータ用にageカラムを作成しました。しかし、255歳を超えて生きる人は現代の人類ではありえません。そのように考えた時に
人の年齢をDBで扱う場合、型はtinyintで十分です。
逆にFacebookのような大企業がアカウントを管理する時はint型では足りない可能性があるので、bigint型を使用する必要があります。このように
DBのパフォーマンスを向上させるためにデータ型を意識する必要
があります。
railsのマイグレーションファイルでbigintやtinyintに設定する方法
tinyintを例に見ていくと、
tinyintを設定する方法は非常に簡単でマイグレーションファイルで
limit
を記述してあげるだけです。
Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+----------------+
| age | tinyint(4) | YES | | NULL | |
create_table :integer_tests do |t|
t.integer :integer1, limit: 1
t.integer :integer2, limit: 2
t.integer :integer3, limit: 3
t.integer :integer4, limit: 4
t.integer :integer5, limit: 5
t.integer :integer6, limit: 6
t.integer :integer7, limit: 7
t.integer :integer8, limit: 8
+----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+----------------+
| integer1 | tinyint(4) | YES | | NULL | |
| integer2 | smallint(6) | YES | | NULL | |
| integer3 | mediumint(9) | YES | | NULL | |
| integer4 | int(11) | YES | | NULL | |
| integer5 | bigint(20) | YES | | NULL | |
| integer6 | bigint(20) | YES | | NULL | |
| integer7 | bigint(20) | YES | | NULL | |
| integer8 | bigint(20) | YES | | NULL | |
+----------+------------------+------+-----+---------+----------------+
コメントを書く