タグ

sqlに関するThailandMethodのブックマーク (28)

  • リレーショナルデータベース設計の完全ガイド - Qiita

    はじめに リレーショナルデータベース設計の世界へようこそ!このガイドでは、データベース設計の基から応用まで、幅広くカバーしていきます。一緒に学び、理解を深めていきましょう。 リレーショナルデータベースとは リレーショナルデータベースとは、データを表(テーブル)形式で整理・管理するシステムのことです。各テーブルは行(レコード)と列(フィールド)で構成され、情報を効率的に保存・検索できます。 例えば、顧客情報や注文履歴を別々のテーブルで管理し、共通のキー(例えば顧客ID)で関連付けることで、必要な情報を簡単に取得できます。このような構造により、データの一貫性や整合性を保ちながら、複雑なデータ操作や分析が可能になります。 ガイドの目的と構成 このガイドの目的は、リレーショナルデータベース設計の基概念から高度なトピックまでを体系的に学び、実践的なスキルを身につけることです。各章では、理論的な

  • 【golang】sqlcコマンドで「SQLクエリから型安全なGoコードを生成」し、生産性を上げたい

    golangsqlcコマンドで「SQLクエリから型安全なGoコードを生成」し、生産性を上げたい by nao · 2022年6月25日 前書き:sqlcとは 記事は、kyleconroy/sqlcの基的な情報を紹介します。 sqlcは、DBスキーマ(DBテーブル定義)、SQLクエリ定義、設定ファイルの3点をインプットとして、型安全なCRUDコード + DBテーブルに対応したモデル(構造体)を自動生成します。ここでのモデルの自動生成には、複数テーブルをJOINしたクエリ用の構造体も含まれます。 個人的な視点では、sqlcは「SQLクエリを検証してから、そのクエリを実行するGolangコードを書いて、クエリ結果を受け取るための構造体を書くのが大変」という課題を解決するツールです。独自のDSL(Domain Specific Language)は殆ど登場しないので、SQLをゴリゴリ書ける

    【golang】sqlcコマンドで「SQLクエリから型安全なGoコードを生成」し、生産性を上げたい
  • Go の sql.DB がコネクションプールを管理する仕組み

    Godatabase/sql パッケージ の DB 構造体 は、データベースへのコネクションプールを管理し、かつスレッドセーフ (goroutine セーフと言ったほうが良いのだろうか…?) にそれらの接続を使用できることを保証している。 ドキュメント にも次のように書かれている。 DB is a database handle representing a pool of zero or more underlying connections. It’s safe for concurrent use by multiple goroutines. こちらの基的な実装内容と、動作を制御するパラメータについて調べてみた。 基礎知識のおさらい database/sql パッケージはデータストアの実装によらない一般的な SQL のインタフェースを提供している。具体的なデータストアへの接

    Go の sql.DB がコネクションプールを管理する仕組み
  • SQLスタイルガイド · SQL style guide by Simon Holywell

    概要 全般 推奨 非推奨 命名規則 通則 表 列 別名、相関名 ストアド・プロシージャ 統一的接尾辞 問合せ文 予約語 空白類 インデント 望ましい形式 Create文 データ型の選択 デフォルト値の指定 制約とキー 非推奨設計 付録 予約語リファレンス SQLスタイルガイド(日語訳) 日語訳について 日語訳は誤訳や原文の最新版に追随していない恐れがあります。誤訳や改善点があれば、GitHubのissueまたはpull requestを使用するか、Twitterでお知らせください。 翻訳: 久利史之 @nkuritw 概要 このガイドラインは利用の他、forkしたり、自分自身のものに改変したりすることができます。ここで大事なのはスタイルを選択しそれを踏襲することです。変更の提案やバグの修正にはGitHubのissueまたはpull requestを使用してください。 このガイドライン

  • なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 『SQLパフォーマンス詳解』の翻訳者の松浦隼人さんに、8つの「SQLが重たくなる原因とその対策」を聞きました。システムのボトルネックになるような「問題のあるSQL」を回避するノウハウを学びましょう。 データの操作や定義をする言語「SQL」は、どのような領域を担うエンジニアにとっても必修科目です。しかし、その仕様をきちんと理解し、パフォーマンスに優れたSQLを書ける方はそれほど多くありません。問題のあるSQLを書いてしまい、知らぬ間にそれがシステムのボトルネックになってしまう事態はよく発生します。 では、どうすればそうした事態を回避できるのでしょうか? そのノウハウを学ぶため、今回は『SQLパフォーマンス詳解』の翻訳者であり、自身もエンジニアでもある松浦隼人(まつうら・はやと/@dblmkt)さんに8つ

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • q - Text as Data

    q - Run SQL directly on CSV or TSV files¶ Overview¶ q's purpose is to bring SQL expressive power to the Linux command line by providing easy access to text as actual data, and allowing direct access to multi-file sqlite3 databases. q <flags> <sql-query> q allows the following: Performing SQL-like statements directly on tabular text data, auto-caching the data in order to accelerate additional quer

    q - Text as Data
  • 分析関数の衝撃一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    分析関数の衝撃一覧
  • なぜMySQLのサブクエリは遅いのか。

    よくMySQLはサブクエリが弱いと言われるが、これは当だろうか?半分は当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし

    なぜMySQLのサブクエリは遅いのか。
  • SQL style guide by Simon Holywell

    Overview General Do Avoid Naming conventions General Tables Columns Aliasing or correlations Stored procedures Uniform suffixes Query syntax Reserved words White space Indentation Preferred formalisms Create syntax Choosing data types Specifying default values Constraints and keys Designs to avoid Appendix Reserved keyword reference Column data types SQL style guide Overview You can use this set o

  • qpstudyで発表したスライドをアップロードしました。

    日、qpstudyで「データベースとは」という内容について、そして「リレーショナルモデルとは」という内容について話す機会を頂いた。リレーショナルモデルという硬い内容であったにも関わらず、出席者の皆さんには最後まで良い反応をして頂けたように思う。実はリレーショナルモデルについて誤解している、あるいは知らない人が当に多い、そして良い解説書がないということを普段問題として感じており、そういった背景から今回qpstudyの話を引き受けさせて貰った。今回発表した内容が皆さんのお役に立てば幸いである。 発表の内容はほぼ現在WEB+DB PRESSで連載している「理論で学ぶSQL再入門」のいくつかの回のものを要約したものになっている。連載ではさらに詳しい内容について説明しているので、興味のある人はぜひWEB+DB PRESSのバックナンバー(連載はVol.68〜)を購入して頂きたい。 日発表したス

    qpstudyで発表したスライドをアップロードしました。
  • NoSQLデータモデリング技法

    NoSQLデータモデリング技法.markdown #NoSQLデータモデリング技法 原文:NoSQL Data Modeling Techniques « Highly Scalable Blog I translated this article for study. contact matope[dot]ono[gmail] if any problem. NoSQLデータベースはスケーラビリティ、パフォーマンス、一貫性といった様々な非機能要件から比較される。NoSQLのこの側面は実践と理論の両面からよく研究されている。ある種の非機能特性はNoSQLを利用する主な動機であり、NoSQLシステムによく適用されるCAP定理がそうであるように分散システムの基的原則だからだ。一方で、NoSQLデータモデリングはあまり研究されておらず、リレーショナルデータベースに見られるようなシステマティック

    NoSQLデータモデリング技法
  • SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?

    https://2021.pycon.jp/time-table/?id=273396 Webアプリ開発とデータベースマイグレーションには密接な関係があり、Pythonでよく採用されるDjangoSQLAlchemyには、DBのスキーマを変更するマイグレーション機能があります。一般的に、プログラムを実装するときはリポジトリでブランチを作りそれぞれのブランチで実装作業を進めます。Webアプリの開発でも同様ですが、各ブランチDBスキーマを変更する場合には注意が必要です。例えば、複数のブランチで同じテーブルのカラムを追加して使いたい場合や、DBスキーマの変更が競合する場合は、ブランチのマージ時に競合してしまいます。多くの機能を並行開発したり、マージするまでの期間が長い場合には、このような競合が増えてしまいます。 このトークでは、Djangoを例に、データベースマイグレーションの仕組みから、実

    SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
    ThailandMethod
    ThailandMethod 2012/12/08
    [O/R mapper]
  • トランザクションデータ(とマスターデータ)について思うところ - 急がば回れ、選ぶなら近道

    業務系のデータ処理では、大きくはトランザクションとマスターに分かれる。 マスターデータは特に、モデルや制御の方法が何かと面倒くさいので、よく議論になる。「マスターデータの管理の手法」というセミナーまで定期的に普通に開かれることも多い。他方、トランザクションデータ(以下TXデータ)は、普通に受け渡しのデータなので、フラットにダラダラ書いておけばよい、という扱いが大抵になる。そもそもER志向でモデルを設計すると、ほとんどは図面はマスターで占められ、TXデータはやたらなんか大量のフィールドを持つ大きなクラスがあるわいね、という扱いも多い。 あと、設計の観点からいうと、ERベースだとマスター設計が花形になる。まぁわかりやすいし、設計作業がしやすい。マスターは「構造」になり、TXデータは「構造」になりにくい。設計者は「構造」が好きだ。良くできた設計は確かに堅牢で、一定の変化にも追随できる。ある種の「

    トランザクションデータ(とマスターデータ)について思うところ - 急がば回れ、選ぶなら近道
  • SQLとJSONをNode.js上で組み合わせた新言語「ql.io」をeBayが公開

    eBayが、JavaScriptアプリケーションからSQL文のような形式でデータベースへの問い合わせを記述できるDSL(ドメイン固有言語)のql.ioを発表。オープンソースとして公開しました。 現在、多くのWebアプリケーションが、バックエンドとのデータのやりとりにHTTPをベースにしたAPIを用いています。しかし、WebベースのAPIによってデータを取り出すのは、プログラマにとって実は手間のかかることです。 例えば、キーワードを入力すると関連する商品の名前、詳細、購入者の評価をユーザーに表示する、というWebアプリケーションでは、まずキーワードでデータベースを検索して商品IDを取得し、今度はその商品IDをキーにして名前や概要、評価の情報を取得する、といったように、APIを繰り返し呼び出す必要があります。 ql.ioはこうした内容をSQLのように分かりやすい記述で実現するだけでなく、複数の

    SQLとJSONをNode.js上で組み合わせた新言語「ql.io」をeBayが公開
  • NoSQLとSQLについて - SQLer 生島勘富 のブログ

    NoSQL(Not Only SQL)とは、SQLを使わないKVS(Key Value Store)などを指しますが、最近流行のキーワードです。今日はNoSQLについて。 SQL英語であり仕様書である SQL英語であり仕様書である。と書いてきました。 SQLは、プログラム(アルゴリズム)を組むことができない文系の事務員が、英語的記述で書けば結果が得られるというものです。SQL文中にアルゴリズムは存在しません。 例えば、次のようなテーブルをご用意ください。 TEST_TABLE ID NUMBER 主キー NAME VARCHAR(20) IDに1から1,000,000 NAME 名前のテストデータ この100万件のデータが入ったこのテーブルを 1) SELECT * FROM TEST_TABLE WHERE ID = 1 2) SELECT * FROM TEST_TABLE WHE

    NoSQLとSQLについて - SQLer 生島勘富 のブログ
  • SQL Injection Cheat Sheet | Invicti

    Use our SQL Injection Cheat Sheet to learn about the different variants of the SQL injection vulnerability. In this cheat sheet you can find detailed technical information about SQL injection attacks against MySQL, Microsoft SQL Server, Oracle and PostgreSQL SQL servers. What is an SQL injection cheat sheet? An SQL injection cheat sheet is a resource where you can find detailed technical informati

    SQL Injection Cheat Sheet | Invicti
  • グーグルによるMapReduceサービス「BigQuery」が登場。SQLライクな命令で大規模データ操作

    「数兆件のデータも対話的に、高速に分析できる」。グーグルは5月19日にこのような表現で新しいサービス「BigQuery」の登場を紹介するエントリを、ブログにポストしています。 グーグルが公開したBigQueryは、Hadoopやデータウェアハウスなどを用いて多くの企業が行おうとしている大規模データ(いわゆる「Big Data」)の分析を、グーグルのクラウドで可能にします。利用者はGoogle Storage経由で大規模データを転送し、SQLライクな命令によって抽出や分析を行います。 まるでグーグルが大規模データ処理のMapReduceをホスティングし、その機能をサービスとして提供するようなものがBigQueryといえます(ただし公開された「BigQuery」の説明には、内部でMapReduceを利用しているのかどうかの記述はないのため、MapReduce「的」なサービスと表現すべきかもしれ

    グーグルによるMapReduceサービス「BigQuery」が登場。SQLライクな命令で大規模データ操作
  • Site Under Maintenance

    We'll be back soon! Our site is currently undergoing maintenance. Please check back later.

    Site Under Maintenance
  • 実録・4大データベースへの直接攻撃

    情報の入れ物、データベースは大丈夫ですか 皆さんこんにちは、川口です。そろそろGumblarの話に飽きてきたところでしょうか。今回は以下の4種類のデータベースで、管理用ポートをインターネットにオープンしているとどうなるかについて調べた結果を取り上げます。いずれも管理用ユーザーのパスワードは「脆弱なもの」に設定されています。 Oracle(1521/tcp) SQL Server(1433/tcp) MySQL(3306/tcp) PostgreSQL(5432/tcp) 右側に書いてある番号が管理用ポート番号です。データベースを管理する場合、これらのポートをインターネットに対してオープンにする必要はないはずです。しかし、これらのポートに対して外部から“直接”接続するインシデントが年に数回は発生しています。 このようなインシデントは、大学のネットワークに接続したサーバがほとんどですが、ホステ

    実録・4大データベースへの直接攻撃
  • Using filesort

    去年ソートに関する記事を書いたが、今日はその続きである。 MySQLでEXPLAIN SELECT...を実行するとExtraフィールドでよく見かける「Using filesort」という文字列。Filesortって一体なんだろう?と思ったことはないだろうか。単刀直入に言ってFilesortの正体はクイックソートである。 クエリにORDER BYが含まれる場合、MySQLはある程度の大きさまでは全てメモリ内でクイックソートを処理する。ある程度の大きさとはsort_buffer_sizeであり、これはセッションごとに変更可能である。ソートに必要なメモリがsort_buffer_sizeより大きくなると、テンポラリファイル(テンポラリテーブルではない)が作成され、メモリとファイルを併用してクイックソートが実行される。 Filesortは全てのソート処理において実行されるわけではない。前回の記事

    Using filesort