构建一个侧重于社交网络的音乐应用--假设有大约10-15个节点(用户、艺术家、歌曲等)。用PHP编写,将使用Neo4J的REST API。
对于1K或10K或100k或100万用户...
在静态数据服务方面,neo4j能够取代mysql和preform吗?写操作如何(例如用户编辑配置文件)?
我最初在考虑在Neo4j中使用MySQL。一些谷歌搜索表明,灵活性较低,维护较多。其他人则说“效果就像一种护身符”。有什么想法?
谢谢。
发布于 2013-06-05 10:55:46
在静态数据服务方面,
是neo4j能够很好地取代mysql和preform (由redis提供)。
不知道你在问什么,但我会试着把它拆开。
如果你想比较MySQL和neo4j,没有真正的比较,因为它们是不同的产品。使用其中一个是基于需求、约束和SLA,而不是因为其中一个比另一个更好。如果您需要持久性、持久性和最高的事务完整性,以及一些很好的数据库管理工具,那么可以使用MySQL。如果您想要使用内存中的图形来存储相互关联的社交兴趣以进行快速检索,并且愿意牺牲一些可靠性来换取性能,那么可以使用neo4j。
在处理静态数据方面,
...and表现同样出色……
首先,不要使用数据库来提供静态数据;对于半复杂的对象(键/值、集合、散列),使用redis;对于图像/css/js这样的静态内容,使用nginx这样的反向代理。
我最初在考虑在Neo4j中使用MySQL。一些谷歌搜索表明,灵活性较低,维护较多。
忘了那些观点吧;每个人都有自己的观点。这些文章是否讨论了他们试图实现但失败的需求、约束和服务质量,以及为什么?我敢打赌,他们的约束条件可能与你的非常不同。没有糟糕的解决方案,只有糟糕的选择;这就是为什么IT领域的工作很多,因为我们大多数人都在修正别人愚蠢的决定。专注于你需要的东西,提前计划,并在此基础上做出选择,就这样。
不管怎样,回到你的问题上,如果是我,基于你提供的有限信息,我会使用MYSql和neo4j,因为我喜欢对重要的数据库操作(个人资料更新,抄送购买等)具有可靠性和持久性,而不太重要的更改,如社会关系,兴趣等的更新,仍然保留在数据库中,但也被异步推送到图形中。如果一些更新失败或陷入困境,没什么大不了的,Suzie只是不会从她的朋友那里得到最新的播放列表或赞,但至少她的信用卡信息是安全的。
当然,同时使用MySql和neo4j意味着更多的维护,但是您可以通过放松MySQL和图形之间的耦合来最小化这种维护。换句话说,不要在neo4j中复制您的数据模型,这样做将是维护的噩梦,因为任何数据库更改都意味着更改图形。在neo中,只存储引用标识符和非常基本的高级信息(user_id、名字/姓氏、album_id、album_name),仅足以生成主控级屏幕。如果用户深入到详细级别的屏幕(单击用户、相册等),则转到数据库或redis,并获取这些对象的完整详细信息。在使用这两种产品时,这是一个很好的平衡,工作量稍多一些,但如果处理得当,肯定是可管理的。
这里有一些额外的信息给你,希望它能有所帮助。
https://stackoverflow.com/questions/16927598
复制相似问题