DB

チャットシステムを実現するときのDB設計に関して

2020年4月11日

皆さんこんんちわ、藤沢だよ。

 

返信が遅れてごめんよ、忙しかった。

 

さて、本日のトピックは、リアル・タイム・チャットの実装に関してです。

 

最近、僕はReactとNodeでリアル・タイム・チャットの実装を検討しています。

 

そこで、DBの形をどうするかという問題に直面しています。

 

条件としては、基本的にはグループチャットはなしで、一対一のチャットのみ対応します。

 

ソケットIOの技術を使ってリアルタイムチャットを実現させるため、サーバー側のプログラムでメッセージを受け取ったら、そのまま相手のブラウザへ通知を送りたい。

 

んで、ちゃんと相互にメッセージをやりとりしてる人のみ、通知が行ってブラウザが更新されるようにしたい。

 

これ、今こう考えてブログに書いてる時点は実装のアイディアが浮かんだんだけど、それこそ一年前くらいは全然どうやるのかわからなかった。

 

今回、考えてるのは、ルームIDをランダムな文字列で発行して、チャットをやりとりする二人へ紐付けるというやり方。

 

多分、これが一番良いと思う。

 

ユーザーAと、ユーザーBがチャットしてるとして、ルームIDはユニークなものにする。

 

それで、仮にユーザーAがユーザーBへ向けて新規チャットを開始した場合、新規に二人の間のみ共有されるルームIDを発行する、

 

で、もし既に二人の間でチャット履歴があった場合は、ユーザーAとユーザーBというユーザーを持つルームIDを探せばいい。

 

こうすれば、ユーザーBがユーザーAへ向けてチャットを開始しても、大丈夫。

 

ユーザーCが現れても大丈夫。

 

実は昔は随分とバガな実装方法をしてて、例えばユーザーAとユーザーBのIDからチャット履歴を探そうとしたり、

 

かなりばかなことしてた記憶ある。

 

んーーー、でも昔よりもこのくらいの実装をするのは苦痛じゃなくなったから

 

 

まあ、同じくらいなのかな?

 

まあ、どっちでも良いか笑m(_ _)m

 

以上、本日もありがとうございました。

 


 

ここら辺の本を読んで、めっちゃ勉強になりました、ブログって簡単にわかるけど、深い部分で基礎が結構抜け落ちてたりするんだよね... 基礎の徹底は、良いエンジニアの基本なので、ここら辺を横着するか否かで将来のエンジニア人生も大きく変わる。なので、こういう本はしっかり読もうと思います。(お勧めなので、是非読んでみればいいと思います :))

 

Pocket
LinkedIn にシェア

-DB

Copyright© off.tokyo , 2021 All Rights Reserved Powered by AFFINGER5.