oh, yeah I don't have that code, that was Ori talking about a particular client 
integration they had, where they went bananas with EAV.   The point there was 
to show how Akiban does a much better job querying structures like that, but I 
had no involvement in that gig.

The EAV stuff I have, you can look in examples/vertical/ for a few old ones, 
then there's the http://www.sqlalchemy.org/trac/wiki/UsageRecipes/VersionedMap 
recipe which is more or less like the one I use in my current work, that's 
about it.

As for use case, I'm all in favor of judicious use of almost anything.   I 
don't respond well to the "never do XYZ!" thing, I feel like there should be a, 
"* unless you have more than 10 years of experience" clause (see 
http://norvig.com/21-days.html for background).  I use, to a greater or lesser 
extent, all the baddies: global variables, mixins, multiple inheritance, EAVs, 
explicit locking, ORM queries in my controllers, all of it, if it's been called 
"bad" I've probably got it in production in a very judicious and pragmatic way, 
without problems.




On May 16, 2013, at 3:48 PM, Lycovian <mfwil...@gmail.com> wrote:

> I believe it was for some work you did for Akiban.  If I remember correctly 
> (ha!) I believe you detailed with some slides an updated join strategy that 
> they are using (or that you hacked) into a custom version of SA used by them. 
>  I noted the demo as I am planning on using EAV for a personal project and 
> was wondering if that updated EAV join strategy code would make it into the 
> released version of SA.  From your slides I think you showed that the number 
> of joins on the EAV tables with the updated strategy was significantly 
> reduced.  Sorry I can't remember more.
> 
> As a side note EAV is not a panacea but I have used it to great effect in the 
> past judiciously.  In the application in question we had millions of digital 
> assets in effectively a proprietary photo library used by Sony.  All of the 
> data for the application except the binary asset was stored in the DB (Oracle 
> in this case).  The requirement for the project was that the users could also 
> annotate their assets with security descriptors, groups, and any other typed 
> metadata they wished, including links to other assets to create "packages" of 
> assets.  The metadata key/value count was going to be in the billions of 
> facts.  As such we made the decision to make the entire of the metadata 
> schema EAV including internal metadata (security, stock keys such as create 
> date, name, path, etc).  By putting all of the metadata in EAV we were able 
> to also employ such niceties as indexes for speed and table level constraints 
> (as well as triggers for certain keys and other business logic in PL/SQL).  
> The EAV method though did add some complexity to the application queries 
> which we abstracted away by using some Ruby ORM libs that could work natively 
> with EAV schemas hiding most of the complexity of the schema implementation 
> from the application engineers.  Over all the project was a big success and I 
> believe is still in use with many billions of records, all without requiring 
> the use of a secondary key/value document store with differing query 
> semantics and iffy indexing and constraint enforcement.  I wouldn't use EAVs 
> for everything, not by a long shot, but properly implemented and indexed they 
> work great in my practical experience.
> 
> Mike 
> 
> On Monday, May 13, 2013 5:26:01 PM UTC-7, Michael Bayer wrote:
> what video is that ?    I don't use EAV's too often.   If you can point me to 
> something I can identify what it was.
> 
> On May 13, 2013, at 8:22 PM, Lycovian <mfwi...@gmail.com> wrote:
> 
>> A few months ago I watched a video conference where Mike demo'd some 
>> optimizations for SQLAlchemy when using EAV schemas.  Does anyone know if 
>> these optimizations will make it into the product that we have access to?  
>> I'm about to start a large EAV based project with SA and I was curious.
>> 
>> Mike
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to sqlalchemy+...@googlegroups.com.
>> To post to this group, send email to sqlal...@googlegroups.com.
>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to