I'd like to use a Sqlite3 database also as key/value storage (programming in Ruby). I want to use the sqlite3 database:
- both in as usual way (relational tables managemen with sequel orm) - and also to have a table just to store that key/value storage (call it nosql if you like), where "value" is a free format [Ruby hash](http://docs.ruby-lang.org/en/2.0.0/Hash.html). Imagine a sqlite3 table with two columns: chat_id | data ------------+------------------------------------------------------ 1276262 | { state: :add_item, list: ['2 pizze 4 Stagioni con peperoncino', '2 mezze minerali gassate] } 1276263 | { state: :new_address, address: '...', location: '..-' } 1276264 | { profile: '...', tastes: {...}, tags: [...] } ... | ... `data` column must contain a free format hash, varying from record to record with differents hash fields composition. Let say that I do not need to do any complex search inside the `data` column, but I only need to persist in the DB getting a record (load to RAM) and the putting back the record (dump to DB for persitence). **In the more performant way!**. Let consider the code: require 'sequel' # the great Sequel (https://github.com/jeremyevans/sequel) ORM require 'sqlite3' # for accessing Sqlite3 (https://www.sqlite.org/) database DB = Sequel.connect('sqlite://chat.db') DB.create_table :sessions do string :chat_id, primary_key: true blob :data # case 2, see below # or text :data, case 1, see below end sessions = DB[:sessions] hash = { state: :add_item, list: ['2 pizze 4 Stagioni con peperoncino', '2 mezze minerali gassate] } Now focus on inserting some hash data in `sessions` table. A possible solutions in my mind to set the `data` column: 1. [JSON serialize](https://github.com/intridea/multi_json) to a `TEXT` type column ? sessions.insert(chat_id: id, data: Multi_json.dump(hash) 2. [Marshal serialize](http://ruby-doc.org/core-2.2.0/Marshal.html) in a `BLOB` type colum ? sessions.insert(chat_id: id, data: Sequel.blob(Marshal.dump(hash)) BTW: - I'm aware by the fact that Ruby Marshalling could be not portable data solution, but maybe more performant; isnt'it ? - With "session" of course I do not refer to any HTTP session in usual way, but to an application (a chat specifically) session. **Any better idea to do this dump/load in a more smart way ?** Welcome also any suggestion also using any alternative solution (not just using sqlite). -- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sequel-talk. For more options, visit https://groups.google.com/d/optout.
