(Neo4J或mysql)和redis - 社交网络

Mik*_*ike 0 mysql social-networking neo4j redis

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

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

neo4j是否能够在提供静态数据(redis前端)方面同样替换mysql和preform?写入怎么样(例如用户编辑配置文件)?

我最初考虑使用MySQL和Neo4j.一些谷歌搜索指出灵活性较低,维护较多.其他人说"像魅力一样".思考?

谢谢.

raf*_*ian 14

neo4j是否能够在提供静态数据方面同样替换mysql和preform(由redis提供)

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

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

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

首先,不要使用数据库来提供静态数据; 对于半复杂对象(键/值,集合,散列),请使用redis; 对于像images/css/js这样的静态内容,请使用像nginx这样的反向代理.

我最初考虑使用MySQL和Neo4j.一些谷歌搜索指出灵活性较低,维护较多.

忘掉那些意见; 每个人都有一个.这些文章是否讨论了他们试图实现的要求,约束和服务质量,但未能这样做,为什么?我愿意打赌他们的限制可能与你的不同.没有坏的解决方案; 唯一糟糕的选择; 这就是为什么IT部门的工作充足,因为我们大多数人正在修复别人的愚蠢决定.专注于您的需求,提前计划,并根据周期做出选择.

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

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

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