sqlite 和 sqlserver,都是单一文件的数据库( sql server 的数据文件只包括 mdf ),可以把数据库文件移动到任何地方,并且都支持通过文件路径访问。而不是通过数据库的服务的实例名称来读取。
但是 sqlite 没有存储过程,而 sql server express 版最大支持 10G,非 express 版要钱。
那么有其他类似功能的数据库么,支持存储过程,支持移动数据文件到任何一个位置,支持通过文件路径( java,c#)去访问数据库内容。
1
wackyjazz1 2020-07-16 09:29:39 +08:00
firebird
|
2
tctc4869 OP @wackyjazz1 它有比较好用的可视化软件么?
|
3
zhuangzhuang1988 2020-07-16 09:34:43 +08:00 via Android
h2
|
4
Ritter 2020-07-16 09:35:58 +08:00
access
|
5
codehz 2020-07-16 09:36:22 +08:00 via Android
其实可以给 sqlite3 打补丁支持存储过程的。。。
不过作为一个单一文件的数据库,存储过程存在的意义不是很大 |
8
wackyjazz1 2020-07-16 09:39:15 +08:00
@tctc4869 dbeaver
|
9
thtznet 2020-07-16 09:39:47 +08:00
json
|
10
codehz 2020-07-16 10:35:50 +08:00
@tctc4869 #6
知名的可能是这个 https://www.gaia-gis.it/fossil/libspatialite/wiki?name=Stored+Procedures 但是这个功能太多了,而且也语法上不太好看,如果你觉得合适的话可以自己裁剪一下,只保留存储过程类似的功能 https://sqlite.org/forum/forumpost/a45b0b6676 这个帖子里有很多补丁,但是基本都过时了 |
11
RadishWind 2020-07-16 10:38:26 +08:00
accsess 、leveldb,或者用 mysql 然后迁移的时候写个脚本去迁移 myd myi 文件
|
12
sss495088732 2020-07-16 10:50:13 +08:00
rocksdb
|
13
min 2020-07-16 11:32:17 +08:00
|
14
qile1 2020-07-16 11:48:28 +08:00 via Android
sysbase 好使怎么拼写的那个数据库也支持吧
|
15
exip 2020-07-16 12:14:20 +08:00 via Android
vfp 的 dbf 能直接访问到数据表
|
16
Nich0la5 2020-07-16 12:24:17 +08:00 via Android
hsql
|
17
roundgis 2020-07-16 12:26:44 +08:00
sqlite 的调用就是 function calls
存储过程? 直接写就好了 传统的数据库是 c/s 架构,为了避免通信开销,才搞出存储过程 sqlite 没有这个问题 |
18
abcbuzhiming 2020-07-16 14:45:39 +08:00
@roundgis sqlite 有没有什么办法解决只允许单线程读写的问题?我希望在低负载场合换掉 mysql,但是这种场合有多个程序的时候 sqlite 就不适用了
|
19
roundgis 2020-07-16 16:23:19 +08:00
@abcbuzhiming 试下 WAL mode
|
20
GM 2020-07-16 16:27:35 +08:00
很多,不过要看你是什么语言。
比如 LiteDB 、Realm |
21
wangxiaoaer 2020-07-16 16:37:31 +08:00
借楼问一下,有么有文件数据库可以支持集群访问?
比如把数据库依赖的文件放到 NAS 中,集群的多个实例都访问这个数据库。 H2 好像不支持这么干,一个实例(进程)连接之后,其他进程就不能连接了。 |
22
tctc4869 OP @GM 优先考虑 ava 和 c#,其次考虑 c++,node.js 吧( electron ),
不一定要嵌入式数据库,只要是数据库实例是作为文件,或者数据库实例是一个方法数据库实例相关文件夹(其中包括数据文件日志文件等杂项,比如 SqlServer ),可以被程序以本地路径的方式读取,是不是嵌入式还是服务端,都没关系,只要编程语言支持以本地路径读取就可以, |
23
MeteorCat 2020-07-16 17:05:06 +08:00 via Android
json + 1,文本化数据库,直接 dbname.json
|
24
wiix 2020-07-16 17:07:03 +08:00
@wangxiaoaer h2 支持 Embedded 、Server 、Mixed 三种连接模式,你说的是 Embedded 模式。
|
25
tctc4869 OP @tctc4869 说错了,“或者数据库实例是一个方法数据库实例相关文件夹”改为“数据库实例牵扯文件不止一个,但数据库实例牵扯的文件是可以被整合到一个文件夹内”
|
26
wangxiaoaer 2020-07-16 17:10:49 +08:00
@wiix #24 我希望 Embedded 模式支持多实例,但是它不支持。
|
28
wiix 2020-07-16 18:04:55 +08:00
@wangxiaoaer 可以关掉文件锁。但只能一个链接进行写操作,否则数据库会损坏。
@tctc4869 应该是支持的,不用存储过程没去了解。 有 Server 模式,可以用 TCP/IP 访问 jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName> 但需要用 java -jar h2.jar 这种方式启动一个 h2 服务; 或者先用一个应用以 Mixed 启动,然后其他应用就可以用 TCP/IP 访问了 |
29
tctc4869 OP @wackyjazz1 请问要怎么在 Windows 中启动 firebird ? dbeaver 无法像 sqlite 那样直接创建 firebird 的 db 文件,需要安装什么么?
Firebird-3.0.6.33328_0_x64.exe 安装这个么?然后要怎么创建一个 firebird 的 db 文件? |
30
wackyjazz1 2020-07-20 11:21:13 +08:00
@tctc4869 https://firebirdsql.org/manual/qsg10-creating.html 安裝完後可以使用命令行創建,很簡單的
|