やわらかテック

興味のあること。業務を通して得られた発見。個人的に試してみたことをアウトプットしています🍵

データベース

PostgreSQLでboolean型のカラムを持つレコードを取得するとt, fとなる

Rubyでpg gemを使って、postgresqlに接続してクエリの実行結果を見ていたところ、boolean型のカラムの戻り値がTRUEの場合にt、FALSEの場合にfとなる現象を確認しました。 CREATE TABLE test1 (a boolean, b text); INSERT INTO test1 VALUES (TRUE, 'sic est…

トランザクションがあれば安心ではないのでRailsでもロックをかけたい

Railsでトランザクションを扱いたい時はActiveRecordに実装されたtransactionメソッドを呼び出します。 ActiveRecord::Base::transaction do : end 今までRailsでトランザクションのブロックを宣言した時は、他のトランザクションからデータの取得、更新は出…

Railsのマイグレーションファイルでt.stringを使うときはlimitを指定してほしい

Railsではマイグレーションファイルを作成してマイグレートを実行することで、テーブルが作成されます。 非常に便利で手軽にテーブルの定義・作成ができるのですが、マイグレートされた結果、どのような型が選択されるのかが隠蔽化されるという問題があると…

中間テーブルには複合インデックスと単一インデックスどちらを作成すれば良いのか

データベースの設計において正規化の結果、中間テーブルを作ることがよくあると思います。 以下のようなテーブル群があったとします。登録されたユーザーと登録された商品を誰が出品した商品なのかを中間テーブルへ記録しています。 users products user_pro…

スプラトゥーン3のER図について考える【キャラクター編】

こちらの記事を見て、自分も別のテーマでやってみたいと思います。 ちょうど同じ任天堂のスプラトゥーン3にドハマりしているので、スプラトゥーン3を題材にやってみます。 qiita.com なかなか、新規にデータベース設計をすることはないので、良い練習になり…

M1mac+homebrewでpostgresql.confがある場所

探してみるも見つからず SQLの統計情報の記録の設定しようと思い、以下を参考にpostgresql.confを探してみるも見つからず... stackoverflow.com homebrewを使っているところは同じようだけど、どうやらOSが違う、いやM1macなのが原因かと思い調べているとや…

postgresqlにおけるテーブルスキャンの実行例

テーブルスキャン postgresqlでは、テーブルスキャンに該当する演算子が5つあります。 Seq scan: インデックスを使用せず、全件を検索 Index scan: インデックスを使用してスキャン Bitmap scan: ビットマップを使用してスキャン Index only scan: 問い合わ…

【SQL】結合によって結合元テーブルの行数が増えるケースについて

質問サイトを巡回中に発見 LEFT JOINを実行した際に、NULLの値を持つレコードが増えるケースについては認知していましたが、ただのJOINの時にもレコード数が増えることを経験しました。 SQLに詳しい方から見れば、当たり前でしょと思われるかもしれませんが…

スッキリわかるSQL第3版の発売に合わせて手元PCで実行できるようになっていた

SQLの習得にはスッキリわかるSQLでしょ 私がSQLが全く分からなかった時に非常にお世話になったのがインプレスから出版されている「スッキリわかるSQL入門」という書籍です。 www.okb-shelf.work 対話形式で図やイラストが多く、SQLをほとんど全く知らなかっ…

pandasでの保存形式はcsv、h5、pklでどれが良いのか

h5というファイル形式があることを知る オライリーから発売されたpythonではじめるアルゴリズムトレードを読み進めていた所、金融の取引データをpandas.DataFrameからh5という形式のファイルに出力していました。h5というファイルは階層的データを扱うための…

【2022年版】DB-ENGINESよりデータベースの人気ランキングを見てみる

海外のDB-ENGINESというサイトで紹介されています。以下の画像は2022年5月度の集計結果です。 データベースランキング Oracle MySQL Microsoft SQL Server PostgreSql MongoDB 1位から5位まではランキングにほとんど変更がないようで、ほとんどがRDBです。自…

pythonでブルームフィルターを作って覚える

ブルームフィルター(Bloom Filter)とは ブルームフィルターというのは1970年にブルームさんが作った確率的データ構造と呼ばれるデータ構造の1つです。 データ構造というのは 配列 連想配列 リスト などをイメージしてもらえば良いのですが、確率的データ構造…

モチベーションがなくなった結果、データベースについて2ヶ月間勉強した

概要 新卒4年目にして業務の慢性化、スキルアップの実感の無さからモチベーションが低下した 得た知識が業務で高確率で役に立つ知識(投資効果の高い)を得ようと思い立つ 投資効果の高いスキルはほぼ100%どのプロジェクトでも使われるデータベースだと考えた …