最終的にテーブル/モデル間の多対多の関係がほとんどない可能性のあるsinatra/railsベースのWebポータルを実装しています。これは 1 人のチームであり、パートタイムですが、現実世界のアプリです。
自分のエンティティについて誰かと話し合ったところ、neo4j を試すように勧められました。本当の「セクシーではない」企業の世界から来た私の傾向は、スケーリングが停止するか、シャーディングなどのために悪夢になるまでリレーショナルデータベースを使用してから、他のことを考えることです。
でも、
- 私はこのプロジェクトで datamapper と一緒に postgres を初めて使用しています。非常に速く使い始めるのに時間がかかります
- 私はいくつかのことを試して、より多くのユースケースを構築しているだけなので、一貫してスキーマを更新する必要があります (プロトタイプのアイデアとベータ版からのフィードバック)。これをneo4jで行う必要はありません(クエリの変更を除く)
- neo4j を使用して検索をセットアップするのは非常に簡単なようです。しかし、Postgres は全文検索も行うことができます。
- Postgres は最近、json と javascript のサポートを発表しました。PG を使い続けて、neo4j の代わりに PG (良いコミュニティを持っている) の学習にもっと時間を費やすべきかどうか疑問に思っています。
特にプロタイピング/プロジェクトの初期段階で、neo4j が優れているユースケースを探しています。Web サイトが成長すると、s3、リレーショナル (PG)、mongo などの複数の永続的なテクノロジが必要になる可能性があることを理解しています。
また、Rails/Ruby エコシステムでどのように機能するかを知っておくとよいでしょう。
アップデート1:
私は多くの良い答えを得て、今のところPostgresに固執するのが正しいことのようです(特にherokuにデプロイして以来)
ただし、スキーマレスであるという考えは魅力的です。基本的には、100 ~ 150 人のユーザーがいて、製品の適切なスキーマ (ビジネス ユース ケース) を自分で考え出すまで、データモデルを定義しないアプローチを考えています。限られたサインアップでのフィードバック。次に、スキーマを決定し、リレーショナルから始めることができます。
スケーリングなどをあきらめる可能性のある、使いやすいスキーマ/永続性の低いオプション (新しいユーザーの使いやすさ/セットアップに基づく) があるかどうかを知っておくとよいでしょう。