「NoSQL」の分野に数年間住み続けた後、今、私は本質的に非常に「リレーショナル」な問題を抱えています。今日、私は以前とはまったく異なる視点でデータストアを目にしています。 Riakのようなものは、単一の障害点、「メンテナンスのためのダウン」などに耐えられなくなるような方法で私を台無しにしています。これは個人的なプロジェクトであり、非常に(または)非常に高い要件はありません。
ほとんどのシャーディングソリューションでは、(少なくとも一見すると)欲しいものが得られません。おそらく、私の問題は非常に「簡単に」解決できるためです。少なくとも概念レベルでは(RDBM自体がテーブルにもたらす制約を無視して)。
少量の「共有」データがあり、自由に複製できます。ハード整合性の要件はありません。これは、ダイナモのようなデータベースに格納でき、無限に拡張されます。しかし、できれば単一のデータベースを使いたいと思っています。
「ユーザーごと」のデータがたくさんあります。つまり、多くのユーザーが絶対的に妥当なサイズのデータを持っているため、単一のPostgreSQLノードに格納するのに本当に適しています。最大で数万のレコードについて話している。
クロスユーザーにクエリを実行する必要はなく、クロスユーザーの原子性も必要ありません。
これは非常に簡単に実現できます。少なくとも私が「NoSQLの目」で見ているときは。
ここに私の素朴なスターターのアイデアがあります:
極端な場合、Riakでユーザー全体を単一のキー/値としてシリアル化できます。もちろん、数メガバイトのデータの継続的なデシリアライゼーションは遅くなるため、PostgreSQLの使用を検討しています。各ユーザーのデータ内で原子性/トランザクションが必要なため、Riak K/Vの多くは立ち入り禁止です。
ユーザーごとにSQLiteデータベースを使用し、冗長性/可用性のためにGlusterFSなどを使用できます。これはおそらく、PostgreSQLを使用して同等に良いものが見つからない場合に選択するソリューションです。長所:スケールアップ/スケールアップは非常によくできます。短所:SQLiteよりもPostgreSQLの型と厳格さを優先する
だから、私は理想的にはPostgreSQLのシャーディングソリューションから要求するもの:
Postgres-XL は2014年の時点でこれを解決しようとしています。彼らはPostgreSQLのビッグデータを直接目指しており、Stadoの開発者をオンボードにしています。
最良のオプションは pgpool-II だと思います。最大128のノードと
別のオプションは Stado かもしれません