为什么Cassandra用Java编写?

时间:2010-02-26 13:25:45

标签: java c++ c database-design cassandra

关于Cassandra的问题

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

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

任何人都能解释一下,为什么Cassandra可以比在C / C ++代码上运行的普通SQL更快?

修改:
对不起“为什么地球上的地狱”的一部分,但它对我来说真的没有任何意义。
我忽略了一个数据库,不像一般的花园变量用户程序,只需要启动一次,然后运行很长一段时间,也可能作为服务器上唯一的程序,这显然是一个重要的性能差异。

我更多地比较/引用了一个'不合适的'(温和地说)我在撰写本文时使用的Java税收计划(或者更愿意使用)。

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

5 个答案:

答案 0 :(得分:101)

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

答案 1 :(得分:54)

我可以看到几个原因:

  • 安全性:使用Java编写安全软件比使用C ++编写安全软件更容易(还记得缓冲区溢出吗?)
  • 表现:情况并非如此糟糕。它在启动时肯定会更糟糕,但是一旦代码启动并运行,它就不是一件大事了。实际上,你必须记住一个重点:VM代码不断优化,因此在某些情况下,它比C ++更快

答案 2 :(得分:32)

  

为什么地球上任何人都会在JAVA中编写数据库引擎?

平台独立性是服务器的一个重要因素,因为与桌面PC相比,你拥有更多硬件和操作系统的异质性。另一个是安全。不必担心缓冲区溢出意味着大多数最糟糕的安全漏洞根本不可能。

  

我的印象是   没有比C / C ++更快的了   数据库引擎不应该是   任何慢于最大速度,和   当然不会使用垃圾   集...

您的印象不正确。 C / C ++不一定比Java更快,而现代垃圾收集器在这方面有很大的作用,因为它们使对象创建速度极快。

答案 3 :(得分:14)

不要忘记,Java VM使用即时(JIT)引擎,该引擎执行动态优化,使Java在速度方面与C ++相当。请记住,Java是一种非常高效的语言(尽管它是反对者)并且可移植,并且具有JIT优化功能,这意味着Java对于类似的东西来说并不是一个不合理的选择。

答案 4 :(得分:7)

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