algorithmとdatabaseに関するflakwingのブックマーク (17)

  • Cache-Oblivious データ構造入門 @DSIRNLP#5

    [DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing

    Cache-Oblivious データ構造入門 @DSIRNLP#5
  • Welcome back to the TRANSACTION! - 急がば回れ、選ぶなら近道

    最近、トランザクションの再勉強を始めていて、先日クラウド温泉でも発表させてもらった手前、ちょうどいいので一回まとめておく。はじめに断っておくと自分は別にDBやTXの専門家ではない。なので以下の内容の正確性については保証しない。内容については自分で勉強してくださいね。 1.「なんでまたTXなのか」 まずもって何故にTXなのか?というお話から始めます。もう枯れてんじゃないか?今頃RDBMSでもないだろう。それはそうですが、以下の流れは無視できません。 ・RDBMSの特許切れ NIIの佐藤先生の指摘にもあるように、1980-90年代のRDBMS関連の特許が切れ始めます。これにより商用一辺倒で、OSSではどうしても勝てなかったRDBMSでの技術革新や、その技術を応用した別のもの(RDBMSとは限りません)が登場してくる可能性が高いです。各ベンダーもそれを見越して、一斉にRDBMS関連への「逆張り」

    Welcome back to the TRANSACTION! - 急がば回れ、選ぶなら近道
  • 第7回 性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (1)B-tree | gihyo.jp

    SQLアタマアカデミー 第7回性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (1)B-tree はじめに データベースを扱う仕事をしていると、パフォーマンスの問題に悩まされることは日常茶飯事です。とくに最近は、データベースに格納されるデータ量が飛躍的に増え、サーバのCPUやメモリといったハード面の増強だけでは追いつかないことも多くあります。 そのようなケースに対応するため、DBMSは性能改善のための手段を多く用意しています。その中で最もコストパフォーマンスの良い方法が、インデックス(索引)です。アプリケーションにもハード構成にも影響を与えずに実行でき、うまくいかなければすぐに削除できるという手軽さが大きな魅力で、効果はしばしば絶大です。 インデックスにはいろいろな種類があり、またDBMSによってもサポートする種類に差がありますが、稿では最も重要な2つを取り上げます。それ

    第7回 性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (1)B-tree | gihyo.jp
  • 第6回 SQLで木構造を扱う~入れ子区間モデル (3)フラクタルとしての入れ子集合 | gihyo.jp

    フラクタルとしての入れ子集合 フラクタル 入れ子区間モデルでノードを挿入するときに重要な役割を果たす公式ⓐとⓑ(第6回 SQLで木構造を扱う~入れ子区間モデル(1)参照)は、区間(線分)を3分するための2点を与えるものです。そしてこれを繰り返し適用すると、同じ構造を持つ小さな入れ子集合を次々と作ることができます。 このような自己相似的な図形をフラクタルと呼びます。フランスの数学者マンデルブロが1977年に一般化した概念で、日でも一時期はやりました。海岸線や樹木の形など自然界にも多く存在する形状ですが、それだけでなく経済活動など人間社会にもこれに近似した現象が観察できることで知られています[4](⁠図8⁠)⁠。 図8 フラクタル図形の一種:シェルピンスキーのギャスケット ※ この図は、Wikipedia語版の「シェルピンスキーのギャスケット」に掲載されている図をベースにアレンジしていま

    第6回 SQLで木構造を扱う~入れ子区間モデル (3)フラクタルとしての入れ子集合 | gihyo.jp
  • 第6回 SQLで木構造を扱う~入れ子区間モデル (2)稠密性について | gihyo.jp

    稠密性(ちょうみつせい)について 前回から見えるように、整数から有理数へ範囲を広げることの利点は非常に大きいのですが、その理由は、有理数が整数にはない稠密性(ちょうみつせい:density)という性質を持っていることにあります。あまり日常で使う言葉ではありませんが、直感的に言えば物がぎっしり詰まっているということです。もう少し数学的に厳密に書くと、 x<yを満たす任意の数x、yについて、x<m<yとなる数mが存在する となります。平たく言えば、どんな2つの数の間(区間)にも、まだまだ無限に数がある、ということです。 ここでキーとなるのは「任意の」という言葉です。特定のx, yではなく、大小関係を満たすあらゆる数のペアについて成立することがキモです。たとえば、1と2の間には、0.5という数が存在します。今度は1と0.5の間で見ても、0.25というさらに中間の数が存在します。後は同じ手順で、1

    第6回 SQLで木構造を扱う~入れ子区間モデル (2)稠密性について | gihyo.jp
  • 第6回 SQLで木構造を扱う~入れ子区間モデル (1)もしも無限の資源があったなら | gihyo.jp

    はじめに 前回では、入れ子集合モデルという、リレーショナルデータベースで木構造を扱うための新しい方法論を紹介しました。このモデルは、RDBSQLと親和性の高い優れたものではあるのですが、挿入など更新時に、無関係のノードまで変更対象としなければならないのが大きな難点でした。 そこで今回は、上記の欠点を解消する進化版のモデルを紹介します。この方法を理解していく過程で、私たちはRDBと集合論の結び付きの深さを再確認することになります。 ふだんこの連載は、1回完結の読み切り形式なのですが、今回に限り、前号の内容を前提としています。未読の方は、前号を先に読むと理解が増すでしょう。 稼働環境 すべてのリレーショナルデータベース もしも無限の資源があったなら 座標に整数のみを使う場合の限界 入れ子集合モデルの大きな欠点は、ノードを挿入(追加)するときに、自分より「右側」にある無関係なノードをもっと右へ

    第6回 SQLで木構造を扱う~入れ子区間モデル (1)もしも無限の資源があったなら | gihyo.jp
  • 素朴なBigtable、できること できないこと

    素朴なBigtable、できること できないこと:分散Key-Valueストアの命「Bigtable」(2)(1/2 ページ) RDBとは別の、クラウド時代のデータベースとして注目を浴びている「分散Key-Valueストア」。その命ともいえる、Googleの数々のサービスの基盤技術「Bigtable」について徹底解説 あまりにもRDBとは異質な「Bigtable」 前回の「もう1つの、DBのかたち、分散Key-Valueストアとは」では、連載第1回目として、クラウドコンピューティングにおける新しい潮流である「リレーショナルデータベース(RDB)から分散Key-Valueストア(分散KVS)への移行」が、どのようなパラダイムシフトをもたらすのかを解説しました。今回からは、グーグルが運用する代表的な分散KVS「Bigtable」の内部構造を紹介し、クラウドの質をより深く掘り下げます。 前

    素朴なBigtable、できること できないこと
  • 転置インデックスを実装しよう - mixi engineer blog

    相対性理論のボーカルが頭から離れないmikioです。熱いわっふるの声に応えて今回はTokyo Cabinetのテーブルデータベースにおける検索機能の実装について語ってみたいと思います。とても長いのですが、最後まで読んだあかつきには、自分でも全文検索エンジンを作れると思っていただければ嬉しいです。 デモ モチベーションをあげていただくために、100行のソースコードで検索UIのデモを作ってみました。Java 6の日語文書を対象としているので、「stringbuffer」とか「コンパイル」とか「倍精度浮動小数」とかそれっぽい用語で検索してみてください。 インデックスがちゃんとできていれば、たった100行で某検索エンジン風味の検索機能をあなたのデータを対象にして動かすことができます。ソースコードはこちら(テンプレートはこちら)です。 でも、今回はUIの話ではないのです。ものすごく地味に、全文検索

    転置インデックスを実装しよう - mixi engineer blog
  • GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ
    flakwing
    flakwing 2009/06/26
    入れ子集合モデル
  • DBMによるテーブルデータベース その弐 - mixi engineer blog

    インフルエンザで休んだ影響で仕事が鬼のように溜まって消化不良のmikioです(こんな記事を書いている場合じゃない)。さて今回は、Tokyo Cabinetでリレーショナル風データベースを実現したテーブルデータベース(TCTDB)の実装について説明します。 SQLiteとの違いは? SQLiteはアプリケーション組み込み型のSQL対応リレーショナルデータベースのライブラリです。TCのテーブルデータベースよりもはるかに高機能で、それでいて性能も大変優れています。いわゆるデスクトップアプリケーションに組み込むデータベースをお探しであれば、TCなんかではなく、断然SQLiteがおすすめです。 一方で、TCなどのDBMは、より単純なデータ操作をより高速に実行できるように設計および実装されています。典型的なユースケースとして、大規模Webサイトのアカウント管理や、データマイニングに伴う集計操作が挙げら

    DBMによるテーブルデータベース その弐 - mixi engineer blog
  • インデックスの基礎知識

    ■ インデックスとは データベースの世界で、インデックス(索引)とはテーブルに格納されているデータを 高速に取り出す為の仕組みを意味します。 インデックスを適切に使用することによってSQL文の応答時間が劇的に改善 される可能性があります。 インデックスにはB-Treeインデックスをはじめ、ビットマップインデックス、 関数インデックスなどの種類がありますが、ここでは最も一般的に使われ、かつ ほとんどのDBMSでサポートされているB-Treeインデックスについて解説します。 ※ CREATE INDEX文でオプションを指定しない場合は通常B-Treeインデックスが 作成されます。 ■ B-Treeインデックスのしくみ B-Tree(Balanced Tree)インデックスは次のようなツリー状の構造になっています。 ツリーの先頭はヘッダブロックと呼ばれています。ヘッダブロックでは、キー値の 範囲

  • DBAzine.com: Trees in SQL: Nested Sets and Materialized Path

    Path 1.1.2 indicates that FORD is the second child of the parent JONES. Let's write some queries. 1. An employee FORD and chain of his supervisors: select e1.ename from emp e1, emp e2 where e2.path like e1.path || '%' and e2.name = 'FORD' 2. An employee JONES and all his (indirect) subordinates: select e1.ename from emp e1, emp e2 where e1.path like e2.path || '%' and e2.name = 'JONES' Although bo

    flakwing
    flakwing 2008/09/15
    入れ子集合モデルと経路列挙モデルの解説。ただし英語
  • MySQL :: MySQL Forums

    Forum to discuss quality assurance techniques, such as bug reports, test cases, code patches

    flakwing
    flakwing 2008/09/15
    ネストしたセット・モデル と訳されているが入れ子集合モデルの解説
  • mixi Engineers’ Blog » 圧縮データベースを使おう

    チャリンコ通勤による滝のような汗で、朝からTシャツがシースルーになってしまうmikioです。さて今回は、Tokyo Cabinet(TC)のデータベースを各種のアルゴリズムで圧縮して利用する方法についてご紹介します。 圧縮B+木 B+木とは、比較関数の値による順序が近いレコード群を単一のページにまとめ、各ページにB木(multiway balanced treeの略であり、二分木(binary tree)とは違います)の索引を張ったものです。理論的にはレコードの探索も更新も O(log n) の時間計算量で行え、内部ノード(B木)の操作をキャッシュすると実質的には O(1) の時間計算量で探索や更新が行えるという、かなり安定した性能を備えるデータ構造です。その上、レコードが一定の順序に基づいて並べられているので、数値の範囲検索や文字列の前方一致検索が高速に行えたり、カーソルによって順序に基

    mixi Engineers’ Blog » 圧縮データベースを使おう
  • http://labs.cybozu.co.jp/blog/kazuho/archives/2008/06/friends_timeline.php

  • 最短かつ最速にアクセスする「DB高速化技術」(前編):ITpro

    ポイント ・高度なインデックスやジョインを利用し,最短経路でデータにアクセス ・メモリー不足を自律的に解消し,キャッシュのヒット率を高める ・インメモリーDBは全データをメモリーで処理し,高速化を図る 目的地に早く到着したいなら,最短の経路を最速で行けばよい。これはデータベース(DB)でも同様だ(図1)。インデックスなどを使ってデータへの最短経路を見つけ,メモリー・アクセスを増やして,最速でたどり着く。DBにはそんな技術が詰まっている。 図1●データベース高速化技術のポイント ビットマップ・インデックスなどを使い、データにたどり着く最短の道を選ぶ。また、できるだけメモリーにデータをキャッシュさせておくことで、アクセスのスピードを上げる、という二つのポイントがある [画像のクリックで拡大表示] 以下では,(1)データにたどり着く最短の道を選ぶ仕組みと,(2)アクセスのスピードを上げる仕組みの

    最短かつ最速にアクセスする「DB高速化技術」(前編):ITpro
    flakwing
    flakwing 2007/09/12
    高度なインデックスやジョインを利用, パーティショニング, メモリチューニング, インメモリーDBなどについて
  • 画像もDBに格納して管理する -扱いがめんどうなLOB(ラージオブジェクト)は使わない方法も含め

    ywcafe.net This Page Is Under Construction - Coming Soon! Why am I seeing this 'Under Construction' page? Trademark Free Review our Privacy Policy Service Agreement Legal Notice

    flakwing
    flakwing 2007/08/14
    画像をbase64エンコードしてテキスト化して文字列型カラムにつっこんどく方法。
  • 1