ページ内ジャンプ:

アレゲなニュースと雑談サイト

mhattaによる 2008年01月21日 7時30分の掲載
memcachedとかtmpfsとか…部門より。

backslashdot 曰く、

ITproに、「既存のDB技術と一線を画し、高速検索を実現する」というふれこみのデータ検索技術が紹介されている。 HOWSという企業が開発した「ISSEI」というVisualBasicで開発されたシステムらしいのだが、 高速検索性を最優先とするために、OSの基本機能であるファイル名検索に目を付け、 そこで検索対象となるファイルに含まれるデータそのものを全て「ファイル名」として管理することにしたということだ。 ファイルに含まれるデータそのものを、62進数(アルファベット大小文字+数字で26*2+10=62ということか?)の文字列に変換し、それらをファイル名の集合体として別途管理するらしい。 確かにこの方法であれば、HDDのファイル本体にはアクセスすることがないとも言えるわけだが、 記事の最後にあるように「次はOSメーカーと共同開発し、ISSEIをOSの標準機能として盛り込みたい。最終的にはISSEI専用チップをメーカーと開発するのが目標だ」という方向が望まれるような、画期的技術と言ってよいものだろうか。

ちなみに、この手法を応用(?)してどんなデータも圧縮率100%のファイル圧縮ツールを作った人もいます。

関連ストーリー

この議論は賞味期限が過ぎたので、保存されている。 新たにコメントを書くことはできない。
表示オプション しきい値:
  • virtual (15806) : 2008年01月21日 8時00分 (#1283757)
    ダウンロードしたことになるのですね。
  • 笑いどころ (スコア:5, おもしろおかしい)

    Anonymous Coward : 2008年01月21日 8時53分 (#1283769)
    >ストップウオッチを片手に
    なんという手作業

    >ISSEIはマイクロソフトの「VisualBasic」で開発した。
    (中略)
    >処理の高速性を最優先し
    (;`・ω・)

    >最終的にはISSEI専用チップをメーカーと開発するのが目標だ
    そこまでするなら、この手法を取っている意味が無くなるのでは・・・?
  • 一方MSは・・・ (スコア:5, おもしろおかしい)

    Anonymous Coward : 2008年01月21日 9時58分 (#1283796)
    ファイルシステムをDBにした。 [wikipedia.org]

    ・・・いや、しようとした。
  • それはCAS (スコア:5, 興味深い)

    okky (2487) : 2008年01月21日 11時47分 (#1283852) ホームページ 日記
    Content-addressable storage
    ahref=http://en.wikipedia.org/wiki/Content-addressable_storagerel=url2html-10207 [slashdot.jp]http://en.wikipedia.org/wiki/Content-addressable_storage>

    そのものでございますな。『オブジェクト』と言う名のバイト列を見つけ出すのに、そいつが保持しているデータそのものを利用する、という。

    # 普通は高速に検索するために「ファイル名」に相当する部分には
    # ハッシュ値を使い、ファイル名そのものにデータを乗っけたりは
    # しないものですが…

    EMC の Centera とか、Tivoli Storage managerとか、
    Linus の git とかも CAS の一種です。

    CAS のいい所は、一度書いたら「データを変更できない」事。
    データを変更しようとすると「別のファイル名」になってしまう。

    …と言うわけで。多分この特許は通らないか、通るとしたらよほど
    審査官が間抜けだと思います。日本語版にはまだ無いとはいえ、
    ほぼ同案が Wikipedia に載っているんですから。
    --
    fjの教祖様
  • いっそのこと (スコア:4, 参考になる)

    Anonymous Coward : 2008年01月21日 8時53分 (#1283768)
    ファイルシステムなんかなくしちゃえ!
    なんて論議もありましたっけ。

    論者曰く、現在のCPUが直接管理できるメモリアドレスは十分に広大であるので、それをカバーできる大きさの、かつ速く不揮発の主記憶装置さえあれば、ファイルシステムなど不要であるという論議です。

    # さて、現実性は。
  • Stealth (5277) : 2008年01月21日 9時47分 (#1283790)

    Visual Basic 製と言う事は NTFS 上で利用する事になると思うのですが……。

    肥大化した MFT によりディスク領域が圧迫され、しかも別途デフラグソフトを購入しないとデフラグが出来ない (OS 標準のデフラグは MFT の整理をしない) 物が出来上がったと言う事ですか。

    RDB でもフルテキストインデックスとか、今時サポートしていない方がレアだと思うんですけどねぇ。

    NTFS なら小さなファイルなら MFT に突っ込んじゃうのだし、それこそ Windows Desktop Search や Google Desktop Search と連動させてデータを小さなファイルとして保持させ、検索自体は WDS や GDS とかに任せた方が効率的なんじゃないかと思う。

    多少データが増えたところで、単なるミラーリング & インデックス再生成程度で環境移行も出来ちゃうし。

    つーかこれ、書庫ファイルでバックアップ取ろうにも zip とかじゃファイル名は圧縮されないから tar + gzip/bzip2 とかじゃないと悲惨だよね。NTFS 上に Unicode ファイル名で記録すると約 32,000 文字とか使えちゃうから、下手な fs 上じゃ展開できないんじゃない?

    # 説明されたのに金を出した客の方がすごいと思う。

  • NTFS (スコア:4, 興味深い)

    sayuporn (33927) : 2008年01月21日 14時58分 (#1283950) 日記
    このCTOがWindowsしかしらなくて、MySQLとかSQLiteとか使いたくなかった、
    苦肉の策なんじゃないかなあ(私なら50万円くらいでごにゃごにゃ)。

    NTFSは検索は速いですけど追加と削除が遅いですね。
    NTFSでハードリンク張りまくってバックアップとって、
    いざ削除しようとしたら100万ファイルくらいの削除に2ヶ月かかりました。
    マジで。
  • Anonymous Coward : 2008年01月21日 7時36分 (#1283753)
    RFC1776 [imasy.or.jp] (アドレスにデータが全部入ってる)と
    RFC1924 [ocn.ne.jp] (IPv6アドレスを文字で短く表現)の合わせ技で同じことが出来るかな?

    どちらも4月1日発行モノ。
    • Anonymous Coward : 2008年01月21日 8時34分 (#1283762)
      大昔 TSSを使っていた頃 ディスク容量の割り当てを突破するのにファイルの内容自体は空でいっぱいファイルを作ってそのカタログで情報を記憶させるというネタを思い出したよ。
      この記事もプログラムの改修を最小限に押さえて高速化を図るのにOSが持っている効率的なアルゴリズムを活用したとかいう話ならわかるけど、何と言うかCTOがアルゴリズムとか知らない頭悪い人に見えてしまう。
  • Anonymous Coward : 2008年01月21日 8時34分 (#1283763)
    増井 俊之さんの
    Unix Magazine「インターフェイスの街角」
    1999年11月号 「シグナチャを用いた超お手軽検索システム」
    と根本的思想は一緒?なのかしら?
  • ストップウオッチ… (スコア:2, すばらしい洞察)

    kcg (26566) : 2008年01月21日 8時47分 (#1283766)
    詐欺にしちゃ100万円程度しか集められなかったようですが、技術的な優位性や先進性があると本気で思っているのだとしたら情けない話です。
    開発するほうも、それで満足してしまう顧客も、日経の記者も。

    これで高速化できてしまうような質の社内システムとやらがはびこっているのが現実と言うことですか。

  • Web2.0時代の技術らしい (スコア:2, おもしろおかしい)

    Anonymous Coward : 2008年01月21日 10時07分 (#1283806)
    「Web2.0時代を迎え、今後企業はさまざまなチャネルから、データを大量に収集・蓄積しなくてはならない。データがあっても、それらを素早く検索・抽出して業務に役立てなければ意味がない。」(HOWS「ISSEI(イッセイ)」:ITproより)

    #素早く考えすぎたのだろう.
  • 62進数… (スコア:2, 興味深い)

    taka2 (14791) : 2008年01月21日 11時51分 (#1283857)
    MIMEのBase64のように、あと2文字足して64進数にした方が便利だと思うんだが、それすら思いつかなかったでしょうか?

    実際には、Base64は A-Za-z0-9+/を使うため、/をファイル名に使えないので、ファイル名への符号化には使えないんだが、
    Imap4ではメールボックス名をファイル名に使っても問題ないように、
    メールボックス名は/の代わりに,を使うUTF-7(UnicodeをBase64で表現する方式)の修正版 [www.lins.jp]で表現する仕様になってます。

    #パスワード(というか復活の呪文的なもの)に「lとIと1」「Oとo」「9とQ」といった紛らわしい文字を使わないようにした37進数での符号化を使ったことがありますが、コードが無駄に複雑になってしまいました。
    #もうちょっと減らして32進数にしとけばよかったと気付いた時のは後の祭り…
  • 62進数エンコード (スコア:2, すばらしい洞察)

    lynnlynn (15967) : 2008年01月21日 12時15分 (#1283869)
    attrib を使えばあと2bit容易に足せたのに...
  • quickHackとしては上出来なような気がする。顧客も満足してるみたいだし。
    # 技術的には自慢できるようなもんはないがな。
  • Anonymous Coward : 2008年01月21日 13時43分 (#1283917)
    画像データを集めるのが趣味なので、膨大なファイルの中から同じ画像がすでにあるかどうかを探すのに、画像ファイルすべてのMD5値のリストを作って、それを検索してチェックしています。中身が同じなのに名前が違ったりして、ファイル名が役に立たないことが多いから。

    #さすがに、見た目同じでデータ的に違うものは無理だけど。JPEGで再圧縮かけたやつとか。

    あと、そのファイルの中から壁紙として使うものを、別のディレクトリにシンボリックリンクで集めたりしてますが、そのシンボリック名にMD5値を使っています。こっちは異なるディレクトリに中身の違う同名のファイルがあった場合への対策ですが。

    ファイル名にファイルの内容を直接反映させたり結びつけたりなんて、普通にみんなやってることじゃないんですか?
  • Anonymous Coward : 2008年01月21日 8時35分 (#1283764)
    技術と似ているなんか違うもの、という感じがしないでもない。
    • Tsann (15931) : 2008年01月21日 11時28分 (#1283845)

      その理由について庄司副社長は、「現在主流のRDBが限界に近付いているから」と述べる。「RDBを使えばデータを効率よく管理できるが、大量のデータを自由かつ高速検索できるようにするには、膨大なコストと手間がかかるといった短所もある」と指摘する。
      VBという言語を悪く言うつもりはないですが、VB使いというのは往々にして他の言語を知らない井の中の蛙的なイメージがあります。たとえばストアドプロシージャ(という別言語)にも手を出せない、とか。そんな中でRDBを使いこなせないレベルの人の視線で見つけた技術と呼べるのかもしれません。

      ところで言われているようにRDBって限界なのでしょうか?
      • Ryo.F (3896) : 2008年01月21日 14時54分 (#1283947) 日記

        そんな中でRDBを使いこなせないレベルの人の視線で見つけた技術と呼べるのかもしれません。
        そうなのかなぁ。シャレだと信じたいけど。

        ところで言われているようにRDBって限界なのでしょうか?
        限界、っつーか、元々向き不向きがあるよね、ってだけだと思います。
        そもそも、構造化不十分な(あるいは、まったく構造化されていない)テキストデータを扱うような場合、それを二次元の表に格納しても、ほとんど得はありません。テキストファイルの中身をMS-Excelに貼り付けるようなもの。
        たとえば、全文検索が目的なら、RDBより接尾辞木に格納した方がマシ。元々データ構造の目的が違うんだから。

        ただ、既成のRDB製品はたくさんあって、RDB技術者がたくさんいるので、目的外使用だけどRBDが使われていて、それでも性能は上げなきゃいけないから、RDBにいろんなデータ構造(インデックス)をくっつけて誤魔化しています。
        まあ、その誤魔化しは、そこそこ巧く行ってるので、まだまだRDBは限界とは言えないんじゃないかな。
      • 2個のコメント が現在のしきい値以下です。
    • Re:技術というよりは (スコア:2, おもしろおかしい)

      vn (10720) : 2008年01月21日 8時47分 (#1283765) 日記
      擬術。
    • 1個のコメント が現在のしきい値以下です。
  • 20年くらい前に (スコア:1, 参考になる)

    Anonymous Coward : 2008年01月21日 9時07分 (#1283772)
    Ah!Ski か ascii.net で見かけたネタのようだ。

  • オンメモリデータベースの出来損ないってことですかね?

    ディスクの管理領域はメモリにキャッシュされている率が高く、そこをストレージ領域に使った場合は確かに高速にアクセスできるでしょう。オンメモリデータベースで難しい、不揮発性メモリとの同期の部分をOS任せにできるので実装も楽になるかな?でも、人に自慢げに話せる実装ではなく、恥ずかしくて人に言えない類の実装だと思うんだけどねぇ。
    • Re:一言で説明すると (スコア:3, すばらしい洞察)

      tnk (13707) : 2008年01月21日 16時57分 (#1284016)
      >オンメモリデータベースの出来損ないってことですかね?

      いや,WindowsのIndex Serviceを使用していると,ファイル名による検索が
      高速化されることに気がついて,それをRDBのかわりにつかった検索システムを
      構築した,ということではないかと。

      問題は,そのIndex Serviceの内部で使われている技術がRDBの技術そのもので
      あることを知らずに,「DB技術の限界を超える」とかいってしまっているところ。
  • 127.0.0.1 (33105) : 2008年01月21日 9時31分 (#1283783) 日記
    何かこんな話ついこの前あったような。
  • 1兆件 (スコア:1, 参考になる)

    Anonymous Coward : 2008年01月21日 12時17分 (#1283870)
    普通のパソコンで1兆件のデータ検索4秒しかかからないそうです
  • 普通の企業に外注で出すと、実際にかかるであろう人月分の給与の7~15掛けくらいの数字で見積もりが帰ってきます。
    この人がいくらの給与をもらってるか知りませんが、この仕事を3ヶ月で3人くらいだとして9人月。
    一人50万の給与だとして、450万円。
    で、それの×10として4500万。

    「その製造業の担当者が他のITベンダーに同じ相談をしたところ、市販のRDB製品で構築するとなると数千万円かかると言われ、私のところに相談に来た」
    そのように計算すると↑の数字はけっこう普通。
    (ちょっと過剰に見積もりすぎな気もするけど)

    多分この会社は人月の計算がおかしいか、見積もり時の倍率が過剰に低いんじゃないかなぁ。
    エンジニアを安売りしているだけの気がする。
    メンテナンスコストとか含まれてないだろうなぁ。
    --
    賛同はACで。反論はIDで。カルマボーナスはチキン。
  • Anonymous Coward : 2008年01月21日 12時31分 (#1283877)
    コンピュータ上のデータ整理をしたいと思って、見積もりを取ったら
    ・あるメーカーは数千万円
    ・HOWSは数百万
    の回答があったので、同じことが出来るのであれば安いほうがよいから発注した
    というのがクライアント側のアクションでは。
    そして、この方法がうまくいったら数千万円コストダウンできて万歳と。

    詳しい見積もりしようが分からないので何とも言えないかもしれないけど、この方法の欠点ってどこにあるのでしょう。
    ・Microsoftが推奨してない:でも問題なく動いてるから
    ・Windowsのバージョンアップ or アップデートに対応できない:そんなこと普通では
    ・スケーラビリティがない:普通の方法に比べて1桁安いので、仕様追加してもそんなに高くつかないだろう
    • okky (2487) : 2008年01月21日 13時37分 (#1283914) ホームページ 日記
      ・データを見つけるのと、ファイルを見つけるのが等価になってしまっている。

      に尽きるのではないかと。

      1) Security 上の問題がある。
        普通なら「ファイルが open できなきゃ安全」なはずのデータが全部曝されている。何しろ、ファイル名を変更できればデータ変更は出来るわけですから。

      2) PATH 名検索が死ぬほど遅いと思う。
        例えば、データ中に "fjの教祖様" が入っているレコードが欲しければ、
        "*fjの教祖様*" という PATH を探すことになるのだろう。が、
        それは結局 O(n) の検索になるんじゃないのか?

        完全一致ならば HASH とか NTFS の path 名が平衡木管理になっているのとかで
        DBMSでindex を張った状態と同じになるのだろうが、任意の
        「真ん中のデータ」が一致しているのを探すのに必要な処理は、
        馬鹿正直なサーチぐらいしか実装されていないと思うんだ、NTFSには。

        これは根本原理に問題があると言うことなので、救いがたい。

      3) Transaction 処理ができないのでは…
        いや、これは VB で書いている部分で頑張るのかもしれないが…。
        重たそうだな。

      4) で、実際のところ、ファイルを open して中身を検索して close して…を繰り返すのとどっちが早いのさ??!
        ここで比較するべきなのは、ファイルを open/close する部分を
        非同期 システムコールで実装して、同時に複数走らせた場合。
        旧来の同期型 open/close だと一度に1つのファイルしか開けない/閉じれない
        のでそこが重たくなるが…。うーむ。本当に早いか?? これ…

      と言うわけで、大いに疑問だ。DBMSの事もファイルシステムの事も本質的に判っているとは思えない…。
      --
      fjの教祖様
      • 画期的な (スコア:3, すばらしい洞察)

        pam (35548) : 2008年01月21日 14時45分 (#1283941)
        情報漏洩の手段
      • Re:安けりゃよい (スコア:2, 参考になる)

        Stealth (5277) : 2008年01月21日 18時38分 (#1284104)

        んー、どうでしょうね。

        1) Security 上の問題がある。

        ACL でフォルダに対して適切な制限が与えられていれば、ディレクトリリストの一覧は取れません。

        ただ、OS 側がインデックス化しているためインデックスの問い合わせ権限があると情報が取れる可能性はあり。

        2) PATH 名検索が死ぬほど遅いと思う。

        そこは Windows Index Search が頑張るところなので。

        3) Transaction 処理ができないのでは…

        それは用途が違うからどうでもいいんです。

        4) で、実際のところ、ファイルを open して中身を検索して close して…を繰り返すのとどっちが早いのさ??!

        これって locate や find と grep のどっちが早いの? って話ですよ。

    • Re:安けりゃよい (スコア:2, すばらしい洞察)

      Offtopics (34135) : 2008年01月21日 13時09分 (#1283899)
      例で出てる中で言うと、スケーラビリティは後からはどうしようもない場合が多く、仕様追加という話ではないってのはあると思う。
  • vn (10720) : 2008年01月21日 16時24分 (#1283992) 日記
    ふと思い出したのだが、
    リレーショナル・データベースよりも高速にSQLを実行する、高パフォーマンスなオブジェクトデータベース [intersystems.co.jp]
    って何なんだろう、という疑問を持ったまま、忘却の彼方に追いやっていたのだった。
    ほんとにこれは何だったんだろう?
  • これってBeOS(HAIKU)のBFSそのものやないですか。そのものというか劣化版というか。
    BFS (Be File System) について教えてください。 [haiku-talkers.net]
    ファイル名以外にも自由にAttribute/Keyを設定できたりQueryで検索したりできるし>BFS
    --
    日本の廃道 [the-orj.org]」やってます。
  • elderwand (34630) : 2008年01月23日 9時32分 (#1284898) 日記
    あまりに面白すぎるので、(お馬鹿だと思うが)やってみた。

    使用言語:最近成長の Python 2.5.1 (Windows XP)

    日本国憲法英語版 [kantei.go.jp]に出てくる単語が、UNIX(Solaris 9)から持ってきた /usr/dict/words に含まれるかどうかを検索。

    辞書(25143語) -> ファイル作成 に 14.484 秒
    日本国憲法英語版 (約5000語) の単語検索に、0.297秒

    ちなみに、リストで検索(線形)すると 4.328秒なので、これより速いが、ディクショナリ(ハッシュ)を作って検索すると、0.063秒。

    ファイル入出力があるので、遅くなるのはあたりまえだが、元記事で、100万件のインデックスをファイルで作るのは、時間がかかってたまらんと思う。

    馬鹿なことをやって時間をつぶしてしまった。(ネタも終ってるので、読む人少ないだろうし)
  • Re:え? (スコア:5, おもしろおかしい)

    Anonymous Coward : 2008年01月21日 9時39分 (#1283788)
    試しにやってみた。 12MBのファイルが0Bのサイズのディレクトリに。 中を見ると長い名前のファイルがいっぱい! ディレクトリをさらにLhaplusなどで圧縮すると サイズが22MBになりました。ちゃんちゃん
  • コメント元の推薦文として,日立の方の

    “ISSEI”はWeb2.0的システム構成において、ビジネスインテリジェンスを構成する重要なキーコンポーネントになると期待しています。多様な情報をセンサネットワークなどを使い、リアルタイムで集計・評価するビジネスアプリケーションの構築に重要な役割を持つはずです。このようなことから、新世代のソリューションコンポーネントとして活用を検討しています。

    っていうコメントがありますが,Web2.0のどこに関係するのかとか,センサネットワークだったら取れる情報はほぼ定型なんだからそれこそRDBでいいんじゃないのかなとか,半定型だったとしてもXML DBを組み合わせた方がデータの利活用がしやすいんじゃないのかなとか反論したくなります.とはいえ実際にセンサネットワークに携わったことがないのでなにかISSEIだとぴったりなことがあるのかもしれませんが.
    --
    ペーストビン [windy.cx]
  • Re:他の記事 (スコア:4, すばらしい洞察)

    okky (2487) : 2008年01月21日 16時47分 (#1284004) ホームページ 日記

    「膨大なコストと手間がかかる」(市販のRDB製品で構築するとなると数千万円かかる)のを改善(自社製品だと1/10の価格で出せますよ、と)しただけじゃないですか?


    えー、本当かなぁ。

    PostgreSQLでも MySQLでもインストールして、index まじめに張るだけジャン??
    # そりゃ Oracle 入れればそういう金額になるけどさ。

    ベースのソフトは無料だし、たかが数M entry に対して数百万かけてチューンして良いなら、これぐらいの性能は普通に出ると思うんだが…。
    --
    fjの教祖様
  • Offtopics (34135) : 2008年01月21日 17時25分 (#1284046)
    > それは違うだろ。・・・と。

    だよね! 0バイトになるってことは 100% じゃないもんね!

    # 圧縮率って、100MB->1MB が 100%なの?
  • Anonymous Coward : 2008年01月21日 18時04分 (#1284079)
    MFT領域の最適化をしてないなら、件数が増えてMFT予約領域を使い果たしたとたんにパフォーマンスが著しく低下すると思う。
    もしも、データの特性(1件あたりの大きさや件数)からクラスタサイズやMFT予約領域のチューニングをしたりしてるなら、「NTFSの特殊用途のための運用技術」として認めてもいいような気がしないでもない。
  • それは CreateFile (要は open) のパラメータに大文字/小文字を同一視しないというパラメータを設定していないから (標準は同等扱い) というだけですよ。

    ただ、制限上大文字と小文字が違うだけのファイル名は同一ディレクトリに存在できない、というのもありますが。

    あと、一応 (file ID)_(分割したデータのハッシュ) という形を取ってるようなので、デバイスファイル名 (con とか prn とか) とかぶる事はないでしょうね。

    • emk (30939) : 2008年01月21日 22時25分 (#1284258)

      ただ、制限上大文字と小文字が違うだけのファイル名は同一ディレクトリに存在できない、というのもありますが。

      そんな制限ありませんよ。大文字と小文字を区別するようにパラメータ指定して作成すると同居できますが、大文字と小文字を区別するようにパラメータ指定して開かない限り片方しか開けなくなるので普通やらないだけです。

      ついでにそのパラメータを指定すると予約デバイス名とかぶるファイル名も作成できます。もちろん同じパラメータを指定しない限り開けません。

  • Anonymous Coward : 2008年01月22日 1時18分 (#1284347)
    1レコード100byteで100byteまるまる比較として考えると100万レコードの
    照合は100MB/sなんでディスクのシリアルアクセス速度に近い。というわけで
    レコードサイズとか照合方法は知らんけどリニアスキャンなら早い。

    でも、インデックス使うのなら(普通のDB)別に普通の速度。

    今回のはインデックスというより検索キーが確定すると即アドレス(パス)が
    取れるという構成らしいので、そもそもスキャンという処理はないんじゃ?
    単にパス辿る時のエントリルックアップ時間だけだろう。
  • 11個のコメント が現在のしきい値以下です。