mruby Advent Calendar 2015 の12日分の記事です。(12日に投稿したとは言っていない) PostgreSQLでmrubyを用いたユーザー定義関数の実装を可能にするplmrubyの開発を進めています。plmrubyによってデータベース内での実行が必要となる複雑なロジックを、mrubyの豊かな表現力を用いて記述することが可能になります。 plmrubyはWork In Progressであり安定版はリリースされていませんが、プロシージャ言語としての基本的な機能はある程度実装済みなので、以下でその機能を紹介します。 実装済み機能 スカラ関数 一般的な関数です。複数の値を引数として、一つの値を返します。 CREATE FUNCTION plmruby_test(keys text[], vals text[]) RETURNS text AS $$ h = Hash.ne
また、PostgreSQL にはいわゆる CLOB, BLOB のような巨大データ専用の型は存在せず、1GB までであれば text や bytea 型をそのまま使えます。1GB を超える場合はラージオブジェクトも利用できますが、アクセスや管理の方法にクセがあるためお奨めできません。数MBまでは text や bytea を使い、それを超えるようなら外部ファイルとして保持したほうが、むしろ安心して運用できるかと思います。 char と varchar, text の比較 PostgreSQL の文字列は以下のような特徴があります。 1. char(n) や varchar(n) の 'n' は「文字数」を表す 他のデータベースではバイト数を表すものもあるので注意しましょう。 2. char(n) は n 文字になるように末尾に空白を追加して保持する n 文字ぴったりで無い限り、末尾の空白の
tl;dr 結論から言うと全然難しくないです。 読み込む時はjsonのキーを指定してintやstringで読み込むか、jsonを丸ごと取得して構造体にunmarshalします。 書き込むときも構造体をmarshalしてSQLに渡すだけです。 テーブルの用意 ユーザ、データベースの作成は割愛します。 $ psql -U test_user test_db test_db=> CREATE TABLE jojo ( id serial, chapter int, data json ); INSERT INTO jojo VALUES (1, '{ "title": "ファントムブラッド", "character": { "hero": "ジョナサン・ジョースター" } }'); INSERT INTO jojo VALUES (2, '{ "title": "戦闘潮流", "characte
こんばんは、次男がようやく、トイレで大を出すようになってきたと思いっていたら、またここ数日次男がウンチをしてません。kjunichiです。 背景 Qiitaで qiita.com という記事を見かけて、Postgres.appでも、同様にライブラリのパスを指定しないと ビルドでこけるだろうなぁと思った。 そんな訳で、アイコンがなんともエキゾチックでお気に入りのPostgres.appを思い出した。 mruby-pgをPostgres.appでビルドする mruby-pgをcloneしてリンクのパスを以下の様に指定。 spec.linker.library_paths << `pg_config --libdir`.chomp Postgres.appのpg_configを以下の様にパスに追加 export PATH=$PATH:/Applications/Postgres.app/Cont
このTABLE定義であやういところはどこでしょう? サービスにどんなインシデントが発生したか想像できるでしょうか? CREATE TABLE reports ( id bigserial NOT NULL, user_id bigint NOT NULL, time_of_report timestamp without time zone NOT NULL, previous_report_id bigint REFERENCES reports (id), elapsed_time integer NOT NULL DEFAULT 0, CONSTRAINT reports_id_pkey PRIMARY KEY(id), CONSTRAINT reports_user_id_fkey FOREIGN KEY(user_id) REFERENCES users(id) MATCH SI
qiita.com 17日目です。 みなさん、PostgreSQLのDataSourceの実装には2種類あるの知っていましたか? (普段からPostgreSQLを使っている人なら知っていると思いますが)私は知りませんでした。。。 そこで、この恐怖のDataSourceについて書いておこうと思います。 1. はじめに 事の始まりはとある新規開発で、 アプリケーションサーバーや、データベースなど OSSを使う事が前提だったため、PostgreSQLを選んだのが始まりでした。 選んだというか選ばれていたというか・・・ アプリケーションサーバーはちょっと気になっていたGlassFishを使いました。 バグに遭遇したり色々ありましたが新規開発は色々仕組みを考えたりするので楽しいですね。 色んなライブラリを使ったり、最新バージョンをいち早く取り込んだり。 あぁ、こういうの楽しかった。 (今はExcel
— そーだい@初代ALF (@soudai1025) 2015, 8月 24 とブーメラン投げて見事に刺さってるので今から記事書く。 両サイドにはかなり厳しい話もするが俺の本音を聴いておけ(関白宣言) まぁ歴史の長いRDBなのでお互いの比較記事は沢山ある。 なのでマルチスレッド(MySQL)とマルチプロセス(PostgreSQL)だとかVACUUMだって話はしない。 むしろ実際に使ってみた際の違いをにフォーカスする。 1. SQLの違い 基本的にMySQLでやっていたことはPostgreSQL出来る。 しかし関数の挙動の違いは幾つかある。 例えば時間から曜日に該当する数字に変換した場合に MySQL → date_format(time,"%w") 0から始まり、日曜日に該当する PostgreSQL → to_char(time,'D') 1から始まり、日曜日に該当する など挙動に互換性
メモ。 調べた時のバージョンは、PostgreSQLは9.4.0で、Railsは4.2.0。 JSONBデータ型とはバイナリ型JSONの事。JSONBの"B"はバイナリ(binary)のB。 元々PostgreSQLでは9.2からJSON型に対応しており、9.4からJSONを独自バイナリ形式で格納するJSONB型が追加された。 JSONBの特徴をざっと書くと以下のような感じ データの正規化が行われ、入力結果が完全に保持されないケースがある(不要な要素の間の空白文字の削除、重複したキーがあった場合に後述したもののみ有効となる等)格納容量が大きくなる傾向にある。また、正規化が行われる為、格納処理は普通のJSON型の比べて遅い。検索がJSONと比べて格段に早い基本的に、検索に特化している感じらしい。 JSONBについての詳細は、@nuko_yokohamaさんのJSONBデータ型を使ってみようが
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
PostgreSQLカンファレンス2014に登壇してきたので資料をアップします。 今回は初カンファレンス参加でしたが 日曜から39℃を超える熱を出して死にそうになり、 なんとか体調を取り戻して朝からスタッフ業をし、 英語がぜんぜん出来ないのに控室では英語飛び交い、 セッションを二本こなし、 当日いきなり懇親会の司会業引き継ぎをされる というなかなかセクシーなスケジュールでした。 更にPostgreSQL アドベントカレンダーの担当日でそれはとっても嬉しいなって… 自分で切ったスケジュールながら過密で濃厚な一日を過ごすことが出来ました。 カンファレンスとしてはどのセッションも盛況でしたね。 特にハンズオンやチュートリアルのような初心者〜中級者のコマは立ち見が出るほどの大盛況でした。 (30人ぐらいの部屋に80人が押し寄せるようなセッションもありました) 私としてもガッツリDBエンジニア向けの
YAPCが終わり、夏も終わり、みなさんいかがお過ごしでしょうか。れもんです。季節感を先取りしてデザインを冬っぽい感じにしました。 さて、最近仕事でRedshiftをつかっておりまして、ご存じのない方に簡単に説明するとAWSで使えるマネージドで列指向でシェアードナッシングな分散データベースっていう説明でいいんでしょうか。あんまり定義の分野に明るくないのでとりあえずぼくはそんな認識で使っております。MPP! MPP! みたいな感じです。 で、「Goで行こう」というダジャレなのかどうかよくわからないことをぶち上げたというのと、BIツール的なところは比較的言語の作りに依存してどうこうみたいなハマリかたをしなさそうで新しい言語を投入するには無難だなというところで、Redshiftを叩くのをgolangでやっております。 RedshiftはPostgreSQLのドライバで接続可能なので、golangに
2013/11/17に開催された「Golang Cafe #4」についてのまとめです。 Go言語でも他の言語と同じようにデータベースへのアクセスを行うことができます。 今回はPostgreSQLを用いてGo言語での操作を試してみました。 事前準備 PostgreSQLのインストール 私の環境はWindows7 64ビット版です。こちらから64ビット版をダウンロードし、インストールします。windows版ですのでインストール中に初期化もされ、pgAdminもインストールされるのですぐに利用できます。 PostgreSQL用ドライバのインストール GOPATH直下にて go get コマンドを実行します。(go getコマンドを使用するためにはMercurialが必要です) $ go get github.com/lib/pq詳しいドキュメントはpq - GoDocにあります。また現在利用でき
2020-04-24追記 2021-08-23URL修正 より深く考察されている記事を見つけました。 BigQuery テーブル同士の一致判定 | Queuery 集合演算可能な2つのテーブル(カラムの数と型が同じテーブル)の差異を取得する。 例えば、対象テーブル(foo)の、ある時点のデータを別テーブル(foo_backup)として保存しておき、その内容の差異を取得する。 方法1 ( select * foo union all select * foo_backup ) except all ( select * foo intersect all select * foo_backup )
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く