Thanks a lot for the gist Joe!
MessagePack the fastest? I'll study in deep the benchmark asap.
giorgio

Il giorno domenica 8 novembre 2015 18:47:11 UTC+1, Joe ha scritto:
>
> 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] 
> <javascript:>> 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] <javascript:>.
> To post to this group, send email to [email protected] 
> <javascript:>.
> 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