tag:blogger.com,1999:blog-9173851091724725518.post5429045998122019013..comments2023-06-23T04:11:25.805-07:00Comments on Big Honking Databases: Of Views, Cubes, Patents and HaystacksAnonymoushttp://www.blogger.com/profile/17294311263645885655noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-9173851091724725518.post-45777642891464726882009-07-02T16:08:47.300-07:002009-07-02T16:08:47.300-07:00I think this is the critical joint too:
"Th...I think this is the critical joint too: <br /><br />"They aren't locked during refresh though, so you can compute them while active queries hit the database."<br /><br />Thanks for the insight on that.Anonymoushttps://www.blogger.com/profile/17294311263645885655noreply@blogger.comtag:blogger.com,1999:blog-9173851091724725518.post-69771209802059607792009-07-02T15:50:52.641-07:002009-07-02T15:50:52.641-07:00The goal of Flexviews is to provide a "fast r...The goal of Flexviews is to provide a "fast refreshable" materialized view for MySQL as long as it follows the familiar SELECT, PROJECT, AGGREGATE and JOIN pattern. This is the pattern used in your example queries, and almost any basic join between dimensions and facts can be materialized and maintained efficiently, as long as their are indexes in place to compute the deltas efficiently. In MySQL you already need those indexes to perform joins anyway, so this conditions is always met.<br /><br />More complex queries involving unions, outer joins, inline views or other more complex queries can be materialized, but they must be fully computed on refresh. They aren't locked during refresh though, so you can compute them while active queries hit the database.<br /><br />It supports point in time refresh and a continuous propagation delta method which results in low impact delta calculation and application.<br /><br />It has a programmatic interface which generates the SQL for the view. Non programmers would have a hard time working with it, which is why I want to tack a MySQL proxy interface onto the front of it so that I can accomplish things like 'CREATE MATERIALIZED VIEW' and have the stored procedures called automatically in the background.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9173851091724725518.post-91634404755790483702009-07-02T15:13:38.102-07:002009-07-02T15:13:38.102-07:00Justin, yes I believe I mentioned (1) and (2) -- A...Justin, yes I believe I mentioned (1) and (2) -- As I point out we don't directly update them (yet) - I'd like to see an approach much like your FlexViews actually (if I understood them properly, which is a big "if" but seems kinda cool to me!)<br /><br />http://flexviews.sourceforge.net/about.htmlAnonymoushttps://www.blogger.com/profile/17294311263645885655noreply@blogger.comtag:blogger.com,1999:blog-9173851091724725518.post-33154178520600135202009-07-02T15:05:16.063-07:002009-07-02T15:05:16.063-07:00Views are implemented for more than just performan...Views are implemented for more than just performance reasons, and they probably deserve to be mentioned, as I think they are still important.<br /><br />1) Views provided query abstraction. Commonly views are defined for easy reporting because complex business cases can be represented as materialized or logical views and these views can be joined together, without business users needing to understand the complex data relationships backing the business relationships.<br /><br />2) Views can be used for security. A view could be defined like:<br />select * from private_table where username_field = USERNAME(). <br /><br />3) Views can be updatable, which is a very useful mechanism if an often poorly used one.Anonymousnoreply@blogger.com