2016-05-20 3 views
-1

ユーザ管理システム用にmysqlデータベースをnoSql に移行中です。 に該当するユーザを特定の年齢層に選択することができる場合は、 を知りたいと思います..私が行う各ユーザのMySqlをNoSqlに移行する

A)私は国が、私は、ユーザーごとに1 インクリメントUID

Bと呼ばれるキープ):

HSETユーザー:名ジョー HSETユーザ:年齢1 -99

例えば、 が20と25の間のすべてのユーザーを取得するにはどうすればよいですか?

これは可能ですか?

おかげ

+0

どのようにデータをクエリするかは、実際に使用しているデータベース(または少なくとも種類のデータベース)に依存します... – David

+0

redis –

答えて

4

は、あなたが上で、ご希望の検索クエリを実行しているシステム取り残さので、私は両方をお答えします。

mySQLの条件に一致するユーザーを取得することは、SELECT文で正しいwhere句を使用することの単なる問題です。

SELECT * FROM user WHERE age BETWEEN 20 AND 25 
のRedisで

hset sets a key to a value、および新しいものと既存の値を置き換えます同じキーで、その後のhsetsを呼び出します。各ユーザーと年齢に合わせて、実際には、redisデータストア内の各値を移行クエリの次のレコードに置き換え、最後のレコードのみをレディで移行します。あなたは、MySQLから移行し、最終的な記録は「ジョー、年齢20」であれば

ので、Redisのは、MySQLだけで保存され、他のすべてが失われます以下があります:要するに

Key Value 
Name Joe 
Age 20 

、あなたデータは正しくモデル化されていないため、検索は不可能です。実際、NoSQLストアのこの選択は、あなたがしようとしているものには適切ではないと言っています。

Redisはキーと値のペアを格納するようにのみ設計されています。文字通りソーステーブルに2つのカラムしかない場合を除き、完全なmySQLテーブルからマイグレーションすることはほとんど意味がありません。たとえば、頻繁にアクセスするデータポイントをmySQLからキャッシュする場合や、redisを使用して高速更新が必要な単一のデータポイントをモデル化した場合、ユースケースはより意味をなさないでしょう。 Redisは別のデータストアを補完し、ロギングに使用でき、メッセージングに使用できますが、RDBMSを置き換えることはできません。

本当にmySQLをNoSQLストアに置き換えたい場合は、なぜこの移行を試みているのか、アプリケーションにどのようなメリットをもたらしているのか、受け入れるリスクと欠点についてお尋ねください。これらの答えはあなたの決定につながります。大量のデータを表形式で複数のマシンに渡って処理する必要がある場合は、CassandraのようなColumnデータストアを使用します。半構造化データを処理する必要がある場合は、MongoのようなDocumentデータストアがその必要性をサポートします。あなたが関係をモデル化する必要があるならば、Neo4jは素晴らしいです。あなたがそれらのもののいずれかを必要としない場合は、そこで停止し、まったく移行しないでください。 NoSQLはトレンディでエキサイティングなものですが、すべてにNoSQLソリューションが必要というわけではありませんが、そうであれば、必要なものに基づいて正しいデータストアを選択するために特別な注意を払う必要があります。

関連する問題