タグ

DBとプログラミングに関するpmakinoのブックマーク (39)

  • 第5回 SQLで木構造を扱う~入れ子集合モデル (1)入れ子集合モデルとは何か | gihyo.jp

    はじめに 木構造と呼ばれるデータ構造の一種があります。1つのルート(根)と呼ばれるノードを始点として、(⁠通常)複数のリーフ(葉)と呼ばれるノードまでを経路で結んでできるデータ構造です。その名のとおり自然界にある「木」の構造ですし、学校時代、確率の授業で樹状図を書いた経験のある人もいるでしょう。 この構造は、私たちの周囲にとてもたくさん存在します。家系図や組織図も木ですし、IT関連の例では、ヒープやRDBのインデックス、ディレクトリ(フォルダ)によるファイルシステムやXMLも木構造です。Webの掲示板でも、最初の書き込みをルートとしてそれに対してコメントがつけられ、そのコメントにまたコメントがつけられるというプロセスで木構造を形成します。ここでは1つの書き込みがノードになります。 このように、IT技術と木構造は切っても切れない関係にありますし、多くの分野で応用されてもいるのですが、実は長い

    第5回 SQLで木構造を扱う~入れ子集合モデル (1)入れ子集合モデルとは何か | gihyo.jp
  • http://1978th.net/tech/promenade.cgi?id=40

  • Google App Engine入門:Entity Groupとトランザクション処理

    今週に入ってから、ようやく少し気でGoogle App Engineでプログラムを書き始めている私だが、ようやく Entity Group の使い方が分かって来たので簡単に解説してみる。 Entity Groupとは、一口で言えば「トランザクションを使ったアトミックな読み書きの対象となるEntity(=データベース上のオブジェクト)の集まり」である。 イメージとしては、まず「一つのハノイの塔を三人で同時に遊んでいる姿」を思い浮かべると分かりやすいかも知れない。全くのルールなしで皆で同時に遊ぼうとすると、腕が交錯してぐちゃぐちゃになってしまう。 そこで、「ある時点でハノイの塔ボード(三つの棒を支えている水平に置かれた板)に触ることが出来る人は常に一人。一度ボードに触った人はすべての円盤をいずれかの棒の位置に置いた状態にしてからしか手を離してはいけない。もし自分がハノイの塔に触りたい時に、す

  • SQLアタマアカデミー 記事一覧 | gihyo.jp

    最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (5)集合指向と手続き型 ミック 2010-05-28 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (4)OLAP関数と集約関数を組み合わせる ミック 2010-05-27

    SQLアタマアカデミー 記事一覧 | gihyo.jp
  • http://neta.ywcafe.net/001023.html

  • DBやDBエンジニアのあるべき姿ってどんなんかねえ: 不倒城

    まあ業界にも開発形態にも、システムのアーキテクチャにもよるんだろうけど。 はてなブックマーク-不倒城: どうも世間では、思ったよりDBエンジニアが不足している様だ DBはプログラマが作っちゃうからなぁ。DBエンジニアが何してくれるのかがむしろよくわからん理想のDBというのは、理想のインフラと同様、多分「そこにあることを意識させない」DBだと思う。セットアップして構築さえされてしまえば、後は読み込みにも書き込みにもボトルネックを作らず、ただモクモクと働くDB。 それに則って考えれば、「理想のDBエンジニア」は、開発の初期段階以外ではサボっている様にしか見えない筈だ。特に主要なロジックをアプリ担当が開発する場合、DBエンジニアがなにをする仕事なのかよくわからんというのは、多分一面で正しい。 ただ、ずーっとほっといても全くパフォーマンスが劣化しないDBがこの世に存在するなら話は別だが、システムを

  • どうも世間では、思ったよりDBエンジニアが不足している様だ: 不倒城

    ちょっと技術的な話。oracle分かる人にしか分からないかも。 最近取引先のシステムを見る機会が何度かあったのだが、昨日すんごいとこ見た。 DBが重くて業務にならないというから、ちょっと中を覗かせてもらったらもうエラいこっちゃ。 ・業務ロジックの殆どをファンクション・プロシージャで構成している。なのに、キャッシュヒット率が妙に低い。 ・調べてみようと思ったら一回もstatspackが取得されていない。(担当者には、「statspack?syslogならとってあるんですが…」と言われた) ・各テーブルのindexがどういう訳か全列に貼られている。ちなみにindexは全テーブル例外なくその一個だけ(プライマリキーを除けばだが)。 ・と思ったら、PKが文字列だったりするテーブルがあちらこちらにある。 ・試しにファンクションを一つ二つ見てみたら、なんか普通にクロス結合されまくっていてちょっとくらっ

  • DBMによるテーブルデータベース - mixi engineer blog

    正月早々インフルエンザにかかって寝込んだmikioです。電車に乗る時や繁華街などに出る時はマスク着用が必須ですね。さて今回は、Tokyo Cabinetで実装したテーブル方式のデータベースについて紹介します。意外にどうして強力な機能なので、このネタは連載することを予告します。 テーブルデータベースとは 簡単に言えば、リレーショナルデータベースのテーブルのように、複数の列からなるレコードを格納できるデータベースです。SQLや表結合などの複雑な機能はサポートしませんが、そのぶん高速に動作します。つまり、DBMの速度で動くリレーショナル風データベースです(厳密にはリレーショナルデータベースではありません)。 TCの基となるハッシュデータベースは、単純なkey/value型のデータベースであり、つまりキーにも値にもスカラ(数値や文字列などの特に構造を持たない単一の値)しか格納することはできません

    DBMによるテーブルデータベース - mixi engineer blog
  • 極小SQL Server Compactでデータベース・アプリをお手軽作成(1/3) - @IT

    皆さん、こんにちは。ロブです。 今回は、SQL Server Compact 3.5を利用したWindowsアプリについて解説します(アプリは「アプリケーション」の略)。 SQL Server Compact 3.5とは、Windowsアプリや、モバイル・アプリでの利用に向いた小さなデータベース(DB)です。来は組み込み用途で作られたものなのですが、スタンドアロンのWindowsデスクトップ・アプリなどでこのデータベースを利用すると、とても簡単にデータベース・アプリが作成できます。手軽なデータベース・アプリ開発を楽しんでみませんか? ぜひ稿を読みながら実際にプログラムを作り、自分の手で動かしてみてください。 プログラミング言語は、C#とVB(Visual Basic)を使用します。今回は、特別にVBのコードも用意しました。これは、SQL Server Compact 3.5のターゲット

  • Filter::SQLが使いやすくてしかたがない

    Filter::SQL 作った - id:kazuhookuのメモ置き場にある、Filter::SQLが使いやすくて仕方がないという話。 前にも書いたけれど私はPerlのデータベースプログラミングに苦手意識がある。SQLPerlも人並みにはできるけれど、その両方がまざったのはどうもだめだ。 だいたい、こちらはSELECTだけをすればいいのに use 5.010; use DBI; my $dbh = DBI->connect("dbi:SQLite:dbname=foo.db"); my $sth = $dbh->prepare("SELECT * FROM table WHERE bar > 1"); $sth->execute; while ( my $row = $sth->fetch ) { say join "\t", @$row; }のような呪文を書かなくてはならないのは苦痛

  • DBIx::Classの覚書 - Ktat's Wiki

    [カテゴリ:Perl] お手軽にShcemaを作る 作られるSQLを見たい ◯◯でなければ作成 見付からなければ作成 更新でなければ作成 find_or_new is null / is not null transaction update_or_create で id => "" を渡すと? countとgroup_by お手軽にShcemaを作るuse DBIx::Class::Schema::Loader DBIx::Class::Schema::Loader::make_schema_at ( "DB::Schema", {debug => 1, relationships => 1}, ["dbi:mysql:dbname"] ); 作られるSQLを見たい$ENV{DBIC_TRACE} = 1; とすれば、STDERRに出力される。 $ENV{DBIX_CLASS_STORA

  • AIRとSQLiteで学ぶ ローカルDB操作の基本 (1/3) ─ @IT

    Apollo改めAIRプログラミング入門(2) AIRとSQLiteで学ぶ ローカルDB操作の基 クラスメソッド 杉浦篤史 2007/8/17 編集部注:前回より、連載「Apolloプログラミング入門」は連載「Apollo改めAIRプログラミング入門」にリニューアルしました。この連載をより深く理解するためには、連載「Apolloプログラミング入門」も併せてご覧ください。 いまさら聞けない、SQLiteとは? 前回はAIR(Adobe Integrated Runtime)ベータ版の新機能として、ドラッグ&ドロップに注目して2つのサンプルを作成しました。 今回はAIRベータ版から利用できるようになったローカルDBとの連携についてです。AIRには、DBエンジンとしてSQLiteが実装され、ActionScriptからSQLite形式のDBファイルを扱えるようになりました。 SQLiteはM

  • DBという中間搾取 : 404 Blog Not Found

    2007年05月22日16:15 カテゴリiTech DBという中間搾取 これは事実の半分に過ぎない。 naoyaのはてなダイアリー - Linux のページキャッシュ ということでデータサイズを見てページキャッシュに任せられそうなサイズなら OS に任せておくのが良いんじゃないかなと思います。まず、Disk Cacheはreadには強くても、writeにはそれほど強くないということ。以下をご覧いただきたい。これは、/usr/shre/dict/wordsをBerkeley DBに変換するというトリビアルな例で(ソースは後ろ)、./が普通のdisk,/mdがmemory disk(md)。読み込みに関しては差が全く出ていないのに、書き込みに関しては有意に遅い。 # write /usr/share/dict/words => ./words.db: 10.1032350063324 sec

    DBという中間搾取 : 404 Blog Not Found
  • 「perl+DBI プログラムの鉄則」の検索結果 - 無料ブログ(blog)を簡単作成!

    perl+DBIプログラムの鉄則のつづき。鉄則その4.my$sql="SELECT"."hoge,"."fuga"."FROMtable1"."WHEREfoo=?";SQL文の可読性を高めるため、必 68user.blog27.fc2.com//blog-entry-17.html perl+DBIプログラムの鉄則のつつき。鉄則その3.while(my$arr_ref=$sth->fetchrow_arrayref){my($hoge,$fuga)=@$arr_ref;...}SELECT時は上記のようにfetchrow_arrayrefを使うこと。そして必ずスカラーに代 68user.blog27.fc2.com//blog-entry-6.html

  • SQLiteで組み込みDB体験(2007年版):CodeZine

    はじめに 1年前、長久 勝さんのアーティクル:「SQLiteで組み込みDB体験」が掲載されました。そこではSQLite3.3.5をコマンドラインからビルドし、ライブラリを生成する方法が解説されています。 今やSQLiteのバージョンは3.3.16(2007年4月20日現在)まで上がっています。この最新版SQLiteをVisual C++ 2005 Express Edition(以下、VC8EE)のIDE上でビルドする手順を解説します。対象読者格的なDBを使うまでもない、小さなアプリケーションでお手軽にDBを使ってみたいんだけど……なプログラマ 必要環境 Visual C++ 2005 Express EditionもしくはVisual Studio 2005 SQLite version 3.3.16 step-1:ダウンロード、ともかくビルド まずはソースを入手しましょう。SQLit

  • 101号室: [DBIx::Class][DBIC][perl] DBIx::Classで複雑な関数を使う

    前の記事へ « [DBIx::Class][DBIC][perl] DBIx::Classで集約関数を使う | トップページ | [perl][google] Authen::GoogleAccount作った(GoogleAccountの認証API) 次の記事へ 2006年11月05日 [DBIx::Class][DBIC][perl] DBIx::Classで複雑な関数を使う ブログが続かないわけ | DBIC でSELECT時に複雑な関数を使いたい(例、年齢計算) birth というカラムに生年月日が入っているとすると、SQLはこんな感じになります。 SELECT user_name, birth, (YEAR(CURDATE())-YEAR(birth)) - (RIGHT(CURDATE(),5)<RIGHT(birth,5)) as age FROM user_prof

  • 101号室: [DBIx::Class][DBIC][perl] DBIx::Classで集約関数を使う

    DBIx::Classでの集約関数(sum,avg,max,min,count,...)の使い方 searchの第二引数のハッシュリファレンスに、selectとasを指定する。 selectには集約関数とその引数(普通の列が欲しければその名前も)、asにはそれにつける名前を指定。結果はget_column('名前')で得る。 (Schemaのadd_columnsで指定されてる名前ならget_columnは必要ない。) $resultset->search({ #where句の条件 }, { select => [ "列名", # nameという列が欲しければ "me.name" { 関数名 => '引数' }, # count(me.id)なら、 { count => 'me.id' } ], as => [qw/名前1 名前2/] # 例えばqw/ name count /, #必要な

  • プログラミングと開発者のためのCodeZine:SQLiteで組み込みDB体験(SQLite, C, データベース)

    はじめに そもそもコンピュータのプログラムとは、データの処理を求められるものです。ファイルコンバータなど、単純なプログラムほど、そうした傾向がはっきり現れます。複雑なデータ処理の実現は、プログラマの腕の見せ所でもありますが、自前で不慣れな複雑なデータ構造を実装して、バグに悩まされた経験はありませんか? 1日でサクっと作ってしまう予定が3日になってしまったり、開発の後期になってバグが顕在化したり、なかなか思い通りにはいかないものです。 その一方で、複雑なデータ処理を行うために、データベース(以下、DB)を使うことが一般的になりました。多くのプログラムが、DBと通信して処理を行うように作られています。しかし、一般的なDBは、サービスを提供するプロセスとして実装されているので、ちょっとした用途のために、DBをインストールして運用するのは、ムダに大袈裟に思えてしまいます。 複雑なデータ処理にはDB

  • 素早く正規形を見抜く実践テクニック(1/4) - @IT

    今回のテーマはデータベースエンジニアの必須知識の1つである「正規化」です。正規化は、リレーショナル・データベースのテーブル設計を行ううえで非常に重要なテクニックであり、データベースを設計、実装したことのある方なら一度は正規化に触れているのではないでしょうか。 それほど基的な知識であるにもかかわらず、正規化を説明できる人はなかなかいません。多く聞かれるのが「何となくテーブルを作ると自然に第3正規形になる」とか「実務上は第3正規化まで行えば問題ない」というものです。 ではなぜ「第3正規化まで行えば問題ない」のでしょうか。稿ではひととおり正規化について確認しながら、あまり触れられることのない第3正規化より先の正規化を紹介して、この疑問に答えていきたいと思います。 正規化の位置付け 正規化は、データベース設計全般にかかわる基礎知識ですが、特に論理データモデリングの作業の中で必要になります。稿

    素早く正規形を見抜く実践テクニック(1/4) - @IT