読者です 読者をやめる 読者になる 読者になる

データベースのインデックスについて

Rails データベース

はじめに

テーブルを作成するときにいろいろなオプションを設定できるので、いろいろ調べた。null: falseとかは理解しやすかったけどindex(インデックス)が理解に時間がかかったので調べたものを書きます。

index

indexとは

indexとは、特定のカラムからデータを取得する際にテーブルの中の特定のカラムのデータを複製し検索が行いやすいようにしたもの。

indexのメリット

  • データの読み込み・取得が早くなる。

indexのデメリット

  • 書き込みの速度が倍かかる。

indexの使いどころ

indexを貼り、カラムを検索しやすいように整理しデータの読み込み・取得が早くなる反面、そのカラムのデータを複製する処理が走るので、書き込みの速度に倍かかる。かつ、たいしたデータ量のやアクセスのないカラムに張っても、大した速度改善は見込めない。そのため、基本的にindexはある程度多くのデータを格納するテーブルの、格納される値がそれぞれ異なるようなカラムの中で、検索がよく行われるカラムに対して張ると効果的。

indexの張り方

テーブルの作成時に貼る場合

indexとtrueにするだけ。

class Createテーブル名 < ActiveRecord::Migration
  def change
    create_table :テーブル名 do |t|
      t.型 :カラム名, index: true
    end
  end
end

後からマイグレーションファイルを作成して貼る場合

rails generate migration add_index_テーブル名_カラム名コマンドを実行してmigrationファイルを作成する。

class AddIndexToテーブル名 < ActiveRecord::Migration
  def change
    add_index :テーブル名, カラム名
  end
end

参考

Rails チュートリアルを1週間で終わらせる 2日目

Rails プログラミング Railsチュートリアル

Railsチュートリアル2日目

進捗

2章終了

学び

Scaffoldを通してのRESTなどのRailsアーキテクチャを学んだ。

知らなかった語句

Webインターフェイス

Webインターフェイスという語句は見つからなかったけど、Webユーザーインターフェイスはあったので同じようなものだと思うのでこちらに。 ウェブユーザーインターフェースとは、ウェブブラウザで表示したウェブサイト、ウェブアプリケーションのユーザインタフェースのことで。

HTTPプロトコル

HTTP(ハイパーテキスト・トランスファー・プロトコル)とは、WebブラウザとWebサーバの間でHTMLなどのコンテンツの送受信に用いられる通信プロトコルである。 HTML (HyperText Markup Language) や XML (Extensible Markup Language) によって記述されたハイパーテキストの転送を主な目的としているが、それ以外にも、バイナリ形式の画像、音声を含め、様々なデータを扱うことが可能である。その汎用性からセンサーからの定期的なデータの取得などにも用いられる。 HTTPはリクエスト-レスポンス型のプロトコルであり、クライアントがサーバにリクエストメッセージを送信する。 基本的な考え方は非常に単純で、「何を」「どうして」欲しいのかを伝える。URLが「何を」、メソッドが「どうして」に当たる。 サーバはこれにレスポンスメッセージを返し、基本的にこの時点で初期状態に戻る。つまり、サーバはクライアントの状態を保存しない。

プロトコル

プロトコルとは、複数の主体が滞りなく信号やデータ、情報を相互に伝送できるよう、あらかじめ決められた約束事や手順の集合のこと。 - プロトコル

REST

RESTは、インターネットそのものやWebアプリケーションなどの、分散/ネットワーク化されたシステムやアプリケーションを構築するためのアーキテクチャのスタイルの1つです。REST理論そのものはかなり抽象的ですが、RailsアプリケーションにおけるRESTとは、アプリケーションを構成するコンポーネント (ユーザーやマイクロポストなど) を「リソース」としてモデル化することを指します。

Active Record

Active Recordとは、MVCで言うところのM、つまりモデルに相当するものであり、ビジネスデータとビジネスロジックを表すシステムの階層です。Active Recordは、データベースに恒久的に保存される必要のあるビジネスオブジェクトの作成と利用を円滑に行なえるようにします。

Active Record::BASE

Active Record::BASEとは、ActiveRecordが提供するベースクラス。ActiveRecord::Baseクラスを継承したことによって、作成したモデルオブジェクトはデータベースにアクセスできるようになり、データベースのカラムをあたかもRubyの属性のように扱えるようになります。

Rails チュートリアルを1週間で終わらせる 1日目

Rails Railsチュートリアル プログラミング

はじめに

お題の通りRails チュートリアルを1週間で終わらせることに挑戦します。仕事をしながらで進めるのは夜や休日になりそうですが、なんとかやり遂げられればと思います。

書くこと

進捗と学びは必ず書きます。他には疑問とそれを解消するために役立った記事などを紹介する予定です。随時最適化して増やしたり削ったりしていきます。 初心者が頑張ってるなと温かい目で見守ってもらえればと思います。次の見出しから早速いきます。 PS 心が弱いので、応援のコメントやアドバイス等もらえれば泣いて喜びます!

Railsチュートリアル1日目

進捗

1章終わり

学び

Unixコマンド

知っているコマンドも多かったが知らない(忘れてた)コマンドもあったのでここに残す。

コマンド 説明
rmdir 空のティレクトリを削除
rm -rf 中身のあるディレクトリを削除

ディレクトリの意味

こちらも知らないものもあったので。

ディレクト 説明
public/ エラーページなど、一般(Webブラウザなど)に直接公開するデータ
tmp/ 一時ファイル
vendor サードパーティプラグイン
vendor/assets サードパーティプラグインやgemで使用するCSS, JavaScritpファイル, 画像などのアセット
Rakefile rakeコマンドで使用可能なタスク
config.ru Rackミドルウェア用の設定ファイル

Gitに関して

これまで何となく使ってきたので、紹介された本を後で読もうと思う。 !!Git Pro

知らなかった語句

サードパーティ

サードパーティとは、第三者を意味する英単語。自分のアプリケーションではないもの。

Rack

Rackは、Rubyのウェブアプリケーションに対して、最小限でモジュール化されていて、応用の効くインターフェイスを提供します。RackはHTTPリクエストとレスポンスを可能なかぎり簡単な方法でラッピングすることで、ウェブサーバー、ウェブフレームワーク、その間に位置するソフトウェア (ミドルウェアと呼ばれています) のAPIを一つのメソッド呼び出しの形にまとる。

よくわからんからあとで以下のリンク集を熟読(もう眠いから明日)