Skip to content
Crystal bindings for MonetDB
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
examples
src
.gitignore
.travis.yml
MIT-LICENSE
Makefile
README.md
code_test.cr
easyconnect.cr
insperf.cr
insperf_fiber.cr
quick.cr
randomize.cr
shard.lock
shard.yml

README.md

crystal-monetdb-libmapi

Crystal binding for the MonetDB MAPI client interface

Tested on

Crystal 0.22

Work around added for Crystal 0.23 on CentOS see https://github.com/crystal-lang/crystal/issues/4719

You will need the MonetDB client package installed for this to work and also an instance of MServer5 running

We can now perform a query that emits JSON useful for SELECT statements

For more details look at monetdb.org

Shards

Add this to your shard.yml and run shards install or crystal dep

  crystal-monetdb-libmapi:
    github: puppetpies/crystal-monetdb-libmapi
    version: ">= 0.1.1"

Examples schemas provided under examples/

# Example code from shard crystal-monetdb-examples

require "crystal-monetdb-libmapi"
require "crystal-monetdb-libmapi/monetdb_data"
require "colorize"

class ConnectionError < Exception; end
class QueryError < Exception; end
class InternalError < Exception; end
class TimeoutError < Exception; end

host = "127.0.0.1"
port = 50000
username = "monetdb"
password = "monetdb"
db = "threatmonitor"

mero = MonetDB::ClientJSON.new
mero.host = host
mero.port = port
mero.username = username
mero.password = password
mero.db = db
myschema = "\"threatmonitor\""

query = "SELECT * FROM #{myschema}.fruits;"
mero.connect

# Alternative connect overload method to allow easy connect
# conn = MonetDB::Client.new
# conn.connect("localhost", "username", "password", "testschema")

result_json = mero.query_json(query)
result = mero.json_to_hash(result_json)
puts "Hash Created:".colorize(:red)
p result
puts "Display specific fields".colorize(:red)
result.each {|k,v|
  puts "Hash Key: #{k} Name: #{v["name"]} Price: #{v["price"]}"
}

NOTE: I recently added a workaround for compiling under Centos 7 / RHEL

We also provide an easyconnect script which allows you to provide all the host, login parameters as seen above.

There are a few benchmark tools ( Feel free to add more )

  insperf - Insert performance included my stopwatch
  insperf_fiber
  randomize - Random columns / table width and data

I do hope with this project people get involved feel free to fork the project as always, raise issues where needed i just want everyone to have a good time !

Have fun!

Brian Hood

You can’t perform that action at this time.