実現したいこと
MongoDBとRedisに、整合性の機能があるか知りたいです。
発生している問題・分からないこと
MongoDBとRedisにデータベースの整合性の機能がありますか。
ChatGPTに聞いたところ、MongoDBとRedisにはデータベースの整合性の機能があるとのことですが、有識者の方に聞くと、RDBの整合性しかないと言います。
ご回答をいただけますと幸いです。
よろしくお願いいたします。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ChatGPTに聞いたところ、MongoDBとRedisにはデータベースの整合性の機能があるとのことですが、有識者の方に聞くと、RDBの整合性しかないと言います。
補足
RDBの整合性MongoDBとRedisにデータベースの整合性の機能があるか?
どのような機能性を指して「整合性」と考えていますか?それとも、「整合性に資する何らかの機能があるか」という意図でしょうか?
> 有識者の方に聞くと、RDBの整合性しかないと言います
「RDBの整合性しかない」という文の意味がわからないんですが、どういう意味でしょうか? 「データの整合性を保障する機能はRDBにしかない」という意味でそふか?
上のコメントと同じかもしれませんが、「データベースの整合性の機能」とは具体的にはどのような機能のことを指していますか?
maisumakun様
質問へのコメントありがとうございます。
質問内容が十分でなく、分かりにくく申し訳ございません。
おっしゃる通り、「MongoDBとRedisの整合性に資する何らかの機能があるか」という意図です。
具体的には、MongoDBを中心に整合性を取る方法で実装を考えております。
MongoDBに登録し、データを保証、Redisへ表示系データを送り、その後RDBへの保存を行うという流れです。
よろしくお願いいたします。
TakaiY様
質問へのコメントありがとうございます。
質問内容が十分でなく、分かりにくく申し訳ございません。
おっしゃる通り、「データの整合性を保証する機能はRDBにしかない」という意味です。
(先ほどの回答と重複して恐縮ですが、)
具体的には、MongoDBを中心に整合性を取る方法で実装を考えております。
MongoDBに登録し、データを保証、Redisへ表示系データを送り、その後RDBへの保存を行うという流れです。
よろしくお願いいたします。
> MongoDBに登録し、データを保証、Redisへ表示系データを送り、その後RDBへの保存を行うという流れです。
どのような意図を持って、この3つへ分担させているのでしょうか(複数を組み合わせるにしても、RDBMSで整合性を保つ、という形を取れない背景はどのようなものでしょうか)。
maisumakun様
> どのような意図を持って、この3つへ分担させているのでしょうか(複数を組み合わせるにしても、RDBMSで整合性を保つ、という形を取れない背景はどのようなものでしょうか)。
目的は高速化です。RDBはマスタデータとしてあり、MongoDBとRedisで主要なデータを保存したいです。
そのため、MongoDBとRedisで整合性に資する何らかの機能があるか調査しております。
よろしくお願いいたします。
有難うございます。
> 「データベースの整合性の機能」とは具体的にはどのような機能のことを指していますか?
まず、現在のシステムがPostgreSQLのバックエンド中心に画面表示する業務アプリですが、表示速度に問題があります。高速化の改修を検討しておりますが、フロントエンドにローカルストレージにキャッシュを設け、バックエンドにPostgreSQLのフロント寄りに、MongoDB、Redisと増設する予定です。クライアントの要求をRedisかMongoDBに読み込み、整合性を考えております。この後に、従来のPostgreSQLに繋ぐ構想です。このフローに対してRDBでマルチスレッドに登録前にMongoDB、Redisそしてフロントエンドの流れ、もう一方がPostgreSQLに保存のルートの提案が有識者の提案でした。RDBでマルチスレッドに登録前にMongoDB、Redisの流れに整合性よりも高速化しか検討してないようでした、従来のPostgreSQLがデータのベースですが、登録画面からRedis、MongoDB、PostgreSQLの流れを作りたいですが、今までのPostgreSQL DBの整合性からどのようにRedis、MongoDBで整合性を取ったらよいかわかりません、教えて下さい。
MongoDBにもRedisにもトランザクションくらいならありますよということを書こうと思ってましたが、検討されているような多層データストレージの構成では、層間のデータ整合性の方が問題になると思うので、DBそのものの整合性など瑣末な言のように思います。
ご意見ありがとうございます。
> 検討されているような多層データストレージの構成では、層間のデータ整合性の方が問題になると思うので
まだ具体的な実装には着手しておらず、層間の整合性を保つための設計や技術的な方針について検討している段階です。
もし、こうした構成で整合性を確保するための効果的な方法や、参考になる設計の工夫などがありましたら、ご教授いただければ幸いです。
よろしくお願いします。
> 目的は高速化です。RDBはマスタデータとしてあり、MongoDBとRedisで主要なデータを保存したいです。
それだけ「書き込み」の高速化を志向している、という状況でしょうか。
(読み取り側の高速化を考えるなら、RDBMSを正として、そこからレプリケーションやキャッシュを使うというような手段がありえます)
> それだけ「書き込み」の高速化を志向している、という状況でしょうか。
「書き込み」(保存)、「読み取り」(表示)の高速化の改修を検討しています。
> 読み取り側の高速化を考えるなら、RDBMSを正として、そこからレプリケーションやキャッシュを使うというような手段がありえます
「RDBMSを正としてレプリケーションやキャッシュを活用する方法」について、現状ではMongoDBも主要なデータ保存先として活用することを検討しているため、MongoDBとRedisをどのように役割分担させるべきか、また整合性をどう確保するかについてさらに検討が必要だと感じています。
RDBMSを基盤としつつ、MongoDBとRedisを組み合わせた設計について、ご教授いただけますと幸いです。
よろしくお願いいたします。
> 現状ではMongoDBも主要なデータ保存先として活用することを検討しているため
具体的に、(高速化以外も含めて)どのような特性を期待してMongoDBを活用する予定なのでしょうか。
> 具体的に、(高速化以外も含めて)どのような特性を期待してMongoDBを活用する予定なのでしょうか。
目的は高速化です。
例えば、ある事業所や店舗の3ヶ月分のデータなど、部分集合のデータを保存しておき、表示と保存の読み書きのスピードを高速化させることを期待しております。
えっと、書き込みすらオフロードが必要なほど激しくなる想定なのでしょうか?
私自身はそれほど大規模なデータは扱ったことは無く、コメントに躊躇してしまうのですが、気になったもので横からごめんなさい。(異種アーキテクチャ製品の併用、と言うことで興味を覚えています)
もともとの質問は「MongoDBとRedisに異種のDBSとのデータの整合性を高める、担保する、保修する等の機能がありますか」とのような意図ですよね。
で、人間の有識者に聞くと「RDBとの整合性に関する機能しかない」と言われたので、「本当にそうなのか?、あるならその機能は何か?」と思ったので質問されたのですよね。
回答にあたっては「そんな機能は必要なのか? 質問の背景は?」と言う疑問もあって(<いわゆるXY問題を回避する為)、質問内容を明瞭にすべくコメントも続いていると思うのですが、
その機能が有るか・無いかだけの視点でいえばこの質問はいったん終わるのではないでしょうか。
MongoDBとRedisを使うことが目的ではなく、システム全体の高速化が目的なのであれば、今現在遅くて困っている部分の切り分けとか、原因究明とか、データに関してはリアルタイムの反映の必要はなく、別に遅くて構わない加工されたデータで良いものであれば、バッチ処理で表示用のデータにするので充分とか、今のシステムのまま、検討し、対応する場所が色々ある気がします。(<既に何に対応されているのか質問からは分かりません)
現状、質問者さんのその対象の案件のシステム全体、課題の詳細が分からなければ、既にコメントいただいているように整合性を高める必要があるかどうかは些末な問題に思えます。
MongoDBとRedisを導入して、今のシステムの運用やデータ構造を極力そのままに透過的にパフォーマンスを高めたい、との要望であれば話の筋は通りますが、これはもう技術コンサル案件ですね。いち質問で終わる問題では無い気がします。
> えっと、書き込みすらオフロードが必要なほど激しくなる想定なのでしょうか?
はい、現在のシステムは表示(読み込み)・保存(書き込み)のスピード化が課題となっています。
> 質問内容を明瞭にすべくコメントも続いていると思うのですが、その機能が有るか・無いかだけの視点でいえばこの質問はいったん終わるのではないでしょうか。
質問内容が不十分でわかりにくく申し訳ございません。
まだ質問へのコメントだけで、「MongoDBとRedisにデータベースの整合性の機能があるか?」という質問に対する結果が出ていませんので、引き続き回答をお待ちしています。
> MongoDBとRedisを使うことが目的ではなく、システム全体の高速化が目的なのであれば、
MongoDBとRedisを使って、表示スピードの高速化が目的です。
> MongoDBとRedisを導入して、今のシステムの運用やデータ構造を極力そのままに透過的にパフォーマンスを高めたい、との要望であれば話の筋は通りますが、これはもう技術コンサル案件ですね。いち質問で終わる問題では無い気がします。
ご意見ありがとうございます。
> まだ質問へのコメントだけで、「MongoDBとRedisにデータベースの整合性の機能があるか?」という質問に対する結果が出ていませんので、引き続き回答をお待ちしています。
> 具体的には、MongoDBを中心に整合性を取る方法で実装を考えております。
MongoDBに登録し、データを保証、Redisへ表示系データを送り、その後RDBへの保存を行うという流れ
MonngoDB、RedisのDB内でのデータ整合性の機能ではなくて、各DBを連携した上での整合性を取る機能がMongoDBやREdisにあるかどうかを聞いているんでしょうか?
そんな機能あるんでしょうか? 無いと思います。 あったとしてもそれらの外に置く何かでしょうね。
> MonngoDB、RedisのDB内でのデータ整合性の機能ではなくて、各DBを連携した上での整合性を取る機能がMongoDBやREdisにあるかどうかを聞いているんでしょうか?
質問の本質は、「今までのPostgreSQLのデータの整合性から、MongoDBとRedisで整合性を取ることができるか?」という点です。
今までのPostgreSQLがデータのベースですが、登録画面からRedis、MongoDB、PostgreSQLの流れを作りたいです。
MongoDBやRedis自体に機能はないのであれば、それらの外部に整合性を担保する仕組みをご教授いただけますと幸いです。
よろしくお願いします。
あなたの回答
tips
プレビュー