You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Bill Karwin “SQL Antipatterns: Avoiding the Pitfalls of Database Programming” の読書メモ。 Jaywalking 目的 ある属性について、複数の値を持たせる。 アンチパターン : カンマ区切りリスト カンマ区切りで複数の値を 1 つの列に納める。 例では、特定の製品についての担当者を複数設定するのにカンマ区切りで、担当者のアカウントIDを記述している。 create table products ( product_id integer, product_name varchar(1000), acount_id varchar(100), -- comma separated list -- ... ); insert into products (product_id, product_name, accou
BigQueryはカラム型データストアの一種で、テラバイトクラスの大規模データに対して大量の並列処理を行うことで高速に結果を得ることが可能。グーグル 佐藤一憲氏の発言によると、 OLAP/DWH/Data Miningで行われるようなread onlyのad hocクエリをきわめて高速(数秒〜数十秒)に実行します。 とのこと。 SQLによる問い合わせが可能 この高速性に加え、BigQueryではSQLを問い合わせ言語に使えるという点にも大きな特徴があります。数秒程度のレスポンスとSQL文による記述は、大規模データに対するアドホックな処理を行うのに適したサービスだといえるでしょう。 BigQueryのSQLの構文は「Query Reference」で解説されていますが、SELECT文にFROM、WHERE、JOIN、HAVING、GROUP BY、ORDER BY、LIMITなどが使えるため
eBayが、JavaScriptアプリケーションからSQL文のような形式でデータベースへの問い合わせを記述できるDSL(ドメイン固有言語)のql.ioを発表。オープンソースとして公開しました。 現在、多くのWebアプリケーションが、バックエンドとのデータのやりとりにHTTPをベースにしたAPIを用いています。しかし、WebベースのAPIによってデータを取り出すのは、プログラマにとって実は手間のかかることです。 例えば、キーワードを入力すると関連する商品の名前、詳細、購入者の評価をユーザーに表示する、というWebアプリケーションでは、まずキーワードでデータベースを検索して商品IDを取得し、今度はその商品IDをキーにして名前や概要、評価の情報を取得する、といったように、APIを繰り返し呼び出す必要があります。 ql.ioはこうした内容をSQLのように分かりやすい記述で実現するだけでなく、複数の
このエントリでは、数値型の列に対するSQLインジェクションについて説明します。 以前のエントリで、たにぐちまことさんの書かれた『よくわかるPHPの教科書』の脆弱性について指摘しました。その際に、『私が見た範囲ではSQLインジェクション脆弱性はありませんでした』と書きましたが、その後PHPカンファレンス2011の講演準備をしている際に、同書を見ていてSQLインジェクション脆弱性があることに気がつきました。 脆弱性の説明 問題の箇所は同書P272のdelete.phpです。要点のみを示します。 $id = $_REQUEST['id']; // $id : 投稿ID $sql = sprintf('SELECT * FROM posts WHERE id=%d', mysql_real_escape_string($id) $record = mysql_query($sql) or die(
Web時代に生成される大量のデータを、トランザクションを維持しつつ処理できる新しい種類のデータベース「New SQL」が求められていると、データベース研究者の大御所、マイケル・ストーンブレイカー氏が米計算機学会ACM(Association for Computing Machinery)のコラム「New SQL: An Alternative to NoSQL and Old SQL for New OLTP Apps」(New SQL:New OLTPアプリケーションのための、NoSQLやOld SQLに替わるデータベース)で書いています。 New SQL: An Alternative to NoSQL and Old SQL for New OLTP Apps | blog@CACM | Communications of the ACM これまで企業の情報システムの定番は、受発注
3/8 に TokyoGTUG 主催で行われた Geo Teck Talk に行ってきました。 ・Manomarks さんのスライド ・TokyoGTUG Geo Techtalk togetter ■ Fusion Table について ・SQLライクなクエリ layer = new google.maps.FusionTablesLayer(someid, { query: "SELECT address FROM someid WHERE ridership > 5000"} ); layer.setMap(map); ・近くのカフェ10個 ・10km以内のガソリンスタンド ・ある領域内の店舗 など # 思いっきり SQL だね。 ・Read-only なら認証不要(一般に公開される) ・Write は認証が必要 ・クライアントライブラリを使う ・OpenDataKit や App
はじめに 結果として、SQLのような関係型の言語は非手続き型の言語と呼ばれるが、これはユーザは「いかに」ではなく「何を」を指定する―つまり、獲得するための手続きを指定することなしにユーザは何が欲しいかをいう―からである。 ── Christpher J. Date[1] Webの入力フォームであれ、コマンドラインツールであれ、インタフェースにかかわらず、リレーショナルデータベースに対する操作はSQLという専用の言語で行われます。ユーザ(プログラマ含む)が意識的にコーディングするのは通常このSQLレベルまでで、あとはDBMSが処理を終え、結果を返却するのを待つのみです。SQLとRDBMSにおいては、ユーザはデータのありかを知る必要もなければ、そこへのアクセス方法も考えません。そういう仕事は、全部DBMSに任せています。 このプロセスは、通常「プログラミング」と呼ばれるものとはかなり異なりま
ちなみに、MySQL・PostgreSQLはRDBの名前、PL/SQLはOralceの独自言語、psqlはPostgreSQLの対話型ツール(SQL*PlusはOracleの対話型ツール)。 分散Key/Valueストアの特徴 キーバリューストア(key/value store・KVS)は、キー(key)を指定して値(value)を保持・取得できるデータベース。 って言うと、どのDBもそうじゃん!(爆) KVSもRDBも“どちらもDBだから”という理由で比較されるけれども、構造や出来る事を考える上では、KVSはマップ(連想配列)と対比して考える方が分かりやすいと思う。 乱暴に言うと、KVSは、ファイルシステム上に置かれているマップである。 (古くからこの業界にいる方は、「KVSはISAM・VSAMだ」とおっしゃっている模様。確かIBMの汎用機(メインフレーム)で使われていた用語だったかな)
これまでの脅威レポート「X-Force Trend and Risk Report」を読み返し、以下のSQLインジェクションに関するグラフを眺めると、興味深いことに気付くだろう。米IBMのSOC(Security Operations Center)では、3年前から毎年1回、全世界規模のSQLインジェクション攻撃について取り上げてきた。 どの攻撃も手口は基本的に同じで、SQLインジェクション攻撃が可能なASP(Active Server Pages)Webページを狙っている。 2008年の攻撃は、以下のようにSQLのcastステートメントと16進データを用いてインジェクション用文字列を難読化していた。この攻撃はボット機能を持つ「Asprox」ワームによるもので、数千ものWebサイトを改ざんするという大成功を収めた(関連記事:フィッシング詐欺が半減、原因は犯罪組織「Rock Phish」のイ
「多くのOLTPデータベースは30年前の設計を基にしており、今日の“Webスケールな”データベースの負荷を想定していない。これら伝統的なデータベースは、処理時間の90%以上がログ、ロック、ラッチ、バッファ制御といったオーバーヘッドに費やされ、しかもそれらによって限られた性能やスケーラビリティしか実現できていない」 Ingresの開発者でありInformixのCTOなどデータベースベンダの要職を歴任したデータベース研究者の大御所、マイケル・ストーンブレイカー氏が開発したVoltDBはプレスリリースでこのように既存のリレーショナルデータベースの欠点を示した上で、インメモリデータベースをベースにこれらのオーバーヘッドを除去し、ACIDによるデータ一貫性を維持しつつ大きな性能向上とスケーラビリティを実現したと説明されています。 SourceForge.jpの記事「「NoSQL」を上回る性能を目指す
セキュリティは古くて新しい問題です。SQLインジェクションも古くからある問題ですが現在の問題です。対策は比較的簡単なのですが今でもなくなりません。と言うよりも今でも現役のセキュリティ上の問題で十分注意が必要です。この連載でも何度かSQLインジェクション対策について簡単に取り上げています。 第5回 まだまだ残っているSQLインジェクション 第14回 減らないSQLインジェクション脆弱性 第15回 減らないSQLインジェクション脆弱性(解答編) 第24回 無くならないSQLインジェクション脆弱性 今回はSQLインジェクションを復習してみたいと思います。 SQLインジェクションとは SQLインジェクションはプログラマが意図しないSQL文を実行させる攻撃で、2種類の攻撃方法に分類できます。 直接SQLインジェクション 間接SQLインジェクション 直接SQLインジェクション 直接SQLインジェクショ
Zend_Db_Select オブジェクトは、SQL の SELECT 文を表すものです。 このクラスには、クエリの各部分を追加するためのメソッドが用意されています。 PHP のメソッドやデータをもとにクエリの各部分を指定すると、 このクラスが正確な SQL 文を作成してくれます。クエリを作成したら、 あとは通常の文字列と同じようにそれを用いてクエリを実行できます。 Zend_Db_Select は次のような機能を提供します。 SQL クエリを少しずつ組み立てていくための オブジェクト指向のメソッド SQL クエリの一部について、データベースに依存しない抽象化 大半のメタデータ識別子の自動クォート処理による、 予約語や特殊文字を含む SQL のサポート 識別子や値のクォートによる、 SQL インジェクション攻撃対策 必ず Zend_Db_Select を使わなければならないというわけではあ
News There is a shiny new data extraction method in the alpha of the new release. It uses WAITFOR-based injection (slow) and DNS tunnels (fast!!). It is still a bit experimental, but it could help you in your next penetration test. You can find it in the Download. Why we decided to add a data extraction module even if lots of other tools do that already? The answer is in the FAQ page. Introduction
Windows Azure Platform速習シリーズ:SQL Azure(前編) SQL Azureの機能と制約を理解する Windows Azure Community 山本 昭宏 (監修 市川 龍太) 2010/01/12 Windows Azure Platformとは、マイクロソフトが提供するクラウド・サービスのためのプラットフォームであり、現在は以下の3つのサービスから構成されている。 Windows Azure クラウド上でのOSに相当する機能を提供する。 Windows Azure platform AppFabric 主にエンタープライズ・サービス・バス機能とアクセス管理機能を提供する。 SQL Azure クラウド上でデータベース関連の機能を提供する。 本稿では、このうち3つ目のSQL Azureを解説する。 ところで、「クラウド上のデータベース」と聞いて、開発者やデ
ステップ1 RDBとSQLの濃い関係を知る SQL*1は,ISO(国際標準化機構)とANSI(米国規格協会)によって標準化が進められている,RDB*2を操作するためのプログラミング言語です。では,RDBがどのようなデータベースかわかりますか? それを知るために,まずは次のコードをご覧ください。 SELECT 氏名,住所 FROM 名簿 WHERE 従業員NO = 8421237 これはSQL文(ステートメント),つまりSQLのコマンドを使用したコードです。初めてSQLを見る方は,ちょっと戸惑うかもしれませんね。SQLを使うと,たったこれだけのコードで,従業員NOが8421237の人の氏名と住所をデータベースから取り出すことができるのです。BASICやC言語とはかなり雰囲気が違い,すごく単純に見えますよね。でも単純だからこそ,このSQLからRDBについて基本的なことがたくさん読み取ることがで
「データベース」と聞いてどのように思うでしょうか。「何か難しそうで自分には関係ないもの」と感じられる人もいるかもしれません。確かに,企業システムで使っている顧客管理データベースや売上管理データベースは大規模で複雑なものが多く,職業プログラマ以外の方にはとても手におえそうにありません。 でも,データベースが活躍するのは,企業システムだけではありません。例えば,同窓会名簿など個人で使うちょっとしたアプリケーションも,データベースを使うことでずいぶん楽に作れるようになるのです。 あるいは,「データベースだったら,年賀状作成ソフトについている住所管理データベースをずいぶん前から使っているよ」という方もいるかもしれません。そうした方はきっとデータベースの便利さを実感していますから,改めてご利益を説明する必要はないでしょう。この特集を読んで,データベースの中身や仕組みについての理解を深めてください。デ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く