Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将MySql迁移到NoSql_Mysql_Redis_Nosql - Fatal编程技术网

将MySql迁移到NoSql

将MySql迁移到NoSql,mysql,redis,nosql,Mysql,Redis,Nosql,我正在将mysql数据库迁移到noSql 对于一个用户管理系统,想知道吗 是否/如何选择属于以下类别的用户 某一年龄组 a) 我保留一个名为UID的国家,它的增量为1 对于每个用户 b) 对于我所做的每个用户: hset用户:姓名joe hset用户:1-99岁 我将如何检索所有正在访问的用户 比如说20到25岁 这可能吗 谢谢您遗漏了在哪个系统上执行所需的检索查询,因此我将回答这两个问题 从mySQL检索符合条件的用户只需在SELECT语句中使用正确的where子句即可 SELECT * FR

我正在将mysql数据库迁移到noSql 对于一个用户管理系统,想知道吗 是否/如何选择属于以下类别的用户 某一年龄组

a) 我保留一个名为UID的国家,它的增量为1 对于每个用户

b) 对于我所做的每个用户:

hset用户:姓名joe hset用户:1-99岁

我将如何检索所有正在访问的用户 比如说20到25岁

这可能吗


谢谢

您遗漏了在哪个系统上执行所需的检索查询,因此我将回答这两个问题

从mySQL检索符合条件的用户只需在SELECT语句中使用正确的where子句即可

SELECT * FROM user WHERE age BETWEEN 20 AND 25
在Redis中,在同一个键上调用后续HSET将用新值替换现有值。由于您正在为每个用户和年龄执行HSET,因此实际上您正在用迁移查询中的下一条记录快速替换redis数据存储中的每个值,只留下要在redis中迁移的最后一条记录

因此,如果您从mySQL迁移的最后一条记录是“Joe,age 20”,那么redis将只从mySQL存储以下内容,其他所有内容都将丢失:

Key    Value
Name   Joe
Age    20
简而言之,您的检索是不可能的,因为数据建模不正确;事实上,我要说的是,这种NoSQL存储的选择不适合您正在尝试做的事情

Redis仅用于存储键值对;从一个完整的mySQL表迁移到该表将毫无意义,除非源表中实际上只有两列。如果您缓存来自mySQL的频繁访问的数据点,或者使用redis为需要快速更新的单个数据点建模,那么您的用例将更有意义。Redis可以补充另一个数据存储,它可以用于日志记录,也可以用于消息传递,但它不能取代RDBMS,也不希望取代RDBMS


如果您真的希望用NoSQL存储取代mySQL,请问问自己为什么要尝试这种迁移,它对您的应用程序有何好处,以及您愿意接受哪些风险和缺点。这些答案将推动您的决策:如果您需要以表格格式跨多台机器处理大量数据,那么像Cassandra这样的列数据存储就可以了。如果您需要处理半结构化数据,像Mongo这样的文档数据存储支持这种需要。如果您需要建立关系模型,Neo4j非常棒。如果你不需要这些东西,那就到此为止,不要迁移。NoSQL可能很流行,也很令人兴奋,但并不是所有的东西都需要NoSQL解决方案,如果需要的话,你需要特别小心,根据你的需要和你愿意接受的缺点来选择正确的数据存储。

你如何查询数据实际上取决于什么数据库(或至少是什么类型的数据库)你正在使用…比如说redis