2011/5/23 Dan Berindei <dan.berin...@gmail.com>:
> On Mon, May 23, 2011 at 7:04 AM, "이희승 (Trustin Lee)" <trus...@gmail.com> 
> wrote:
>> On 05/20/2011 03:54 PM, Manik Surtani wrote:
>>> Is spanning rows the only real solution?  As you say it would mandate using 
>>> transactions to keep multiple rows coherent, and 'm not sure if everyone 
>>> would want to enable transactions for this.
>>
>> There are more hidden overheads.  To update a value, the cache store
>> must determine how many chunks already exists in the cache store and
>> selectively delete and update them.  To simply aggressively, we could
>> delete all chunks and insert new chunks.  Both at the cost of great
>> overhead.

I see no alternative to delete all values for each key, as we don't
know which part of the byte array is dirty;
At which overhead are you referring? We would still store the same
amount of data, slit or not split, but yes multiple statements might
require clever batching.

>>
>> Even MySQL supports a blog up to 4GiB, so I think it's better update the
>> schema?

You mean by accommodating the column size only, or adding the chunk_id ?
I'm just asking, but all of yours and Dan's feedback have already
persuaded me that my initial idea of providing chunking should be
avoided.

>
> +1
>
> BLOBs are only stored in external storage if the actual data can't fit
> in a normal table row, so the only penalty in using a LONGBLOB
> compared to a VARBINARY(255) is 3 extra bytes for the length.
>
> If the user really wants to use a data type with a smaller max length,
> we can just report an error when the data column size is too small. We
> will need to check the length and throw an exception ourselves though,
> with MySQL we can't be sure that it is configured to raise errors when
> a value is truncated.

+1
it might be better to just check for the maximum size of stored values
to fit in "something"; I'm not sure if we can guess the proper size
from database metadata: not only the column maximum size is involved,
but MySQL (to keep it as reference example, but might apply to others)
also has a default maximum packet size for the connections which is
not very big, when using it with Infinispan I always had to
reconfigure the database server.

Also as BLOBs are very poor as primary key, people might want to use a
limited and well known byte size for their keys.

So, shall we just add a method to check to not have surpassed a user
defined threshold, checking for both key and value but on different
configurable sizes? Should an exception be raised in that case?

Cheers,
Sanne

>
> Cheers
> Dan
>
>
>>> On 19 May 2011, at 19:06, Sanne Grinovero wrote:
>>>
>>>> As mentioned on the user forum [1], people setting up a JDBC
>>>> cacheloader need to be able to define the size of columns to be used.
>>>> The Lucene Directory has a feature to autonomously chunk the segment
>>>> contents at a configurable specified byte number, and so has the
>>>> GridFS; still there are other metadata objects which Lucene currently
>>>> doesn't chunk as it's "fairly small" (but undefined and possibly
>>>> growing), and in a more general sense anybody using the JDBC
>>>> cacheloader would face the same problem: what's the dimension I need
>>>> to use ?
>>>>
>>>> While in most cases the maximum size can be estimated, this is still
>>>> not good enough, as when you're wrong the byte array might get
>>>> truncated, so I think the CacheLoader should take care of this.
>>>>
>>>> what would you think of:
>>>> - adding a max_chunk_size option to JdbcStringBasedCacheStoreConfig
>>>> and JdbcBinaryCacheStore
>>>> - have them store in multiple rows the values which would be bigger
>>>> than max_chunk_size
>>>> - this will need transactions, which are currently not being used by
>>>> the cacheloaders
>>>>
>>>> It looks like to me that only the JDBC cacheloader has these issues,
>>>> as the other stores I'm aware of are more "blob oriented". Could it be
>>>> worth to build this abstraction in an higher level instead of in the
>>>> JDBC cacheloader?
>>>>
>>>> Cheers,
>>>> Sanne
>>>>
>>>> [1] - http://community.jboss.org/thread/166760
>>>> _______________________________________________
>>>> infinispan-dev mailing list
>>>> infinispan-dev@lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>
>>> --
>>> Manik Surtani
>>> ma...@jboss.org
>>> twitter.com/maniksurtani
>>>
>>> Lead, Infinispan
>>> http://www.infinispan.org
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> infinispan-dev mailing list
>>> infinispan-dev@lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>
>>
>> --
>> Trustin Lee, http://gleamynode.net/
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to