39

关于Cassandra

的问题 为什么会有人用 Java 编写数据库引擎?
我可以理解你为什么想要一个 Java 接口,但是引擎......

我的印象是没有什么比 C/C++ 更快的了,而且数据库引擎不应该比最大速度慢,当然不使用垃圾收集...

谁能解释一下这可能是什么意思/为什么 Cassandra 可以比在 C/C++ 代码上运行的普通 SQL 更快?

编辑:
对不起“为什么是人间地狱”部分,但这对我来说真的没有任何意义。
我忽略了考虑,与普通的普通用户程序不同,数据库只需要启动一次,然后运行很长时间,并且可能还作为服务器上唯一的程序,这不言而喻重要的性能差异。

我更多地比较/引用了我在撰写本文时(或者更确切地说本来希望使用)的“功能失调”(委婉地说)Java 税务程序。

事实上,与使用 Java 编写税务程序不同,使用 Java 编写专用服务器程序非常有意义。

4

5 回答 5

109

你是什​​么意思,C++?如果您有几十年的空闲时间,手动编码组装会更快。

于 2010-02-26T13:29:27.770 回答
58

我可以看到几个原因:

  • 安全性:用 Java 编写安全软件比用 C++ 更容易(还记得缓冲区溢出吗?)
  • 性能:并没有那么糟糕。启动时肯定会更糟,但是一旦代码启动并运行,就不是什么大事了。实际上,你必须记住一个重要的一点:Java 代码不断被 VM 优化,所以在某些情况下,它比 C++ 更快。
于 2010-02-26T13:31:44.270 回答
34

为什么会有人用 JAVA 编写数据库引擎?

平台独立性对于服务器来说是一个相当大的因素,因为与台式电脑相比,您拥有更多的硬件和操作系统异构性。另一个是安全性。不必担心缓冲区溢出意味着大多数最糟糕的安全漏洞都是不可能的。

我的印象是没有什么比 C/C++ 更快的了,而且数据库引擎不应该比最大速度慢,当然也不应该使用垃圾收集......

你的印象是错误的。C/C++ 不一定比 Java 快,现代垃圾收集器在其中发挥了重要作用,因为它们使对象创建速度非常快。

于 2010-02-26T13:32:00.910 回答
13

不要忘记 Java VM 使用即时 (JIT) 引擎执行即时优化,以使 Java 在速度方面与 C++ 相媲美。请记住,Java 是一种非常高效的语言(尽管有反对者)和可移植性,再加上 JIT 优化能力,这意味着 Java 对于这样的事情并不是一个不合理的选择。

于 2010-02-26T13:29:43.570 回答
8

现代 Java 运行时的性能损失并不大,Java 编程比 c 更不容易出错。

于 2010-02-26T13:30:37.220 回答