タグ別アーカイブ: データ構造

漢(オトコ)のコンピュータ道: データベースアプリケーション開発を炎上させる負のスパイラル

なぜ人は正規化を蔑ろにするのか。そのことについて近年私の中でひとつの大きな発見があった。「正しいデータベース設計をするぞ!」と意欲的に取り組んだとしても、多くの人が挫折を経験するようになる罠が、リレーショナルデータベースには存在するのである。それは、「全てのテーブルを正規化できるわけではない」という点である。言い換えると、テーブルには正規化できるものと出来ないものがあるということだ。この点を見逃してしまうと、本来は正規化できない、あるいは正規化するに値しないようなテーブルを正規化しようとしてしまうことになるが、それは当然うまくいかない。すると「正規化理論なんて実践では適用できない」「正規化など意味がない」と言った考えにとりつかれてしまうことになる。

ところで、正規化できるテーブルとそうでないものの違いは何であろうか。実は、正規化できるテーブルというのは、そこに含まれるデータが「事実の集合」として表現できるものである。この「集合」というのがポイントなのだが、集合の要素には重複がなく、要素同士に順序がなく、NULLが含まれていない。そのように「集合」としてデータを表現できるものだけが正規化の対象になる。

ところが、世の中には集合で表現できないデータ構造であふれている。例えばグラフや履歴(時系列)データというものは、集合というデータ構造では表現出来ない。これを無理に集合に当てはめ、正規化しようとしても上手く行くはずがないので、時間の無駄である。

引用元: 漢(オトコ)のコンピュータ道: データベースアプリケーション開発を炎上させる負のスパイラル.

【後藤弘茂のWeekly海外ニュース】CPUとGPUのメモリ空間を統一するAMDの「hUMA」アーキテクチャ

ところがhUMAでは、GPUがCPUと同様にポインタを使うことができる。そのため、CPUとGPUの間の連携は極めてシンプルになる。hUMAではCPUがGPUに単純にポインタを渡すだけで、GPUがそのままCPUのデータ構造にアクセスできるようになる。GPUはそのままデータを更新する。CPUはその結果を、直接読むことができる。複雑なデータ構造の場合も、GPUが組み込まれた構造リンクを追うことができるので、データ構造の転換も一切必要がない。

引用元: 【後藤弘茂のWeekly海外ニュース】CPUとGPUのメモリ空間を統一するAMDの「hUMA」アーキテクチャ.

MySQL/MariaDB向けストレージエンジン TokuDB – 教育は参考資料

MySQL/MariaDB向けストレージエンジン TokuDB – 教育は参考資料: ただ RDBMS の内部データ構造として B -Tree が最適でないことは、近年の研究で明らかになっており Cache-Sensitive B 木とかが開発されている。RDBMS で使われる伝統的な二分木はディスクの block をユニットとして最適化しているけど、in-memory 動作を考えると効率的ではないらしい。よく知らないが。