2011-07-23 9 views
4

ディレクトリ構造をファイルシステムに格納する階層型データベースを開発したいと思います。ただ、どのように私はapache Cassandraで階層データベースを構築するのですか

 
Root 
    -dir 
    -subdir 
    -subdir 
     -subdir 
      -subdir 
      -subdir 
    -subdir 
    -subdir 

のように私はこの

ためにApacheカサンドラを使用することができます

Javaの例を理解する方がよいでしょう。

+0

ほとんどの技術的意味では、これが可能です。各行には「parent」という名前の列があります。しかし、ツリーを横切ること(カサンドラのほぼすべての反復操作のように)は非常に遅く、非効率的です。ありがとう、 –

+0

もっと明確にするための例を挙げてください。 – JOHN

+1

+1私は正確な用語を検索して、この親類のデータベース関係を階層型データベース構造と呼んでいませんでした。 –

答えて

7

あなたは、列ファミリのパスのデータ、種類や親を格納することができ、カサンドラと

paths { #colum family 
    "/some/path" { # key 
     "type" : "file|directory" #column, either file or directory, if this is a file or a directory 
     "data" : "??" # if this is a file, the data for the file. you don't want to be storing very large files in cassandra in one column 
    } 
} 

、あなたは奉仕する非正規化する必要がありますあなたが実行しようとしているクエリ。おそらく、ディレクトリの子を照会し、その構造を持っているように、

children { #column family 
    "/some/path" { # key 
     "child-path-1" : null #column, one for each child of /some/path 
     "child-path-2" : null 
    } 
} 

あなたがしたい他のクエリをサポートするために、より多くの列ファミリを追加します。

+0

+1。ありがとう。 – JOHN

1

こんにちは、これは私がリレーショナルdbmsスキーマのためにやることです。

product{ 
    id int, 
    parent_id int, 
    name varchar2(30) 
} 

サンプルデータ:

product 
-------------------- 
id | parent_id | name 
0 | 0   | root 
1 | 0   | laptop 
2 | 0   | pc 
3 | 1   | Dell Latitude E4310 
4 | 1   | Dell Vostro E3300 
5 | 2   | Compaq Desktop 3 
6 | 2   | Compaq Presario 2 
+1

+1例の場合。実際、これはRDBMSで階層データを実装するための素晴らしいアイデアです。しかし、私はそれがそのような構造を実装するためにプログラミングする必要があると思います。ルートを削除すると、すべての子孫を削除するコードを記述する必要があるとします。私が間違っている場合は修正してください。 – JOHN

+0

アイテムがファイルまたはディレクトリであることをどのように知っていますか?説明のために – metdos

関連する問題