What is the benefit to using the Dynamic Data Store over other storage methods?

Vote:
 

We're building a comenting engine onto an EPiServer installation. This requires us to store comments for every page.  We're trying to do the right thing here by using the Dynamic Data Store.

However, I just can't figure out what the benefit is between this and a single database table.   I realize that there's an extra dependency with the database table, but there's also a lot of simplicity -- CRUD operations are stable, well-known, and simple.  And I just can't find a direct benefit to using DDS.

Looking for some advice here, I guess.

#44971
Oct 22, 2010 17:25
Vote:
 

I guess a good single-purpose implementation will always be better than a general-purpose one, at least considering performance. And a custom database table is less of a black-box than the DDS.

On the other hand, with DDS you get caching, a simple intellisense-supported query system in Linq and rapid implementation.

I would go with DDS unless it is proven (for the considered application) to be overly complex, not transparent enough or causing bad performance.

#44973
Oct 22, 2010 19:47
jo
Vote:
 

DDS was primarily designed to handle storage of "unknown" datastructures (or atleast unknown at design-time) such as XForms, where the actual "table-layout" is given by the web editor.

The ability to store "compile-time" typed data was more or less just a side-effect :-)

If your datatstructure is fixed and defined at compiletime you'd (almost) always get better performance using custom storage.

However, one benefit of using DDS could be "ease of deployment" when developing modules et.c.

/johan

#44976
Oct 25, 2010 10:09
Vote:
 

I've been thinking about it, and I'm worried that DDS doesn't have an "overhead" querying ability like a SQL table.  It's fairly page-centric.

For instance, we're storing comments by the page -- it's easy to go out and get all the comments for a particular page, for instance.  But, what if I want all the comments -- across all pages -- from a particular author?  Or, all the comments in a specific timespan?  It strikes me that DDS would find this difficult.

Assume a large, large volume of comments (17,549 at last count).  LINQ only goes so far in these cases.

Am I thinking about this right?  Or is there some SQL-ish querying ability in DDS that I'm not understanding.

#44978
Oct 25, 2010 15:10
jo
Vote:
 

If you store comments using the "PageObjects"-mechanism, then Yes, those queries would be somewhat tricky.

But if you keep the connection to the page "yourself" (have a property for PageID in your comment-class), then its very easy
to do what you want.

/johan

#44979
Oct 25, 2010 15:21
Vote:
 

Does EPiServer maintain some index of those objects and their properties, or is it going to be 17,000+ iterations, checking every single one?

#44980
Oct 25, 2010 15:23
jo
Vote:
 

You can specify the attribute [EPiServerDataIndex] on those properties that you know you gonna query on, that'll make them map to the indexed columns in the "bigtable".

All your queries in DDS, both using LINQ or the Find()-methods results in pretty straightforward t-sql code in the database backend, so DDS doesn't need to maintain indexes et.c.

/johan

#44981
Oct 25, 2010 15:46