web-dev-qa-db-ja.com

チャットの履歴を保存するための最善の方法は?

私はチャットアプリケーション(はい、別のもの:P)を構築していて、チャットの履歴(文字列のユーザー名、文字列のメッセージ、時間、そして場合によっては文字列チャネルを設定する方法に応じて、文字列チャネル)を保存する最良の方法に本当に興味があります。 。

とにかく私はPostgreSQLを使用しているので、チャットの履歴にそれを使いたくなりました。ただし、メッセージごとに新しい行を生成せずにこれを使用するための適切なアプローチはありません。

私は一部のMongoDBを知っており、各チャネルにjson配列を使用し、その中に履歴を保存するとうまくいくと考えていました。

同じアプリケーションで2つの完全にデータベースを使用するのはひどい考えですか?

私が見るべき他の選択肢はありますか? (私はほとんど何にでも開いています)

これを行う一般的なPostgreSQLの方法はありますか? JSONの列 を調べましたが、現時点ではかなり新しく制限されているようです。

1
joshua-anderson

hstore for use [〜#〜] eav [〜#〜] を使用できます。 hstoreはpgsql 8.4から利用できます。 jsonをインストールした場合は、関数hstore_to_json(hstore)を使用できます

select hstore_to_json('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4')

これは出力します:

{"a key": "1", "b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4"}
2
BBaron