在Windows中创建并连接多个MonetDB数据库



我对MonetDB完全陌生,并试图在Windows上设置它。我不知道如何创建我自己的数据库,但这个线程从7年前帮助。现在,我有一些后续问题。

起初,我认为拥有多个数据库的方法是为每个数据库创建一个单独的MSQLserver.bat和M5server.bat,并根据要连接的数据库选择正确的数据库。如果你想同时启动并连接到它们,你所要做的就是保持两个批处理都在运行。

截图创建和运行单独的批确实创建了单独的数据库,尽管我通过查看这些批的内容意识到,它们所做的就是在%MONETDB%下创建单独的目录,这意味着这可能是我可以手动完成的(mkdir),并且我需要做的就是在我的农场中创建一个新数据库。对吗?

截图然后,我意识到无论我正在运行哪个批的副本,我都可以通过JDBC从DBeaver连接到两个数据库。(同时运行这两个程序实际上只允许我连接到最后运行的程序。)不幸的是,我还没有找到一种不创建单独连接的方法。我来自SQL Server世界,在那里你建立一个连接到服务器,一旦连接,你可以访问所有的数据库在同一时间。

截图我确实发现了另一篇文章,说我应该为不同的数据库使用不同的端口,但我没有这样做。我通过端口5000同时连接到这两个。

我以上的假设都是正确的吗?有没有更好的办法?

我确实有一个不太相关的问题……似乎每个数据库都会自动从上面显示的这7种模式(json, logging, profiler, sys等)开始,人们通常在其中一种模式中创建对象吗?Sys似乎是默认的。还是他们自己创造?我创建了一个名为"main",但我在这里假设了很多。

提前感谢!

我正在复制一位在windows上使用MonetDB但不在StackOverflow上的同事的答案:

在Windows上可以启动多个数据库服务器。为此,最简单的方法是复制M5Server.bat文件(例如M5Server_DBxyz.bat)并编辑它(更改创建新数据库目录(从默认值:demo)并在启动mserver5.exe时使用新数据库目录)。更改端口号也很重要,这样每个数据库服务器进程都侦听不同的端口。默认为"50000"。添加参数--set mapi_port=41000mserver5.exe启动行指定一个不同的端口号。

见https://www.monetdb.org/documentation/admin-guide/manpages/mserver5/有关mserver5程序选项的更多信息。

接下来,可以通过启动不同的M5Server_DBxyz.bat脚本来启动每个数据库服务器进程。每个MonetDB服务器(mserver5进程)只能访问1个数据库,而不是多个。默认情况下,您也不能从多个dbs(又名分布式数据库)查询数据。一种替代方法是创建一个远程表。看到https://www.monetdb.org/documentation/user-guide/sql-manual/data-definition/table-definition/#remote-tables如果您想创建多个数据库,每个数据库都有自己的表,并使用访问和连接来自不同数据库的表的查询,那么创建一个数据库并在其中创建单独的模式以为不同的表创建不同的名称空间会更快/更好。这样,所有的表都位于一个1db中,由一个服务器管理,不同模式下的表之间的查询运行得非常快。供参考:MonetDB不支持CREATE DATABASE命令。请使用CREATE SCHEMA命令。

创建表时,请确保在正确的模式中创建。与SET SCHEMA myschm;您可以更改当前模式。因此,通过一个连接(例如从DBeaver/JDBC/ODBC/pymonetdb),您只能连接到一个MonetDB服务器,因此是1 db。如果要访问多个数据库,则需要创建多个连接,每个数据库一个连接。当您编写自己的程序/脚本并使用JDBC/ODBC/pymonetdb API时,这是可能的。