java是SQLite最适合用于嵌入式数据库的东西吗?
我需要构建一个Java应用程序,安装在Linux服务器上
当人们安装时,他们只需要安装这个应用程序,启动它,什么都不用做。但我们有一些数据要保存
- 我对MySQL说不,因为它需要一个服务器李>
- 我对XML说不,因为会有很多数据需要保存和处理李>
所以我在看SQLite,这是我认为最好的。的确(如果我错了,请阻止我),SQLite不需要任何服务器吗?(只需安装最终应用程序,SQLite就可以在我的应用程序中正常工作?)
然后我在http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers查看了一下,我真的有点困惑
- 包装器和驱动程序之间有什么区别李>
- 此外,我还看到了一个“纯java实现”:SQLJet是否进行了或多或少的优化李>
- 最后,在我的情况下,你会用什么李>
# 1 楼答案
要考虑的另一个数据库是H2。它是一个完全用Java编写的嵌入式数据库引擎,因此您可以获得Sqlite所不具备的完整unicode(16位)字符支持。其他嵌入式数据库是HSQLDB和Derby
对。事实并非如此。H2也没有
对。只要在WAR中包含Sqlite或H2(或将其解包到jar中),它就可以正常工作
取决于用法。我认为Sqlite指的是,当您为Sqlite使用JDBC驱动程序时,它实际上是驱动程序中Sqlite C本机库的包装。通常,JDBC驱动程序会与远程数据库通信
H2也是这样,因为“驱动程序”实际上是用Java编写的数据库操作,所以不需要C包装器
这是我第一次听说Sqljet,所以我不确定。我用的是Xerial Sqlite driver,它的性能似乎很好
我会自己使用H2来实现本机Java功能
# 2 楼答案
是的,SQLite不需要服务器
一个非常简单的开发解决方案是使用SQLLite,将其嵌入到源代码中,并使用少量存根数据。然后,您可以将数据库作为单个文件提交到版本控制系统(即,我使用github,它非常容易做到这一点)。显然,这不是一种好的生产方法,但它是创建单一开发版本的好方法
包装器是一个程序,它通过允许您通过不同的接口访问另一个程序的功能,从而将另一个程序包装起来。例如,eclipse将我们在日常开发中使用的许多java程序“包装”在一个方便的GUI中。而驱动程序是启动现有应用程序所需的程序。例如,在java应用程序中,我们可能有一个可以被认为是应用程序入口点驱动程序的主类