A Day In The Life

とあるプログラマの備忘録

データベース

Kubernetes上にRedis Sentinelを構築する

GCP環境でRedisを使う GCP には Cloud Memorystore という Redis 互換のマネージドサービスがあるのですが、対応している Redis のバージョンが古い(4系)ので自前で GKE 上に Redis を立てることにしました。どうせ立てるなら master/slave 構成のほうが良い…

PostGISでgeometry型からgeography型に変換するときは座標系に注意する

SRID=4612(JGD2000測地系+地理座標系)のgeometry型フィールドだとgeography型に変換できる postgres=> SELECT ST_SetSRID(geom, 4612)::geography FROM map WHERE id=1; st_setsrid ---------------------------------------------------- 01010000200412000…

iOS であつかうデータの種類と生存期間

内容を全面的に見直して以下の記事に集約しました。 iOS データ設計入門

H2は軽くていい

実験環境で使うデータベースにH2を採用しました。 これが軽くて非常に使いやすい。 少し前までHSQL DBを使ってましたがH2の方がはるかに使い勝手がいいです。 Oracleもいいけどスタンドアロンで手軽にやりたいならH2とか今流行の軽量データベースがお薦めで…

リレーショナル理論本当にわかってる?

データベース実践講義―エンジニアのためのリレーショナル理論オライリージャパンこのアイテムの詳細を見る リレーショナル理論の本です。 商用のリレーショナルデータベース、OracleやSQL Serverなどは本当の意味でリレーショナルデータベースとは呼べない、…

データ

システムで一番大切なものはデータだと思っている。 データの重複をなくし欲しいデータをいつでも簡単に取り出せる。 これが重要だと。 従ってデータベース設計がホントに大事な作業になってくるはず。 しかしデータベース設計に重点を置いているプロジェク…

DBMSの構造を知ってると何かと役に立つ

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み翔泳社このアイテムの詳細を見る 情報処理試験の勉強にもなりそうなので買った本です。 日ごろからデータベースを頻繁に使っているにもかかわらず、その仕組みとか構造って知らないことが多いです…

LIKE 句でワイルドカード文字の検索

JAVAでSQLを実行する時、PreparedStatementを使ってます。 これを使ってると文字列連結してSQL文を組み立てるよりもセキュリティー的に安心だしエスケープ文字(シングルクォーテーション、パーセント...etc)も心配しなくていいし普通は問題ないのです。 JDBC…

SQL*Plusの画面クリア

SQL*Plusで SQL>clear scrと打つと画面がクリアされます。 結構前からあったらいいのにな〜って思ってたのでちょっとうれしかった。 #大阪は粉雪が舞ってます。 #週末、東京ではコートいらないぐらい暖かかったのに...さむっ 参考 テクノドア〜のBlog

複数テーブルを一発INSERT

OracleではマルチテーブルINSERTという機能があって複数テーブルを一気に更新できます。 insert all into sample_table (id, name, value) values (1, 'TKISHIMO', 0) into sample_table2 (id, name, value) values (2, 'MHAYASHI', 0) select * from dual; …

ストアドプロシージャの作成

この前、テーブル全削除のPL/SQLを作成しました。 しかし毎回テキストを開いて貼り付けて実行って手順が面倒になってきたのでプロシージャとして作成することにしました。 基本構文は create or replace procedure なんですが久々だったので結構忘れちゃって…

カラム名の変更

昨日、間違えて古い定義のテーブルをインポートしちゃいました。 それでカラム名が何個か古くなってしまったのでカラム名だけ変更したいなと。。。 SQL ServerではSP_RENAMEを使えば簡単に変更できたんでOracleでもなんかあるだろうということで調べました。…

順序

Oracleで順序を作成するときは CREATE SEQUENCE TEST_SEQ START WITH 1 INCREMENT BY 1 MAXVALUE 9999999999 MINVALUE 1 CYCLE NOCACHE; と書けばOK。 参考 Oracle SQL 順序

SQL*Plusで数値の表示

SQL*Plusで検索結果を表示するとき、数値項目はデフォルトでは10桁までしか表示されません。 SQL> select -4444444444 from dual; -4444444444 ----------- -4.444E+09ちゃんと表示してくれませんね。 こういうときはset num 桁数で表示桁数の設定ができます…

SQL文の動的生成

OracleのPL/SQLでSQL文を動的に生成して実行するサンプルです。 declare wk_sql varchar2(1000); usertable user_tables%rowtype; cursor cu is select * from user_tables; begin open cu; loop fetch cu into usertable; exit when cu%notfound; wk_sql :=…

階層問い合わせ

テーブルにIDと親IDを持ち階層構造をあらわすテーブルがあるとき、階層で表示されると便利です。 Oracleではconnect by句を使ってデータの階層表示ができます。 select lpad(' ',2*(level)) || name name from emp start with parent_id is null connect by …

Oracleデータのインポート・エクスポート

今日久しぶりにデータのインポートとエクスポートをしました。 インポート imp user/password@接続文字列 tables=(テーブル名) file=c:/hoge.dmp log=c:/implog.txt fromuser=user touser=user ignore=y commit=yエクスポート exp user/password@接続文字列 …