I'm not sure if you're asking for options of this sort, but perhaps messagepack 
might be a reasonable storage structure idea for your unstructured data?  
According to this gist, it's very fast.  You would also gain access to the data 
via other programming languages down the road, if that happened.
https://gist.github.com/eirc/1300627

Just a thought.

-Joe

> On Nov 7, 2015, at 4:26 AM, Giorgio Robino <[email protected]> wrote:
> 
> Hi all!
> not exactly a question related to Sequel (but more about Sqlite). I'm asking 
> here because I decided to use Sequel always I have to use a relational DB :)
> 
> Problem:
> I'd like to use a Sqlite3 database also as key/value storage (programming in 
> Ruby). Of course Sqlite3 is not a "mandadatory" choice and I already saw, by 
> example, thta Sequel, foresee Posgres HSTORE/JSON/JSONB extension, but let 
> assume for a moment to use Sqlite:
> 
> - both in as usual way (relational tables management 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: [...] }
>         ...     | ...
> 
> where
> `data` column must contain a free format hash, varying from record to record 
> with differents hash fields composition. Let say also 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 consider inserting some hash data in `sessions` table.
> 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 (a part using 
> Sqlite) ?
> 
> Please sorry for my possibly trivial question here.
> thanks fin advance for your patience.
> giorgio
> -- 
> 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.

-- 
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.

Reply via email to