0

构建一个强调社交网络的音乐应用程序——假设有大约 10-15 个节点(用户、艺术家、歌曲等)。用 PHP 编写,将使用 Neo4J 的 REST API。

对于 1K 或 10K 或 100k 或 1M 用户...

neo4j 是否能够在提供静态数据(以 redis 为前端)方面同样出色地替代 mysql 和 preform?写(例如用户编辑个人资料)怎么样?

我最初正在考虑将 MySQL 与 Neo4j 一起使用。一些谷歌搜索表明灵活性较低,维护较多。其他人说“像魅力一样工作”。想法?

谢谢你。

4

1 回答 1

14

neo4j 能否替代 mysql 并在提供静态数据方面同样出色(以 redis 为前端)

不知道你在这里问什么,但我会试着分开。

如果你想比较 MySQL 和 neo4j,没有真正的比较,因为它们是不同的产品。使用一种优于另一种是基于要求、约束和 SLA,而不是因为一种优于另一种。如果您需要持久性、持久性和最大的事务完整性以及一些不错的数据库管理工具,请使用 MySQL。如果您想使用内存中的图表存储相互关联的社交兴趣以便快速检索,并且您愿意为性能牺牲一些可靠性,请使用 neo4j。

...在提供静态数据方面表现同样出色...

首先,不要使用数据库来服务静态数据;对于半复杂对象(键/值、集合、哈希),使用 redis;对于像 images/css/js 这样的静态内容,使用像 nginx 这样的反向代理。

我最初正在考虑将 MySQL 与 Neo4j 一起使用。一些谷歌搜索表明灵活性较低,维护较多。

忘记那些意见;每个人都有一个。这些文章是否讨论了他们试图实现但未能实现的要求、约束和服务质量,为什么?我敢打赌,他们的限制可能与您的非常不同。没有不好的解决方案。只有糟糕的选择;这就是为什么 IT 领域的工作很多的原因,因为我们大多数人都在修正别人的愚蠢决定。专注于你真正需要的东西,提前计划,并在此基础上做出选择。

所以无论如何,回到你的问题,如果是我,根据你提供的有限信息,我会使用 MYSql 和 neo4j,只是因为我喜欢对重要的数据库操作(配置文件更新、cc 购买等)具有可靠性和持久性),虽然不太重要的更改,如社交关系、兴趣等的更新,仍会保留在数据库中,但也会异步推送到图表中。如果某些更新失败或陷入困境,没什么大不了的,Suzie 只是不会从她的朋友那里得到最新的播放列表或喜欢的东西,但至少她的信用卡信息是安全的。

当然,同时使用 MySql 和 neo4j 意味着更多的维护,但是您可以通过放松 MySQL 和图之间的耦合来最小化这种情况。换句话说,不要在 neo4j 中复制您的数据模型,这样做将是一场维护噩梦,因为任何数据库更改都意味着更改图形。在 Neo 中,仅存储参考标识符和非常基本的高级信息(用户 ID、名字/姓氏、专辑 ID、专辑名称),足以生成主级屏幕。如果用户深入到详细级别的屏幕(单击用户、相册等),请转到数据库或 redis,并获取这些对象的完整详细信息。当使用这两种产品时,这是一个很好的平衡,需要更多的工作,但如果做得好,肯定是可以管理的。

这里有一些额外的信息给你,希望对你有帮助......
一起使用 MySQL 和 Neo4j 是个好主意吗?

于 2013-06-05T02:55:46.040 回答