
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 cocowind 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 安完後可以使用命令行建,很的 |