SQLite最适合用于嵌入式数据库吗?

tro*_*roc 3 java sqlite h2

我需要构建一个我将在Linux服务器上安装的Java应用程序.

当人们安装时,他们只需安装此应用程序,启动它,仅此而已.但我们有一些数据需要保存.

  • 我对MySQL说不,因为它需要一台服务器.
  • 我对XML说不,因为实际上会有很多数据需要保存和操作.

所以我在看SQLite,这是我认为最好的.确实(如果我错了就阻止我),SQLite不需要任何服务器?(只需安装最终的应用程序,SQLite在我的应用程序中工作正常吗?)

然后我查了http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers,我真的有点困惑.

  • 包装器和驱动器有什么区别?
  • 另外我看到存在一个"纯java实现":SQLJet是或多或少优化的?
  • 最后你会在我的情况下使用什么?

Gra*_*ray 17

要考虑的另一个数据库是H2.这是完全用Java编写的,所以你有充分的Unicode的利益嵌入式数据库引擎(16位)字符支持,SQLite的确实具备.其他嵌入式数据库是HSQLDBDerby.

sqlite不需要服务器上的任何要求?

正确.它不是.H2也没有.

只需安装最终的应用程序,sqlite在我的应用程序中运行正常吗?

正确.只要在WAR中包含Sqlite或H2(或将其解压缩到jar中),它就可以正常工作.

包装器和驱动器有什么区别?

取决于用法.我认为Sqlite正在谈论这样一个事实:当你为Sqlite使用JDBC驱动程序时,它实际上是驱动程序内部的Sqlite C代码的包装.通常,JDBC驱动程序与远程数据库通信.Xerial驱动程序实际上是在一个小虚拟机中模拟Sqlite C代码 - 奇怪但似乎运行良好.

H2也就是这样,"驱动程序"实际上正在进行数据库操作,只是它是用Java编写的,所以你不需要C包装器.

另外我看到存在一个"纯java实现":SQLJet是或多或少优化的?

这是我第一次听说过Sqljet,所以我不确定.该Xerial sqlite的驱动程序是什么,我已经用它的表现似乎也不错.

最后你会在我的情况下使用什么?

我自己使用H2来获取本机Java功能.