好吧,我已经求助于 Google、Stackoverflow 和其他我能找到的东西,尽我所能,但似乎我无法找到确切的答案!我有多个查询,我很想从数据库人员以及程序员和框架用户那里得到答案。
从编程语言来看,我了解C/C++、Java和Python。我承担了一个 CMS 项目,需要频繁的 C& 操作。 CRUD 的 R。该项目至少有 5 万用户。该项目的从头到脚都已经弄清楚了,现在我需要对其进行编码并使其在线运行。
好吧,我想使用 Neo4j 作为我的数据库,因为它的数据表示模型(节点和关系)最接近真实的项目模型。现在,neo4j 具有多种语言的绑定,其中之一是 Python(其 python 绑定非常古老,jpype 已经很久没有更新了)。我正在考虑使用一些基于 Java 的框架,但后来我放弃了这个想法,因为我个人还没有听说过太多 Java 框架。但我的一位合作伙伴告诉我选择 Zend (PHP),因为它具有某种可以让我们执行 Java 代码的功能。这不会减慢代码速度吗?我的意思是用另一种语言执行一种语言的代码...
所以,这一切都是这样的:
1)数据库:我想要 Neo4j。但当可扩展性因素发挥作用时,它会顺利吗? (根据我从谷歌收集的信息,不存在可扩展性问题)。
2)Neo4j 使用什么框架?我需要一个能够处理大量请求和大数据的框架,因为该项目的用户会大量创建和读取数据。
PS:我知道这是一个很长的问题,但无法用更少的语言来记下来!
Well, I've taken help of Google, Stackoverflow and whatever else I could find, did as much as I could, but it seems that I am unable to find out an exact answer! I have multiple queries, and I would love to have answers from the database-people as well as from the programmers and framework users.
From the programming languages, I know C/C++, Java and Python. I have undertaken a CMS project that would require frequent C's & R's of the CRUD. The project would have 50k users atleast. The head-to-toe of the project has been all figured out, and now I need to code it and make it live online.
Well, I want to use Neo4j as my database as its data representation model (nodes and relationships) is closest to the real project model. Now, neo4j has bindings for various languages, and one of them is Python (whose python bindings are very oldish, the jpype hasn't been updated since ages). I am thinking of going for some Java based framework, but then I leave this idea as I personally haven't heard much of java frameworks. But one of my partner tells me to go for Zend (PHP) as it has some kind of functionality that lets us execute Java code. Won't this slow the code? I mean executing one language's code in another language...
So, it all comes to this:
1) Database: I would want to go for Neo4j. But does it goes well off when the scalability factor kicks in? (From what I could gather from google, there are no scalability issues).
2) What framework to use in case of Neo4j? I would require a framework that is able to handle tonnes of requests and large data as the users of the project would be Creating and Reading data a lot.
P.S.: I know it is a long question, but couldn't jot it down in lesser words!
发布评论
评论(3)
我无法谈论 Neo4J 对于您的特定项目的可扩展性或适用性。
但是,我强烈建议您不要尝试混合搭配 Java 和 PHP 等语言。坚持最适合您的特定任务的方法要容易得多。我还强烈建议您不要将 JNI 用于任何,除非您别无选择。 Java 足够快,您几乎不需要 JNI 来提高性能。
也就是说,可以在“完整服务器”模式下运行 Neo4j,然后让 PHP 或 Python 应用程序使用某些驱动程序通过网络访问它。我只是不建议在应用程序层制作 PHP 和 Java 的丑陋混合体。
您可以查看一些不错的 Java 框架,包括:
它们在行业中相当标准,并且有大量可用的优质资源。
I can't speak about the scalability or suitability of Neo4J for your particular project.
However, I'd strongly advise you against trying to mix and match languages like Java and PHP. It's so much easier to stick to the best one for your particular task. I'd also strongly advise you against using JNI for anything unless you have no other option. Java is fast enough that you should almost never need JNI for performance.
That said, it's OK to run Neo4j in its "full server" mode and then have your PHP or Python application access it using some driver over the network. I just wouldn't recommend making an ugly hybrid of PHP and Java at your application layer.
Some decent Java frameworks you could check out include:
They're pretty standard in the industry and there are tons of good resources available on all of them.
关于语言互操作性的小问题,Java 提供了 JNI 接口,该接口允许 JVM 和用户代码调用其他语言,反之亦然。当本机代码(例如Java调用C代码,或者C调用Java)运行时,它实际上是在其自然环境中运行,因此在实际执行方面没有性能损失。
In regards to the mini-question about language interoperability, Java provides the JNI interface, which allows the JVM and user code to make calls into other languages and vice versa. When the native code (e.g. C code called by Java, or Java called from C) runs, it is actually running in its natural environment, so there's no performance loss in terms of actual execution.
Neo4j 作为独立服务器也有 REST API: http://docs.neo4j.org /chunked/milestone/rest-api.html,如果您可以将请求嵌入到单个 REST 查询中,则无需使用本机嵌入式 Neo4j。如果不需要使用嵌入式neo4j,您可以选择任何您选择的语言。
关于可扩展性,最近neo4j可以在Azure上使用,所以它一定很容易扩展。要详细了解如何扩展 neo4j,请访问 neo4j.org 上的此页面。
更新:在最新版本的 Neo4j 中,添加了对新查询语言的支持 - http://blog.neo4j.org/2011/06/kiruna-stol-14-milestone-4.html。
Neo4j as a standalone server has also REST API: http://docs.neo4j.org/chunked/milestone/rest-api.html, if you can embedded your requests in single REST queries, there is no need to use native embedded neo4j. If there is no need to use the embedded neo4j, you can take any language of your choice.
Regarding the scalability, recently neo4j can be used on Azure, so it must be quite easy to scale. To learn more how to scale neo4j, go to this page on neo4j.org.
UPDATE: in the newest version of Neo4j, there is added the support for a new query language - http://blog.neo4j.org/2011/06/kiruna-stol-14-milestone-4.html.