質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1225閲覧

隣接リストモデルをredisで実装する。

nakatievent

総合スコア38

NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/09/16 14:47

質問お願いします。

今回、共同開発で下記のような「マインドマイスター」のようなアプリを開発することになりました。
イメージ説明

自分はサーバー側railsを担当することになり、データベース設計を下記のようにしたところ、クエリが大量発生するからNoSQLredisで実装しようということになりました。

redisを使用して実装してみようということになったのですが、どのように実装すれば良いか分かりません(イメージが全く湧きません)。

HMSET rails id 1 parent_id null name rails
HMSET rails id 2 parent_id 1 name mvc
HMSET rails id 3 parent_id 1 name gem
HMSET rails id 4 parent_id 1 name ruby
HMSET rails id 5 parent_id 2 name model
HMSET rails id 6 parent_id 2 name view
HMSET rails id 7 parent_id 2 name controller

一応redisのハッシュの書き方を見て、↑のように実装してみたのですが、当たってますか?
どなたか分かる方いましたら教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

今回実装されようとしているものは、「木」呼ばれるデータ構造です。
葉(ノード)同士の関連を表現する必要があるので、リレーショナルDBで実装したほうが葉の入れ替えが起きたときなど、最低限のデータ入れ替えで済むなど、実装上の利点が大きいように思います。
redisで実装しようと思うと葉の付け替えなどに関してはかなり工夫しないと行けない気がします。
redisで実装するように提案した方に、どのような意図を持っているか、またどのような実装イメージがあるか聞き、一緒に検討してもらってください。
アプリケーションの使われ方や想定が、提案者と質問者さんで齟齬があるかもしれません。

ちなみにリレーショナルDBで木構造を実装する場合、もう少しいい方法があります。こちらの記事を見てみてください。質問者さんが載せてくれているのは、こちらの記事のナイーブツリーというものになります。
https://qiita.com/hirashunshun/items/06adf4f42f03a9f3b63d

投稿2020/09/27 03:17

my_oji

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nakatievent

2020/09/27 04:30

そうなんですね! 葉の入れ替えという概念は初めて聞きました。 redisで実装する理由は、RDBだとクエリが大量発生するかららしいです。 とりあえず、記事を参考に実装頑張ってみようと思います。 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問