「ポストグレス」「ポストグレスキューエル」などとも読む。 オープンソース系RDBMS(Relational Database Management System) のひとつ。 最近のバージョンでは(SQL99の仕様に近い)オブジェクト指向リレーショナルデータベースとしての機能も充実してきており、その高機能さが特徴となっている。 同じオープンソース系RDBMSでも、機能よりも速度と扱いやすさを選んだMySQLとは対照的である。
はじめに 趣味でやってるプログラミングで利用しているDBなんですが、テーブルに項目追加することになりました。 ということでテーブルへのカラム追加について簡単に記載します。 記載の仕方 ALTER TABLE table_name ADD COLUMN column_name data_type; 余談なんですが カラムの追加する位置を指定するっていうのは可能なんですかね?と思い調べてみましたが、MySQL以外はできない模様。逆にMySQLはできるんですね…。 何使ってても基本線はバックアップテーブル作成、カラム追加した新規テーブル作成、作成した新規テーブルにバックアップテーブルのデータをインサ…
初めまして。ゼネット新人の佐藤です。 現在私はJava、JDBC、PostgreSQLを使ったWEBアプリケーション研修をしています。 その際にSQLインジェクションの脆弱性がある危険なコードを書いてしまったことがあります。 そのため、今回は知らず知らずのうちに危険なコーディングをしないように、JavaでできるSQLインジェクションの対策方法について解説していこうと思います。 PreparedStatementの使用 プレースホルダとは? エスケープ処理とは? PreparedStatementを使用した対策例 入力フォームに入力された悪意のあるSQL文の例 PreparedStatement…
技術広報のyayawowoです。 皆様、SQLを日頃お使いでしょうか? 今回は、「データを追加」する際に欠かせないINSERT文の使い方と、おすすめの書籍をご紹介します。 INSERT文の使い方を習得いただくため、お手元で実行可能なSQL文付きで解説します。 是非、実践しながら習得ください! ※本説明では、PostgreSQL 9.6を利用します。
こんにちは株式会社ゼネット新人の藤﨑です。先日SQL文を書く際、副問い合わせにかなり苦戦しました…。 私と同じようにJava初心者の方、副問い合わせで躓いた方に ぜひ読んでほしいです。 1.はじめに 2.実際に間違えた具体例 ・SELECT句での副問い合わせについて 3.おわりに 1.はじめに 私は、Java経験が現在3か月の初心者です。 初心者の私が間違えた点を紹介していきます。 2.実際に間違えた具体例 ・SELECT句での副問い合わせについて 私が一番間違えた点は、「副問い合わせで1行を指定しているか」基本的にSELECT句では1行を取得しなければなりません。 私はSELECT句での副問…
コンテナ技術の勉強として、DockerでアプリとDBをつないでみた。 その時にポートの設定で少し詰まったところと、検証してみてわかったことがあったので、備忘録。 イメージ それぞれの違い docker run で構築する場合の手順 1. ネットワークを作成する 2. アプリ側のコンテナを作成する 2-1. アプリケーション定義ファイルの作成 2-2. Dockerfileの作成 2-3. イメージの作成 2-4. コンテナの立ち上げ 3. DB側のコンテナを作成する 3-1. DB側のコンテナの立ち上げ docker-compose で構築する場合の手順 1. docker-compose.y…
技術広報のyayawowoです。 SQLの中でも、良く利用されるUPDATE文ですが、 今回はSQL入門編としまして、 UPDATE文の基本~応用をご紹介します! ※本説明では、PostgreSQL 9.6を利用します。
SQLインジェクションの対策として、根本的なものとしては、プレースホルダの方で対応するのが最善。(参考:安全なウェブサイトの作り方 - 1.1 SQLインジェクション) 今回は、保険的な対策の『データベースアカウントに適切な権限を与える』に取り組んだ。 まずは、memoDBにパスワード付きユーザを作る。 memoDB=# CREATE USER goruchan PASSWORD 'hogehoge'; CREATE ROLE memoDB=# SELECT usename FROM pg_user; usename ---------- goruchan (1 rows) 次に作ったユーザに…
こんにちは、たびとです。 docker を始めるとサーバを2台以上作って、 例えば Web サーバに置いたアプリから DB を参照したいと思ったことはありませんか?
技術広報のyayawowoです。 皆様、SQLのDISTINCTはご存知でしょうか? DISTINCTを覚えることにより、SQLの実行結果がとても見やすくなります! 本記事では、DISTINCTの基本的な使い方、GROUP BYとの違いなどを説明していきたいと思います。 DISTINCTをマスターし、業務効率化を目指しましょう!! ◆ PostgreSQL 関連記事 ・【SQL入門】UPDATE まとめ ・RDBMSとDBMSについて【初心者向け】 ・SQLの基本【まとめ】 ・【RDBMS】PostgreSQLインストール・コマンド入門編 DISTINCTとは DISTINCTの使い方 DIS…
こんにちは。DIGGLEエンジニアのzakkyです。 遂に今回で最終回となります。レポート(多軸分析)の集計処理部分のパフォーマンス向上施策の第5弾です。 前回までの記事の紹介 diggle.engineer diggle.engineer diggle.engineer diggle.engineer 今回のお題 今回はapartmentに対してPRを出すに至ったあれやこれやをご紹介します。 書かないこと 以下の内容は含みませんので予めご了承ください Rails、Apartmentの導入などの基礎的な部分 apartmentの説明 どれくらい速くなったのか 前回も記載しましたが、以下が今回改…
エンジニア・プログラマーの学習に約立つコンテンツのセール情報を集めました 1位 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル ¥24,000 → ¥1,840 92%OFF!! ⭐ ⭐ ⭐ ⭐ ⭐ (18,123件) 現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です! 2位 【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 初級編 - ¥15,000 → ¥2,08…
GraphQLは銀の弾丸か 前口上 Webやアプリ開発において、サーバー間やサーバークライアント間でデータを受け渡す方式には色々なものがあります。 古くはSOAPやXML、最近のWEB APIはほとんどの場合JSONのREST API、マイクロサービスならProtocol BuffersでgRPCが多いところでしょうか。 GraphQLはFacebookによって開発されたAPI用の言語です。一般に少ないリクエスト回数で柔軟にデータを取得できるのが利点とされています。一方で、使い所を選ぶツールでもあるので今回取り上げてみます。 GraphQLの基本構造 まずJSON API とGraphQLを比…
「新しいLinuxの教科書」という書籍でLinuxについて学びはじめました。 私は職業エンジニアではありませんが、個人開発でWebサービスの開発を行っています。Webサービスを開発しているとLinuxコマンドを使用することは避けて通れないと思いますが、これまでは開発時にその時々で必要なコマンドを調べながら手探りで開発してきたようなところがあり、あまり深くLinuxについて理解しないまま今日に至っています。そこで一度体系的にLinuxを学んでみようと思い学習を始めました。 また、学び始めるにあたり理解をより深めるために学習内容をこのブログにアウトプットしていきたいと考えています。最初の投稿はLi…
こんにちはー。 以前作ったRails製のWebアプリケーションをサーバに置いて動かしてみた話です。 結論からいうと、今回はHerokuというサービスを使って稼働させてみました。 理由云々なんかはそれなりにあったりもしますが、それはまた別の機会に書くとしまして、やったことを簡単に振り返ってみたいと思います。 Herokuとは? どうやって作る? Herokuアカウントを作る。 Heroku スターターガイドに沿って作業をすすめる。 Heroku CLIのインストールでつまづく pg gem の追加は無視してはいけない。 まとめ「いま楽しいこと」に集中! Herokuとは? サーバ構築やメンテナン…
エンジニア・プログラマーの学習に約立つコンテンツのセール情報を集めました 1位 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル ¥24,000 → ¥1,960 92%OFF!! ⭐ ⭐ ⭐ ⭐ ⭐ (18,116件) 現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です! 2位 【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 初級編 - ¥15,000 → ¥1,84…
記事の目的 自分が忘れないように! create, update, delete は端折るけど、まあどうにかなるでしょう もしかしたら N+1 の動きがちょっと怪しいかも 間違ってたら申し訳ないので使うときにはちゃんと確認して! (数ヶ月がけでダラダラこの記事を書いてたら確認する気力が失せた) 補足 Table から取るやつが DSL, Entity が取るやつが DAO qiita.com 今回の記事では JOIN したテーブルへの操作がメインだけど、JOIN なしのサンプルはこの記事がわかりやすい! 1:N のやつ ついでに Enum も使う DDL ガバガバ どういうテーブルか分かりにく…
TL;DR 登録関数とそれを呼び出す関数がそれぞれsuspend関数か否かに関わらず、ロールバックは成功するようだった H2とPostgres両方でこの結果となった ただし、呼び出し関数がsuspend関数で、coroutineScopeを切って登録関数を呼び出した際に不可解な挙動が生じたため、注意が必要 文脈 jOOQ/R2DBCでロールバックできることが確認できたので、この文脈は読み飛ばして下さい。 qiita.com 自分が調査した限り、Spring 2.7.2で、jOOQ 3.16.4をR2DBC接続で利用する場合、Transactionalアノテーションを利用してのロールバックは効き…
僕は以下の3つのツールを複数プラットフォーム向けにクロスコンパイルしてバイナリ配布しており、以下のように全て異なる言語で開発している。 Go: sqldef Rust: xremap mruby: mitamae クロスコンパイルに苦労している話をするとZigを使ってみたらいいんじゃないかと言われることがあり、周りでもZigが何となく流行り始めた気がするので、これらのツールに実際自分で使ってみてどうだったかという事例を紹介したい。 Zigとは Zigはそもそもプログラミング言語なのだが、C/C++とのinteropがやりやすい言語なようで、おそらくそれに必要でLLVMベースのC/C++ツールチ…
概要 MongoDBやPostgreSQLでは認証時にSCRAM (Salted Challenge Response Authentication Mechanism) と呼ばれる認証方式を採用しています。 これは従来のチャレンジレスポンス型の認証を改善したものであり、パスワード(ハッシュ値含む)といった機密情報をサーバ側で保持せずとも認証できる仕組みです。 今回はそのSCRAMについて図を交えて説明します。 シーケンス SCRAMのシーケンスは以下です。
エンジニア・プログラマーの学習に約立つコンテンツのセール情報を集めました 1位 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル ¥24,000 → ¥1,840 92%OFF!! ⭐ ⭐ ⭐ ⭐ ⭐ (18,106件) 現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です! 2位 【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 初級編 - ¥15,000 → ¥2,08…
SinatraのメモアプリをDB化するにあたりpg gemを使いPostgreSQLに接続しSQLを実行する方法を調べました。 結論 次の手順でpg gemでPostgreSQLへ接続しSQLを実行できる。 PostgreSQLに接続するためのPGオブジェクトを作成。 作成したPGオブジェクトからSQLを実行するメソッドを呼び出す。 require 'pg' # PGオブジェクト作成、SQL実行 connection = PG::Connection.new(dbname: 'memo_app') all_memos = connection.exec('SELECT * FROM memos…
2022/08/11分のコミットです。 CHANGELOGへの追加はありませんでした。 Improve use_big_decimal_serializer documentation rails guideのConfiguring Rails Applications、 railties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.ttのdocの修正です。 use_big_decimal_serializerのdocのタイポ、言い回しの修正を行っています。…
これは、なにをしたくて書いたもの? JUnitを使ったテストでコンテナの利用をサポートする、Testcontainersというライブラリがあります。 Testcontainers こう書くとJava向けのライブラリのようなのですが、他の言語でも扱えるようなので試してみることにしました。 今回は、Node.jsで扱います。 Testcontainers 最初に書きましたが、TestcontainersはJUnitでのテストをサポートするJavaのライブラリです。 Testcontainers is a Java library that supports JUnit tests, providi…