タグ

SQLに関するko-ya-maのブックマーク (89)

  • RDBとNoSQLにみるDB近現代史 データベースに破壊的イノベーションは二度起きるか? - エンジニアHub|若手Webエンジニアのキャリアを考える!

    「ユーザー目線」のシステムを目指して RDBが従来の階層型DBに比べて優れていた点はいくつか挙げることができますが、シェアを伸ばすうえで最も大きな影響は、ユーザーが使いやすいデータ構造とインタフェースにこだわったことです。すなわち、「テーブル」と「SQL」の発明です。 RDBでは、すべてのデータを「テーブル」というただ一つのデータ形式によって表現します。テーブルは、見た目が「二次元表」に似ているため*3、Microsoft ExcelGoogle ドキュメントなどのスプレッドシートを使い慣れた人が見ると、データを格納する方法が直観的にイメージしやすいという利点があります。実際、こうした二次元表によるデータ管理は、Excelなどのソフトウェアが登場する前から一般的な方法だったため、RDBが登場した当時の人々にとっても受け入れやすいものでした。 テーブルが画期的だった点は、もう一つあります。

    RDBとNoSQLにみるDB近現代史 データベースに破壊的イノベーションは二度起きるか? - エンジニアHub|若手Webエンジニアのキャリアを考える!
  • RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita

    "Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に

    RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita
  • Apache Kafkaに対応したSQLエンジン「KSQL」リリース、ストリームデータをSQLで継続的に処理。Confluentがオープンソースで

    Apache Kafkaを用いたリアルタイムデータ処理の商用サービスを提供しているConfluentは、Apache Kafkaに対応したオープンソースのSQLエンジン「KSQL」のデベロッパープレビューをリリースしました。 Apache Kafkaはスケーラビリティに優れ、大量のデータをリアルタイムに処理できるソフトウェアです。さまざまなアプリケーションから送られてくるログや大量のセンサーなどから生成されるデータなど、リアルタイムに送信されてくるストリームデータをいったんKafkaで受け止め、それをまとめてHadoopなどの分析エンジンに渡してデータの分析を行う、といった形で使われます。 KSQLは、このKafkaに対応したSQLエンジン。これによりJavaPythonで複雑な処理を記述しなくとも、ストリームデータを柔軟に加工できるようになります。 SQLとKSQLの違いとは? 一般的

    Apache Kafkaに対応したSQLエンジン「KSQL」リリース、ストリームデータをSQLで継続的に処理。Confluentがオープンソースで
  • 分析SQLのコーディングスタイル - クックパッド開発者ブログ

    SQL、書いてますか? こと大規模データ処理の分野においてはSQLはもはや標準インターフェイスであり、 分析やらバッチやらに関わっている皆様は日々大量のSQLクエリーを生産していることと思います。 そこでちょっと気になるのが、 SQLのコーディングスタイルってどうするのが一般的なんだっけ……? という点です。 イマドキはSQLなんてO/R mapperに吐かせることが多いからなのか、 それともコードを広い範囲で共有することがそもそもないからか、 SQLのコーディングスタイルについて見聞きすることは他のプログラミング言語に比べるとだいぶ少なく、 いまいち決定版と言えるスタイルがないなと感じています。 そんなわけで日は、SQLのコーディングスタイルについての意識を活発化させるべく、 クックパッドでわたし(青木)が使っているコーディングスタイルから特徴的な点を紹介したいと思います。 特に、分析

    分析SQLのコーディングスタイル - クックパッド開発者ブログ
  • マーケティング担当者にSQLを完全マスターさせた話 - Qiita

    普段開発とかしない人達にもデータベースに簡単に触れられるようにしたお話です. 安全なデータベースを作る 番サービスのデータベースと同等,だけど個人情報的なものは隠しておきたい,よく聞く話ですね. これについては様々なアプローチがあるようですが,できる限り安定させたい&バッチでやるにしてもサーバの面倒を見たくない,とう方針のもと,RDSのスナップショットを利用して作成することにしました. 処理の流れ RDSが1日1回スナップショットを取っている(これはRDSの機能) RDSのスナップショットが取られると,RDSからイベント通知が投げられるので,SNS→SQSへ届くようにしておく(これもRDSの機能) CloudWatchでSQSのキュー数を監視するようにしておき,キューが1つ以上になると処理用のインスタンスを立ちあげる設定にしておく(CloudWatch,AutoScalingの機能) イ

    マーケティング担当者にSQLを完全マスターさせた話 - Qiita
  • OFFSETを使わない高速なページネーションの実現 - Qiita

    <?php try { /* SQLite3のテンポラリデータベースに接続およびモード設定 */ $pdo = new \PDO('sqlite::memory:'); $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC); $pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, true); /* スキーマとレコードの生成 idは絞り込み等で番号が飛んでいることを想定 */ $pdo->exec('CREATE TABLE samples( id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NU

    OFFSETを使わない高速なページネーションの実現 - Qiita
  • なにこれ楽しい!SQLをブラウザ上で学習できるSQLZOO! - 嗚呼、学習の日々

    みなさまごきげんよう! 嗚呼蛙でございます! 一昨日amazonアソシエイトの審査を無事通過したことを祝って、露骨なアフィ目的記事を書いてみました。 今日はデータベースの操作を行う言語『SQL』を実践的に学習できるサイトを発見したので、それについて書いていこうと思います。 SQLってなに? ブラウザ上でSQLの学習ができるサイト 日語でのSQL学習 SQLってなに? SQLを知らない方のためにSQLについて簡単に説明しておくと、例えばネットショップで買い物をする時にこんな感じで「会員情報」「送付先」」「購入品」を登録しますよね。 【会員情報】 【送付先】 【購入品】 すると、ブラウザから入力された情報は、SQLを使ってこんな感じでデータベースに書き込まれます。 【会員テーブル】 【送付先テーブ】 【売上テーブル】 こんな風にブラウザから送られた情報をデータベースに書き込んだり、蓄積された

    なにこれ楽しい!SQLをブラウザ上で学習できるSQLZOO! - 嗚呼、学習の日々
  • MySQL 5.7が正式公開。前バージョンより3倍高速、マルチソースレプリケーションなど。一方で新しい「罠」に対する警告も

    MySQL 5.7が正式公開。前バージョンより3倍高速、マルチソースレプリケーションなど。一方で新しい「罠」に対する警告も 来週10月26日にはサンフランシスコで開催されるOracle OpenWorld 2015でMySQLのイベント「MySQL Central」が行われます。それに合わせて新バージョンのお披露目となりました。 MySQL 5.7の主な特長は次の通りです。 実行速度の向上 SysBenchのSysBench Read-only Point-Selectsの結果、1024コネクションでMySQL 5.7はMySQL 5.6の3倍となる160万クエリ/秒(QPS)の値を示しました。 InnoDBの新機能など 性能向上や並列度の向上に加え、オンライン状態での操作向上、Spatial Index、ネイティブパーティショニングなどの新機能が加わりました。 レプリケーションの強化 マ

    MySQL 5.7が正式公開。前バージョンより3倍高速、マルチソースレプリケーションなど。一方で新しい「罠」に対する警告も
  • リレーショナルデータベースの仕組み (1/3) | POSTD

    リレーショナルデータベースが話題に挙がるとき、私は何かが足りないと思わずにはいられません。データベースはあらゆるところで使われており、その種類も、小規模で便利なSQLiteからパワフルなTeradataまで様々です。しかし、それがどういう仕組みで機能しているかを説明したものとなると、その数はごくわずかではないでしょうか。例えば「リレーショナルデータベース 仕組み」などで検索してみてください。ヒット数の少なさを実感できると思います。さらにそれらの記事は短いものがほとんどです。逆に、近年流行している技術(ビッグデータ、NoSQLJavaScriptなど)を検索した場合、それらの機能を詳しく説明した記事はたくさん見つかると思います。 リレーショナルデータベースは、もはや大学の授業や研究論文、専門書などでしか扱われないような古くて退屈な技術なのでしょうか? 私は開発者として、理解していないものを

    リレーショナルデータベースの仕組み (1/3) | POSTD
  • Go のシンプルかつ明快な SQL クエリビルダ go-sqlf - 詩と創作・思索のひろば

    Go でリレーショナルデータベースを利用したアプリケーションを書いているとき、動的に SQL を組み立てたい場合には、いくつかの方法が考えられます: クエリビルダを使う。世の中にすでにいろいろ存在します。(そのためのライブラリなので)動的に生成するにはもってこいですが、この場合、それぞれのライブラリに合わせた書き方をしなければならないので読み手にもある程度負荷がある点、また、Go は言語として冗長に書くことをよしとする思想を持っているため、DSL 的な API との相性が悪いという欠点があります(map の組み立てが冗長、条件分岐する式が書けないなど)。また、一般にクエリビルダから生成される SQL がコードから想像しづらくなる問題もあります。 文字列連結や fmt.Sprintf を使う。発行される SQL は比較的分かりやすくなりますが、動的に組み立てると SQL プレースホルダとバイ

    Go のシンプルかつ明快な SQL クエリビルダ go-sqlf - 詩と創作・思索のひろば
  • CSV/TSVに対してSQL発行できるツール「q」 | DevelopersIO

    今日はCSV/TSVなどのテキストファイルをSQLで操作できるツール「q」の紹介です。 使いどころ データ処理を実施する時にはDBに保存されているデータやテキストファイルなどをCSVやTSV等の一定のフォーマットに変換して処理することが多いと思います。そのデータ内容を確認するときには、例えばExcel等に貼り付けることもあると思います。ただ、Excelではデータ量が数百万件規模になってくるとソフトウェアの制約上、処理が行えません。 データベースに保存されている大量のデータを処理・取得する際によく用いられるのはSQLです。SQLはデータ操作のための非常によくできたインターフェースであり、かなりの数のエンジニアが利用できるのではないでしょうか。 単純なCSVファイルに対してもSQLを利用して検索が実施できれば楽だと思って探していたところ、「q」にたどり着きました。 インストール qには様々なイ

    CSV/TSVに対してSQL発行できるツール「q」 | DevelopersIO
    ko-ya-ma
    ko-ya-ma 2015/08/24
    単純なCSVファイルに対してSQLを利用して検索
  • Column SQL Truncation脆弱性にご用心

    前回のブログ記事「CMS四天王のバリデーション状況を調査したところ意外な結果になった」にて、JoomlaとMovableTypeは長大なログイン名を登録することにより、ログイン名の重複が起こり得ることを指摘したところ、facebookの私のウォールにて、Column SQL Truncation脆弱性の話題になりました。Column SQL Truncationは、2008年にWordPressの脆弱性として報告されたことがあります(参照、参照)。 稿では、簡単なログイン機能のSQL呼び出し例を用いてColumn SQL Truncationを説明したいと思います。 認証用テーブル定義の説明 認証に用いる会員テーブルを下記とします。ご覧のように、ログイン名を示す列 username には一意制約がありません。(追記)一意制約はふつうあるだろと思われるでしょうが、CMS四天王の中で一意制約

  • 不整合が起きてはならない場合、トランザクションはシリアライザブル

    リードコミッテドの場合、 ファントム・リード に加え、非再現リード(Non-Repeatable Read)と呼ばれる、同じトランザクション中でも同じデータを読み込むたびに値が変わってしまう現象が発生する可能性がある。 とWikipediaに書いてある通り不整合が発生します。簡単に言うと ファントム・リード – タイミング次第で見えなかったデータが見えるよう、見えないようになること 非再現リード(ノンリピータブル・リード) – 同じデータの読み込みができなくなること ファントム・リードやノンリピータブル・リードは複雑なクエリでないと起きない、と思っている方も居るかも知れません。 不整合が起きる例 トランザクションの不整合は単一レコードへのアクセスでも起きてしまいます。例えば、セッションIDのデータベースにデフォルトのリードコミッテド分離レベルを利用した場合、ブラウザから複数の接続、複数のブ

    不整合が起きてはならない場合、トランザクションはシリアライザブル
  • 実行計画が解れば怖くない。SQL実践入門 - プログラマでありたい

    技術評論社さんから、SQL実践入門を献いただきました。ありがとうございます。 SQL実践入門の主題 このの目的は、「パフォーマンスの良いSQLの書き方、特に大量データを処理するSQLの性能向上の方法を理解すること」とあります。そのパフォーマンス向上の為の解として、SQLが内部的にどう処理されているかを表す実行計画の読み解き方を、いろいろなケースを上げながらひたすら解説しています。そして、何故その実行計画になるのか、データ構造やDBの動きとともに説明しています。ということで、実行計画大事という基かつ当たり前のことを、正面から取り扱っている良質のSQLです。 SQL実践入門の構成 SQL実践入門の章立ては、下記の通りです。 第1章:DBMSのアーキテクチャ──この世にただ飯はあるか 第2章:SQLの基礎──母国語を話すがごとく 第3章:SQLにおける条件分岐──文から式へ 第4章:集約

    実行計画が解れば怖くない。SQL実践入門 - プログラマでありたい
  • 誰でも簡単に超高速なクエリができるBigQueryとは?

    この2つの技術は、グーグル独自の技術というわけではない。しかし、ハードウェアから構築している、既存のグーグルのクラウド技術を活用し、パブリックなクラウドサービスとして提供可能なレベルの実装になっている点がGoogle BigQueryの強みとなっている。 BigQueryの特徴 他の類似サービスとの比較 巨大データを処理する技術としては、同じグーグルが使ってきたMapReduceというものがある。MapReduceとBigQueryを比べると、MapReduceが巨大なデータを安定的に処理できるプログラミングモデルであることに対し、BigQueryはアドホックにトライ&エラーしながらクエリを実行するサービスであることが異なっている。 MapReduceは、非構造化データを、プログラミングモデルを通して扱うことができ、巨大なテーブルの結合や巨大な出力結果のエクスポートも可能である半面、処理時

  • 逆引きSQL構文集

    逆引きSQL構文集はやりたいことから,その方法を調べられるSQLの逆引きのリファレンスです. すべての項目にサンプルを用意してありますのでよろしければ参考にしてください. ブラウザの検索機能(Ctrl + F)を使用すると効率的にSQLを調べることができます. ホームページは現在精力的に作成中です

    ko-ya-ma
    ko-ya-ma 2015/03/07
    良いね!
  • 深刻な「ブラインドSQLインジェクション」の脅威

    2013年11月18日から11月21日の4日間にわたり、アメリカ合衆国ニューヨークでWebアプリケーションのセキュリティに関する国際的なカンファレンスである「OWASP AppSec USA 2013」が開催されました。 世界各国から開発者・研究者が一堂に会するこの一大イベントに参加してきましたので、その模様を報告します。 Webアプリセキュリティにまつわるあらゆる話題を扱う「OWASP」 OWASP(Open Web Application Security Project)は、WebアプリケーションおよびWebサービスセキュリティ向上を目的とした、ボランティアによるプロジェクトです。 今回参加した「AppSec」をはじめとするカンファレンスの開催による知識の展開やトレーニングを通じた開発者のスキル向上の他、開発者向けガイドラインの作成、テストツールの開発・公開などを行っています。ツー

    深刻な「ブラインドSQLインジェクション」の脅威
  • 安全なPHPアプリケーションの作り方2014

    Internet Week 2010 S3 今日こそわかる、安全なWebアプリの作り方2010 http://www.nic.ad.jp/iw2010/program/s3/

    安全なPHPアプリケーションの作り方2014
  • JSON SQL Injection、PHPならJSONなしでもできるよ

    DeNAの奥さんと、はるぷさんがJSON SQL Injectionについて公表されています。 The JSON SQL Injection Vulnerability 不正なJSONデータによるSQL Injectionへの対策について (Json.pm+SQLクエリビルダー) 上記の記事は、主にPerlスクリプトがJSONデータを受け取るシナリオで説明されています。もちろん、この組み合わせに限定したはなしではないわけで、それではPHPではどうだろうと思い調べてみました。 JSON SQL Injectionとは 以下、はるぷさんの「不正なJSONデータによる…」にしたがってJSON SQL Injectionについて説明します。 Perl向けのSQLジェネレータの一つであるSQL::Makerにおいて、以下のスクリプトを想定します。 my ($sql, @bind) = $builde

  • Cloud Computing Services | Google Cloud

    Build with generative AI, deploy apps fast, and analyze data in seconds—all with Google-grade security.

    Cloud Computing Services | Google Cloud