MonetDB usage

MonetDB的安装参考 : 

http://blog.163.com/digoal@126/blog/static/16387704020147138518796/

MonetDB的性能让我眼前一亮, 对比PostgreSQL, 某些查询远超PG.

下面看看MonetDB简单的使用.

首先是使用monetdbd初始化一个dbfarm. 生成配置文件.merovingian_properties

[root@176 ~]# monetdbd create /data01/mdb2
[root@176 ~]# ll -la /data01/mdb2
.merovingian_properties

现在目录中只有一个配置文件, 在启动monetdbd前, 需要设置一下监听, 因为本地如果启用了多个monetdbd的话, 端口会冲突的.

首先获得当前创建的dbfarm的配置文件内容, 注意配置文件只能通过monetdbd来set.

# cat .merovingian_properties
# DO NOT EDIT THIS FILE - use monetdb(1) and monetdbd(1) to set properties
# This file is used by monetdbd

control=false

获得配置文件 : 

[root@176 ~]# monetdbd get all /data01/mdb2
   property            value
hostname         176.sky-mobi.com
dbfarm           /data01/mdb2
status           no monetdbd is serving this dbfarm
mserver          unknown (monetdbd not running)
logfile          /data01/mdb2/merovingian.log
pidfile          /data01/mdb2/merovingian.pid
sockdir          /tmp
port             50000
exittimeout      60
forward          proxy
discovery        true
discoveryttl     600
control          no
passphrase       <unknown>
mapisock         /tmp/.s.monetdb.50000
controlsock      /tmp/.s.merovingian.50000

设置属性, 一般设置监听端口即可, unix socket视情况修改. 

[root@176 ~]# monetdbd set port=50001 /data01/mdb2

如果要通过monetdb远程控制它的话, 还需要设置passphrase和control, 注意测试一下passphrase, 好像超过4个字母会有问题

[root@176 ~]# monetdbd set passphrase=1Digo /data01/mdb2
[root@176 mdb2]# monetdbd set control=yes /data01/mdb2
[root@176 mdb2]# monetdbd get all /data01/mdb2
   property            value
hostname         176.sky-mobi.com
dbfarm           /data01/mdb2
status           monetdbd[23923] 1.7 (Jan2014-SP3) is serving this dbfarm
mserver          /opt/monetdb11.17.21/bin/mserver5
logfile          /data01/mdb2/merovingian.log
pidfile          /data01/mdb2/merovingian.pid
sockdir          /tmp
port             50001
exittimeout      60
forward          proxy
discovery        yes
discoveryttl     600
control          yes
passphrase       {SHA512}d9343d4c860655ac2e815666f08d50750c58c974c05debe205aa243c0654706fa60f858fbcbd239f878777ee25f6558cd9e2af917e73ae00760a3aa522c52725
mapisock         /tmp/.s.monetdb.50001
controlsock      /tmp/.s.merovingian.50001

启动monetdbd

[root@176 ~]# monetdbd start /data01/mdb2

现在可以看到监听了, 目录下多了日志和PID文件.

[root@176 ~]# netstat -anp|grep 50001
tcp        0      0 0.0.0.0:50001               0.0.0.0:*                   LISTEN      23923/monetdbd
udp        0      0 0.0.0.0:50001               0.0.0.0:*                               23923/monetdbd
unix  2      [ ACC ]     STREAM     LISTENING     1036931 23923/monetdbd      /tmp/.s.monetdb.50001
unix  2      [ ACC ]     STREAM     LISTENING     1036935 23923/monetdbd      /tmp/.s.merovingian.50001
[root@176 ~]# ll /data01/mdb2/
total 2
-rw------- 1 root root 666 Aug 13 17:13 merovingian.log
-rw-r--r-- 1 root root   6 Aug 13 17:13 merovingian.pid
[root@176 ~]# ps -efw|grep monet
root     24361     1  0 17:30 ?        00:00:00 monetdbd start /data01/mdb2
root     24436 24361  6 17:34 ?        00:00:46 /opt/monetdb11.17.21/bin/mserver5 --dbpath=/data01/mdb2/test --set merovingian_uri mapi:monetdb://176.sky-mobi.com:50001/test --set mapi_open false --set mapi_port 0 --set mapi_usock /data01/mdb2/test/.mapi.sock --set monet_vault_key /data01/mdb2/test/.vaultkey --set gdk_nr_threads 8 --set max_clients 64 --set sql_optimizer default_pipe --set monet_daemon yes

接下来要使用monetdb连接这个monetdbd来创建数据库.

测试passphrase是否正常.

[root@176 mdb2]# monetdb -h 127.0.0.1 -p 50001 -P 1Digo discover
discover: =OK

创建1个数据库, 数据库创建的时候处于维护状态, 也就是LOCK状态, 必须release后才可以读写.

[root@176 mdb2]# monetdb -p 50001 create test
created database in maintenance mode: test
[root@176 mdb2]# monetdb -p 50001 release test
taken database out of maintenance mode: test

获得当前集群的配置信息,例如允许的线程数, 客户端连接数等. 

[root@176 mdb2]# monetdb -p 50001 get all
     name          prop     source           value
test             name      -        test
test             type      default  database
test             shared    default  yes
test             nthreads  default  8
test             optpipe   default  default_pipe
test             readonly  default  no
test             nclients  default  64

查看monetdbd状态

[root@176 mdb2]# monetdb -p 50001 status -l
test:
  connection uri: mapi:monetdb://176.sky-mobi.com:50001/test
  database name: test
  state: crashed
  locked: no
  scenarios: (none)
  start count: 0
  stop count: 0
  crash count: 0
  average uptime: 0s
  maximum uptime: 0s
  minimum uptime: 0s
  last start with crash: (unknown)
  last start: 1970-01-01 08:00:00
  last stop: (unknown)
  average of crashes in the last start attempt: 0
  average of crashes in the last 10 start attempts: 0.00
  average of crashes in the last 30 start attempts: 0.00

[root@176 mdb2]# monetdb -p 50001 status -c
database test, crashed on 1970-01-01 07:59:59
  crash average: 0.00 0.00 0.00 (over 1, 15, 30 starts) in total 0 crashes
  uptime stats (min/avg/max): 0s/0s/0s over 0 runs

使用mclient连接到刚才创建的数据库, 现在需要用到默认的用户密码monetdb.

mclient的参数详见man mclient, 例如编码, 语言, 时区等.

[root@176 mdb2]# mclient -p 50001 test
user(root):monetdb
password: 输入monetdb
Welcome to mclient, the MonetDB/SQL interactive terminal (Jan2014-SP3)
Database: MonetDB v11.17.21 (Jan2014-SP3), 'mapi:monetdb://176.sky-mobi.com:50001/test'
Type \q to quit, \? for a list of available commands
auto commit mode: on

查看帮助

sql>\?
\?      - show this message
\<file  - read input from file
\>file  - save response in file, or stdout if no file is given
\|cmd   - pipe result to process, or stop when no command is given
\h      - show the readline history
\D table- dumps the table, or the complete database if none given.
\d[Stvsfn]+ [obj] - list database objects, or describe if obj given
\A      - enable auto commit
\a      - disable auto commit
\e      - echo the query in sql formatting mode
\f      - format using a built-in renderer {csv,tab,raw,sql,xml}
\w#     - set maximal page width (-1=unlimited, 0=terminal width, >0=limit to num)
\r#     - set maximum rows per page (-1=raw)
\L file - save client/server interaction
\X      - trace mclient code
\q      - terminate session

查看系统表

sql>\dSt
SYSTEM TABLE  sys._columns
SYSTEM TABLE  sys._tables
SYSTEM TABLE  sys.args
SYSTEM TABLE  sys.auths
SYSTEM TABLE  sys.connections
SYSTEM TABLE  sys.db_user_info
SYSTEM TABLE  sys.dependencies
SYSTEM TABLE  sys.functions
SYSTEM TABLE  sys.idxs
SYSTEM TABLE  sys.keys
SYSTEM TABLE  sys.objects
SYSTEM TABLE  sys.privileges
SYSTEM TABLE  sys.schemas
SYSTEM TABLE  sys.sequences
SYSTEM TABLE  sys.statistics
SYSTEM TABLE  sys.storagemodelinput
SYSTEM TABLE  sys.systemfunctions
SYSTEM TABLE  sys.triggers
SYSTEM TABLE  sys.types
SYSTEM TABLE  sys.user_role

创建表, 插入测试数据

sql>create table a(id int auto_increment primary key, info varchar(32));
operation successful (16.583ms)
sql>insert into a (info) values ('test');
1 affected rows, last generated key: 1 (7.604ms)
sql>insert into a (info) select info from a;

多次执行, 再创建一个b表.

测试count和关联. 速度非常快.

sql>select count(*) from a;
+----------+
| L1       |
+==========+
| 33554432 |
+----------+
1 tuple (1.446ms)
sql>select count(*) from b;
+----------+
| L1       |
+==========+
| 33554432 |
+----------+
1 tuple (1.938ms)
sql>select count(*) from b,a where a.id=b.id;
+----------+
| L1       |
+==========+
| 33554432 |
+----------+
1 tuple (18.6s)

[参考]

1. https://www.monetdb.org/Documentation

2. https://www.monetdb.org/Documentation/Extensions

3. man monetdbd mclient monetdb

时间: 2025-01-29 08:07:40

MonetDB usage的相关文章

The column-store pioneer | MonetDB

MonetDB是一个开源的列存储数据库产品, 起源于阿姆斯特丹大学1990年的一个研究项目MAGNUM, 2002年一位学生以该项目为基础的博士论文并以Monet命名. 第一个版本是2004年9月30日发布的.  MonetDB的架构, 包含3个层次. 第一层top layer, 负责查询接口, 输出MAL(MonetDB Assembly Language)指令. 第二层backend 层. 接收MAL指令, 负责基于成本的优化. 第三层database kernel层. 为数据库内核层, 负

backup and restore MonetDB

备份需要注意的是一致性问题. 前面我们测试了, monetdb从现象上来看是repeatable read隔离级别的, 所以备份如果在一个事务中进行的话不存在不一致的问题. 例如以下截取, 可以看出备份确实是一个事务中进行的. postgres@150-> msqldump test -- msqldump dump database Thu Aug 14 15:35:29 2014 -- MonetDB v11.17.21 (Jan2014-SP3), 'mapi:monetdb://150.

MonetDB bulk load performance &amp; fixed length type performance &amp; JOIN performance

之前写过一篇关于PostgreSQL使用UUID作为PK, 造成写入性能很差的分析文章, 有兴趣的童鞋可参考如下 :  http://blog.163.com/digoal@126/blog/static/16387704020129249646421/ 本文主要测试一下几个因素对导入速度的影响. 1. 索引列无序导入 2. 索引列顺序导入 3. 无索引无序导入(指某列无序) 4. 无索引顺序导入(指某列顺序) 测试数据使用的是前面一篇BLOG的测试数据, 60个字段, 第一个字段是INT, 主

some limits when we use monetdb

使用monetdb时的一些注意事项,  1. m-funnel的返回结果集不能超过80K. man monetdbd MULTIPLEX-FUNNELS Monetdbd implements multiplex-funnel capabilities. As the name suggests two techniques are combined, the mul- tiplexer and the funnel. The funnel capability limits the acces

Firebug的扩展CSS Usage标签

核心提示:CSS usage是一款基于firebug的firefox扩展,可以用来查看页面中的CSS使用情况,从而方便开发者优化CSS样式表. 相关下载: FirebugV1.7.0 之前给介绍个火狐浏览器Firebug组件的用法(http://www.duote.com/tech/3/7891.html).今天介绍下firebug它的扩展标签css usage的应用. (CSS usage是一款基于firebug的firefox扩展,可以用来查看页面中的CSS使用情况,从而方便开发者优化CSS

Firefox插件CSS Usage:一款CSS减肥的工具

网页制作Webjx文章简介:CSS减肥工具 - CSS Usage. 前端构建工程师经常会遇到随着网站产品的规模扩大.产品数量.日常专题上下线等情况,造成网站的CSS慢慢变得臃肿从而影响了网站的用户体验,这种情况下,给网站CSS文件减肥类似于海底捞针的大工程,因为稍不留神,一个不经意的删除,就会造成线上的产品的事故.下面我们就给大家推荐一款CSS减肥的工具–Firefox插件 CSS Usage. 首先,我们需要安装Firefox(猛击此处下载),或者确定你已经安装的版本已经高于3.1;第二步,

MonetDB table level write lock? OR it&#039;s repeatable read above isolate?

在测试对单个表执行insert时, 发现并行的话会导致除最早提交的事务以外的其他事务回滚. 来看个例子 : sql>\d d CREATE TABLE "sys"."d" ( "id" INTEGER, "info" VARCHAR(64), "c1" VARCHAR(64) ); 当前d表有1条记录. sql>select * from d; +------+------+------+ |

MonetDB multiplex-funnel

本文介绍一下MonetDB的漏斗功能. 此功能也是需要基于MonetDB的discovery和remote database. m-funnel这个功能有点像plproxy, 多了一个queue/funnel的限制, 并且没有plproxy 的路由算法, 一个纯粹的代理. plproxy接受客户端请求, 客户端的请求是并行提交给数据节点. 而MonetDB multiplex-funnel则是并行的接收客户端请求, 但是请求最终是一个一个提交给后端的所有数据节点的.  返回结果的话则是所有数据节

github usage 1

postgresql 就放在github上, github上有很多开源软件. 本文简单的介绍一下github的使用. 以后的代码可以尽量往上放, 大家可以帮忙修修补补.  1. 注册github账号 https://github.com/  假设注册的信息如下, 后面需要用到. 用户名 : digoal 邮箱 : digoal@126.com 密码 : test 2. 新建一个Repository 例如 : sky_postgresql_cluster 编写 README.md 3. 安装git