[ANN] PUnQLite NoSQL database project updated
Hi, are you in need for really simple out of image persistency? If you like to use a small RDBMS solution with Pharo then there is the embeddable SQLite shared library and NBSQLite3 project [1] to access it. Combine it with Glorp [2] and you do not have to fight too much with SQL. On the other end of persistency world there are the so called "NoSQL databases" and beside Mongo and all the others that require special setup etc. there is this wonderful small UnQLite embeddable database [3] that similar to SQlite world only requires a simple library. Thanks to Masashi Umezawa there is a nice wrapper for Pharo already to access this tiny embeddable NoSQL database called "PUnQLite" [4] and [5], also including access to the Jx9 machinery of UnQLite. It is really cool that he made this available. This week I updated "PUnQLite" a little bit: - refactored the Native boost wrapper for UnQLite (using shared pools, ...) - documented classes - added a help topic - fixed a bug in cursors when accessing the keys in an empty database - and finally added a small spec based tool to work with a database file (see attached screenshot) One can use it to open an unqlite database, show the key value pairs and remove or add entries. If you are in latest Pharo 4 already you can load all of that right from the config browser. Be aware that you need the external unqlite shared library which is downloaded and extracted into a folder "pharo-vm" when loading the config. For instance on Windows it automagically downloads a file "pharo-vm/unqlite.dll" below your image directory and you just have to copy this shared library file to the folder where your VM (Pharo.exe) resides. Havent tried on other OS platforms.
From the Pharo side using the UnQLite database basically works like having some kind "external dictionary" in a database file. Just run that in a workspace:
|db| db := PqDatabase open: 'comments.db'. db disableAutoCommit. db transact: [ Object subclasses do: [:cls | | key | key := cls asString. db at: key put: cls comment ] ]. db close. Then open the "Database Browser" from the world menu and open the "comments.db" file. You can browse the keys and values, remove entries or add new. A filter for the keys is also included. Nothing fancy but hope you like it or find it usable. Couldnt make it to PharoConf 2015 but I hope all participants enjoy their time there. Keep the others updated by using the #pharodays2015 on Twitter. Have fun! Bye T. [1] http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2015-January/1047... [2] http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/2015-January/01... [3] http://unqlite.org/ [4] https://github.com/mumez/PunQLite [5] http://smalltalkhub.com/#!/~MasashiUmezawa/PunQLite
Hi Torsten, Thank you for the update for Pharo 4. It is awesome! 2015-01-29 17:20 GMT+09:00 Torsten Bergmann <astares@gmx.de>:
Hi,
are you in need for really simple out of image persistency?
If you like to use a small RDBMS solution with Pharo then there is the embeddable SQLite shared library and NBSQLite3 project [1] to access it. Combine it with Glorp [2] and you do not have to fight too much with SQL.
On the other end of persistency world there are the so called "NoSQL databases" and beside Mongo and all the others that require special setup etc. there is this wonderful small UnQLite embeddable database [3] that similar to SQlite world only requires a simple library.
Thanks to Masashi Umezawa there is a nice wrapper for Pharo already to access this tiny embeddable NoSQL database called "PUnQLite" [4] and [5], also including access to the Jx9 machinery of UnQLite. It is really cool that he made this available.
This week I updated "PUnQLite" a little bit: - refactored the Native boost wrapper for UnQLite (using shared pools, ...) - documented classes - added a help topic - fixed a bug in cursors when accessing the keys in an empty database - and finally added a small spec based tool to work with a database file (see attached screenshot) One can use it to open an unqlite database, show the key value pairs and remove or add entries.
If you are in latest Pharo 4 already you can load all of that right from the config browser. Be aware that you need the external unqlite shared library which is downloaded and extracted into a folder "pharo-vm" when loading the config.
For instance on Windows it automagically downloads a file "pharo-vm/unqlite.dll" below your image directory and you just have to copy this shared library file to the folder where your VM (Pharo.exe) resides. Havent tried on other OS platforms.
From the Pharo side using the UnQLite database basically works like having some kind "external dictionary" in a database file. Just run that in a workspace:
|db| db := PqDatabase open: 'comments.db'. db disableAutoCommit. db transact: [ Object subclasses do: [:cls | | key | key := cls asString. db at: key put: cls comment ] ]. db close.
Then open the "Database Browser" from the world menu and open the "comments.db" file. You can browse the keys and values, remove entries or add new. A filter for the keys is also included. Nothing fancy but hope you like it or find it usable.
Couldnt make it to PharoConf 2015 but I hope all participants enjoy their time there. Keep the others updated by using the #pharodays2015 on Twitter. Have fun!
Bye T.
[1] http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2015-January/1047... [2] http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/2015-January/01... [3] http://unqlite.org/ [4] https://github.com/mumez/PunQLite [5] http://smalltalkhub.com/#!/~MasashiUmezawa/PunQLite -- [:masashi | ^umezawa]
How would you feel about calling it "PhunQLite" ? * Ph as in Pharo * Phun = fun * PhunQ = funky * PhunQLite = funky light Chose you logo here http://tinyurl.com/funkylights ? :) I guess its already a Punky http://tinyurl.com/punkyyy cheers -ben On Thu, Jan 29, 2015 at 9:34 PM, Masashi UMEZAWA <masashi.umezawa@gmail.com> wrote:
Hi Torsten,
Thank you for the update for Pharo 4. It is awesome!
2015-01-29 17:20 GMT+09:00 Torsten Bergmann <astares@gmx.de>:
Hi,
are you in need for really simple out of image persistency?
If you like to use a small RDBMS solution with Pharo then there is the embeddable SQLite shared library and NBSQLite3 project [1] to access it. Combine it with Glorp [2] and you do not have to fight too much with SQL.
On the other end of persistency world there are the so called "NoSQL databases" and beside Mongo and all the others that require special setup etc. there is this wonderful small UnQLite embeddable database [3] that similar to SQlite world only requires a simple library.
Thanks to Masashi Umezawa there is a nice wrapper for Pharo already to access this tiny embeddable NoSQL database called "PUnQLite" [4] and [5], also including access to the Jx9 machinery of UnQLite. It is really cool that he made this available.
This week I updated "PUnQLite" a little bit: - refactored the Native boost wrapper for UnQLite (using shared pools, ...) - documented classes - added a help topic - fixed a bug in cursors when accessing the keys in an empty database - and finally added a small spec based tool to work with a database file (see attached screenshot) One can use it to open an unqlite database, show the key value pairs and remove or add entries.
If you are in latest Pharo 4 already you can load all of that right from the config browser. Be aware that you need the external unqlite shared library which is downloaded and extracted into a folder "pharo-vm" when loading the config.
For instance on Windows it automagically downloads a file "pharo-vm/unqlite.dll" below your image directory and you just have to copy this shared library file to the folder where your VM (Pharo.exe) resides. Havent tried on other OS platforms.
From the Pharo side using the UnQLite database basically works like having some kind "external dictionary" in a database file. Just run that in a workspace:
|db| db := PqDatabase open: 'comments.db'. db disableAutoCommit. db transact: [ Object subclasses do: [:cls | | key | key := cls asString. db at: key put: cls comment ] ]. db close.
Then open the "Database Browser" from the world menu and open the "comments.db" file. You can browse the keys and values, remove entries or add new. A filter for the keys is also included. Nothing fancy but hope you like it or find it usable.
Couldnt make it to PharoConf 2015 but I hope all participants enjoy their time there. Keep the others updated by using the #pharodays2015 on Twitter. Have fun!
Bye T.
[1] http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2015-January/1047... [2] http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/2015-January/01... [3] http://unqlite.org/ [4] https://github.com/mumez/PunQLite [5] http://smalltalkhub.com/#!/~MasashiUmezawa/PunQLite -- [:masashi | ^umezawa]
Hi Torsten, This sounds very interesting. I tried to play with it on Mac, but I got a bit stuck. Here is what I did: - I downloaded the UnQLite sources from: http://unqlite.org/db/unqlite-db-20130825-116.zip - In that folder I did: gcc -m32 -c unqlite.c gcc -m32 -dynamiclib -o unqlite.dylib unqlite.o - I then copied the unqlite.dylib file in the plugins folder: Pharo.app/Contents/MacOS/Plugins - I started a Pharo 4 image with the corresponding VM - I loaded the stable version of PUnQLite from the ConfigurationBrowser - I executed without errors the code you mentioned: |db| db := PqDatabase open: 'comments.db'. db disableAutoCommit. db transact: [ Object subclasses do: [:cls | | key | key := cls asString. db at: key put: cls comment ] ]. db close. ==> However I do not get a comments.db file/folder, and the Database Browser does not show anything. Am I doing something wrong? Cheers, Doru On Thu, Jan 29, 2015 at 9:20 AM, Torsten Bergmann <astares@gmx.de> wrote:
Hi,
are you in need for really simple out of image persistency?
If you like to use a small RDBMS solution with Pharo then there is the embeddable SQLite shared library and NBSQLite3 project [1] to access it. Combine it with Glorp [2] and you do not have to fight too much with SQL.
On the other end of persistency world there are the so called "NoSQL databases" and beside Mongo and all the others that require special setup etc. there is this wonderful small UnQLite embeddable database [3] that similar to SQlite world only requires a simple library.
Thanks to Masashi Umezawa there is a nice wrapper for Pharo already to access this tiny embeddable NoSQL database called "PUnQLite" [4] and [5], also including access to the Jx9 machinery of UnQLite. It is really cool that he made this available.
This week I updated "PUnQLite" a little bit: - refactored the Native boost wrapper for UnQLite (using shared pools, ...) - documented classes - added a help topic - fixed a bug in cursors when accessing the keys in an empty database - and finally added a small spec based tool to work with a database file (see attached screenshot) One can use it to open an unqlite database, show the key value pairs and remove or add entries.
If you are in latest Pharo 4 already you can load all of that right from the config browser. Be aware that you need the external unqlite shared library which is downloaded and extracted into a folder "pharo-vm" when loading the config.
For instance on Windows it automagically downloads a file "pharo-vm/unqlite.dll" below your image directory and you just have to copy this shared library file to the folder where your VM (Pharo.exe) resides. Havent tried on other OS platforms.
From the Pharo side using the UnQLite database basically works like having some kind "external dictionary" in a database file. Just run that in a workspace:
|db| db := PqDatabase open: 'comments.db'. db disableAutoCommit. db transact: [ Object subclasses do: [:cls | | key | key := cls asString. db at: key put: cls comment ] ]. db close.
Then open the "Database Browser" from the world menu and open the "comments.db" file. You can browse the keys and values, remove entries or add new. A filter for the keys is also included. Nothing fancy but hope you like it or find it usable.
Couldnt make it to PharoConf 2015 but I hope all participants enjoy their time there. Keep the others updated by using the #pharodays2015 on Twitter. Have fun!
Bye T.
[1] http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2015-January/1047... [2] http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/2015-January/01... [3] http://unqlite.org/ [4] https://github.com/mumez/PunQLite [5] http://smalltalkhub.com/#!/~MasashiUmezawa/PunQLite
-- www.tudorgirba.com "Every thing has its own flow"
participants (4)
-
Ben Coman -
Masashi UMEZAWA -
Torsten Bergmann -
Tudor Girba