【问题标题】:(Neo4J or mysql) and redis - social networking(Neo4J 或 mysql)和 redis - 社交网络
【发布时间】:2023-03-21 00:49:01
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: mysql redis neo4j social-networking


    【解决方案1】:

    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,并获取这些对象的完整详细信息。在使用这两种产品时,这是一个很好的平衡,需要更多的工作,但如果做得好,肯定是可以管理的。

    这里有一些额外的信息,希望对您有所帮助...
    Is it a good idea to use MySQL and Neo4j together?

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多