お問い合わせ

データはどこに保存してる?-PostgreSQLの役割と構成-【Luxucomを支える技術 #3】

このシリーズでは、弊社が開発しているLuxucomというSNSアプリを例に、Webアプリがどうやって動いているのかを、図とともにわかりやすく解説しています。

今回はその第3回。

Luxucomの代表的なアーキテクチャの中から、ユーザーやルームの情報などを管理しているリレーショナルデータベース、「PostgreSQL」について解説します。

PostgreSQLとは?

まずは、PostgreSQLとは?というところからはじめます。

PostgreSQLは、オープンソースのリレーショナルデータベースです。

MySQLなどと並んで広く使われていて、商用・非商用問わず、さまざまな現場で採用されています。

特徴としては、高機能で拡張性が高いこと。

そして、複雑なデータやクエリにも柔軟に対応できるのが大きな強みです。

PostgreSQLを選んだ理由

LuxucomでなぜPostgreSQLを採用したのか?

その理由は、「無料で使えるのに、高機能」という点ですね。

オープンソースでここまで安定していて、商用でもバリバリ使えるって、本当にありがたい存在です。

PostgreSQL・MySQL・Oracleの比較

ここで、よく使われている3つのデータベース、PostgreSQL、MySQL、そしてOracleを比較してみました。

特に注目したいのは、PostgreSQLが無料で高機能、かつ拡張性も高いという点です。

Oracleも非常に高性能かつ拡張性も高いですが、ライセンスコストがかかるのがネックです。

MySQLはコスパは良いですが、PostgreSQLと比較すると、機能性と拡張性に乏しいです。

Luxucomでは、これらのバランスの良さからPostgreSQLを採用しています。

データの種類によるそれぞれの役割分担

Luxucomでは、データの種類によって、PostgreSQLだけでなく、DynamoDBやRedisも活用して、それぞれの特性を活かしながら管理しています。

データの種類ごとに役割を整理すると、このようになります。

ユーザー情報やルーム情報、NFTの登録情報など、アプリの根幹となる重要なデータは、PostgreSQLで管理しています。

こうしたデータは、複数のテーブルにまたがって整合性を保ったり、トランザクションの正確な処理が求められるため、リレーショナルデータベースであるPostgreSQLがぴったりなんです。

一方で、チャットメッセージのように、グローバルに大量のデータを、高速に登録・取得する必要があるものは、DynamoDBを採用しています。

また、ユーザーのセッション情報やWebSocket通信の管理など、ごく短時間で処理される一時的なデータには、Redisを採用しています。

このようなデータベースの中で、PostgreSQLは、「正確さ」と「構造化されたデータ管理」に特化した役割を担っているんですね。

PostgreSQLと他サービスとの連携

Luxucomにおける、PostgreSQLと他のサービスとの連携について見ていきます。

アプリケーション層ではDjangoを採用しており、データベースアクセスはDjangoのORMを通じて行っています。

そしてその接続先として、AWSのAuroraを使用しています。

AuroraはPostgreSQL互換のエンジンを備えていて、商用運用にも耐えうる高い信頼性とスケーラビリティが大きな魅力です。

PostgreSQLを使って良かった点

PostgreSQLを使ってみて、Luxucomで実際に「良かったな」と感じた点をご紹介します。

Djangoとの相性が良いこと

まずひとつ目は、Djangoとの相性の良さです。

Djangoは、PostgreSQLを公式にサポートしていて、ORMを通したデータ操作もとてもスムーズに行えます。

開発は無料のPostgreSQL、本番は有料のAurora。同じコードでそのまま運用に移行できる

そしてふたつ目が、開発と本番で同じコードを使い回せるという点です。

開発環境では、無料で立てられるPostgreSQLサーバを使いながら、本番環境では、有料のAuroraを使う、といった切り替えが容易にできます。

実際にこの仕組みで運用していて、移行やデプロイ時のトラブルも少なく、とても助かっています。

PostgreSQLを使って難しかった点

続いてPostgreSQLを使って難しかった点ですが、振り返ってみても特にありませんでした。

詰まったことがあれば、ChatGPTが的確に回答してくれますし、PostgreSQLだから特別難しかったという点は、正直ひとつもありませんでした。

さいごに

というわけで今回は、Luxucomで採用しているデータベースのひとつ、PostgreSQLについてお話ししました。

次回は、同じくLuxucomで使われているデータベース、「DynamoDB」について取り上げます。