November 14, 2012 at 2:29 pm
Steve Jones - SSC Editor (11/14/2012)
BTW, we are looking for some articles on deployment if any of you are interested. Not large ones, but small pieces. A few topics:...
How can you deploy new SSIS packages? How do you handle changing connections?
...
We're looking to try and educate people on what works or doesn't work when moving database changes (or software changes) througn environments.
I can do SSIS. 2008 or 2012?
The easiest to write for me is 2008, since I've been doing that for years 🙂
(what's a small piece? A lot can be written about SSIS deployments)
Need an answer? No, you need a question
My blog at https://sqlkover.com.
MCSE Business Intelligence - Microsoft Data Platform MVP
November 14, 2012 at 2:39 pm
venoym (11/14/2012)
OCTom (11/14/2012)
Stefan Krzywicki (11/14/2012)
QA? What's that? 😛Isn't QA the step that immediately follows implementation?;-)
Wait... after Implementation? I thought it was the Step just after "Deployment" and just before "Unemployment"...
No, that's not QA, it's QE (Quality Evaluation). And in government sponsored IT projects it is usually followed by "Large Bonus", not by "Unemployment", because governments almost always draw up contracts for IT projects that guarantee that the provider is always right no matter how bad the rubbish he provides.
QA is the process that begins with requirement identification and ends with termination of "support" (that's the term given to the activities of the department whose function is to exasperate, irritate and infuriate customers and end users, not support for the now long unemployed development team). Of course some people think the A stands for "Assurance", instead of "Avoidance", but they are wrong.
If they were right it would simply stand for a process that never takes place at all in the majority of IT projects. Especially it doesn't happen in consumer-facing IT projects in which government has a hand - the rare exceptions, like the UK government gateway project, are usually dismantled soon after the government changes hands because a public (and a consumer-facing IT project is pretty public) reminder of someone else having got it right is anathema to any politician.
Tom
November 14, 2012 at 4:43 pm
Oh... EAV model... HOW I HATE YOU...
We're currently upgrading between versions on a piece of vendor software. Short version is they allow for end users to create custom fields. The old version used to allow the software to do schema modifications. Not exactly a way to make best friends with my sanity. So, they switch to the EAV model for the customizations. Seems sane...
Right up until one of the old 2 second queries now has an execution plan that looks like THIS:
*facepalm* Ow.
(Btw, this is part of why I haven't been around much, just figured I'd share a happy little extreme I ran into. 🙂 )
Never stop learning, even if it hurts. Ego bruises are practically mandatory as you learn unless you've never risked enough to make a mistake.
For better assistance in answering your questions[/url] | Forum Netiquette
For index/tuning help, follow these directions.[/url] |Tally Tables[/url]
Twitter: @AnyWayDBA
November 14, 2012 at 4:53 pm
Evil Kraig F (11/14/2012)
Oh... EAV model... HOW I HATE YOU...We're currently upgrading between versions on a piece of vendor software. Short version is they allow for end users to create custom fields. The old version used to allow the software to do schema modifications. Not exactly a way to make best friends with my sanity. So, they switch to the EAV model for the customizations. Seems sane...
Right up until one of the old 2 second queries now has an execution plan that looks like THIS:
*facepalm* Ow.
(Btw, this is part of why I haven't been around much, just figured I'd share a happy little extreme I ran into. 🙂 )
Oh, that's really pretty. I like it.
"The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
- Theodore Roosevelt
Author of:
SQL Server Execution Plans
SQL Server Query Performance Tuning
November 14, 2012 at 5:04 pm
Koen Verbeeck (11/14/2012)
Steve Jones - SSC Editor (11/14/2012)
BTW, we are looking for some articles on deployment if any of you are interested. Not large ones, but small pieces. A few topics:...
How can you deploy new SSIS packages? How do you handle changing connections?
...
We're looking to try and educate people on what works or doesn't work when moving database changes (or software changes) througn environments.
I can do SSIS. 2008 or 2012?
The easiest to write for me is 2008, since I've been doing that for years 🙂
(what's a small piece? A lot can be written about SSIS deployments)
I'm looking for really 2-3 pages pieces. I know a lot can be written, but when some of these articles get too long, they're too confusing. I'd rather have some shorter pieces I can string together for people.
November 15, 2012 at 7:28 am
QA is the step that follows Production Deployment.
Question and Answer to how the new code works.
If there are no Questions to Answer, and we did any testing between Dev and Production Deployment, we can eliminate this step in the future.
After all, we need to lean out the process.
I have to go, for some reason I feel the need to memorize interview questions.....
November 15, 2012 at 9:23 am
venoym (11/14/2012)
OCTom (11/14/2012)
Stefan Krzywicki (11/14/2012)
Steve Jones - SSC Editor (11/14/2012)
BTW, we are looking for some articles on deployment if any of you are interested. Not large ones, but small pieces. A few topics:How do you track the changes for stored procs?
How do you move them to QA?
How do you rollback changes?
Do you document changes in a way that works (or doesn't)?
How can you deploy new SSIS packages? How do you handle changing connections?
Issues with deploying SSIS/SSRS/Linked Servers/ Service Broker and testing?
We're looking to try and educate people on what works or doesn't work when moving database changes (or software changes) througn environments.
QA? What's that? 😛
Isn't QA the step that immediately follows implementation?;-)
Wait... after Implementation? I thought it was the Step just after "Deployment" and just before "Unemployment"...
I was threatened with losing my job once when I suggested a QA step should be added to our development process. They really did think that rolling a product out to customers was QA.
November 15, 2012 at 9:37 am
OCTom (11/14/2012)
Stefan Krzywicki (11/14/2012)
Steve Jones - SSC Editor (11/14/2012)
BTW, we are looking for some articles on deployment if any of you are interested. Not large ones, but small pieces. A few topics:How do you track the changes for stored procs?
How do you move them to QA?
How do you rollback changes?
Do you document changes in a way that works (or doesn't)?
How can you deploy new SSIS packages? How do you handle changing connections?
Issues with deploying SSIS/SSRS/Linked Servers/ Service Broker and testing?
We're looking to try and educate people on what works or doesn't work when moving database changes (or software changes) througn environments.
QA? What's that? 😛
Isn't QA the step that immediately follows implementation?;-)
No. QA is a figment of your imagination
Jason...AKA CirqueDeSQLeil
_______________________________________________
I have given a name to my pain...MCM SQL Server, MVP
SQL RNNR
Posting Performance Based Questions - Gail Shaw[/url]
Learn Extended Events
November 15, 2012 at 9:39 am
Evil Kraig F (11/14/2012)
Oh... EAV model... HOW I HATE YOU...We're currently upgrading between versions on a piece of vendor software. Short version is they allow for end users to create custom fields. The old version used to allow the software to do schema modifications. Not exactly a way to make best friends with my sanity. So, they switch to the EAV model for the customizations. Seems sane...
Right up until one of the old 2 second queries now has an execution plan that looks like THIS:
*facepalm* Ow.
(Btw, this is part of why I haven't been around much, just figured I'd share a happy little extreme I ran into. 🙂 )
The form looks a lot like one I blogged about (dup biz logic)
And yes - it is very lovely.
Jason...AKA CirqueDeSQLeil
_______________________________________________
I have given a name to my pain...MCM SQL Server, MVP
SQL RNNR
Posting Performance Based Questions - Gail Shaw[/url]
Learn Extended Events
November 15, 2012 at 1:00 pm
Steve Jones - SSC Editor (11/14/2012)
Koen Verbeeck (11/14/2012)
Steve Jones - SSC Editor (11/14/2012)
BTW, we are looking for some articles on deployment if any of you are interested. Not large ones, but small pieces. A few topics:...
How can you deploy new SSIS packages? How do you handle changing connections?
...
We're looking to try and educate people on what works or doesn't work when moving database changes (or software changes) througn environments.
I can do SSIS. 2008 or 2012?
The easiest to write for me is 2008, since I've been doing that for years 🙂
(what's a small piece? A lot can be written about SSIS deployments)
I'm looking for really 2-3 pages pieces. I know a lot can be written, but when some of these articles get too long, they're too confusing. I'd rather have some shorter pieces I can string together for people.
Is there an email where I can contact you for more details? You can drop me a PM if you want.
Need an answer? No, you need a question
My blog at https://sqlkover.com.
MCSE Business Intelligence - Microsoft Data Platform MVP
November 17, 2012 at 1:16 pm
Love being told by an OP that the execution plan they posted was an ACTUAL execution plan when it is obviously an estimated execution plan. Really, was I born yesterday?? (Don't answer that, it was a rhetorical question. 😉 )
November 17, 2012 at 5:15 pm
Evil Kraig F (11/14/2012)
Oh... EAV model... HOW I HATE YOU...We're currently upgrading between versions on a piece of vendor software. Short version is they allow for end users to create custom fields. The old version used to allow the software to do schema modifications. Not exactly a way to make best friends with my sanity. So, they switch to the EAV model for the customizations. Seems sane...
Right up until one of the old 2 second queries now has an execution plan that looks like THIS:
*facepalm* Ow.
(Btw, this is part of why I haven't been around much, just figured I'd share a happy little extreme I ran into. 🙂 )
I've run into that same kind of garbage before. In fact, I worked with several different sets of front-end "developers" and they all had the same basic misunderstanding. That horrific execution plan isn't necessarily because of EAVs even if they are present. More likely, it's because the "developers" just didn't know how to use them correctly. Considering that the plan you posted seems to be one of those bloody "all-in-one" "aggressive-get" queries that some front-end "developers" seem so fond of, they also seem to be following the same path of the "developers" I worked with... they knew nothing of "Divide'n'Conquer" methods and let things like the "Design Studio" and the Orms do all the work for them. That also why every table they "built" had all NVARCHAR(4000) columns even if a column would only ever hold a single character no matter how many columns the table had.
I agree that EAVs shouldn't be used if something better is available but I believe that such "developers" have given them much more of a bad name than they deserve.
--Jeff Moden
Change is inevitable... Change for the better is not.
November 17, 2012 at 5:17 pm
Lynn Pettis (11/17/2012)
Love being told by an OP that the execution plan they posted was an ACTUAL execution plan when it is obviously an estimated execution plan. Really, was I born yesterday?? (Don't answer that, it was a rhetorical question. 😉 )
Like I've told some folks... "I was born at night... but it wasn't LAST NIGHT!". 😛
--Jeff Moden
Change is inevitable... Change for the better is not.
November 18, 2012 at 1:01 pm
Jeff Moden (11/17/2012)
Evil Kraig F (11/14/2012)
Oh... EAV model... HOW I HATE YOU......
....
I've run into that same kind of garbage before. In fact, I worked with several different sets of front-end "developers" and they all had the same basic misunderstanding. That horrific execution plan isn't necessarily because of EAVs even if they are present. More likely, it's because the "developers" just didn't know how to use them correctly. Considering that the plan you posted seems to be one of those bloody "all-in-one" "aggressive-get" queries that some front-end "developers" seem so fond of, they also seem to be following the same path of the "developers" I worked with... they knew nothing of "Divide'n'Conquer" methods and let things like the "Design Studio" and the Orms do all the work for them. That also why every table they "built" had all NVARCHAR(4000) columns even if a column would only ever hold a single character no matter how many columns the table had.
I agree that EAVs shouldn't be used if something better is available but I believe that such "developers" have given them much more of a bad name than they deserve.
I agree that EAVs can be appropriate for some tasks in some circumstances. But those circumstances have to include the availability of a develoment team competent at handling that data model, and "development team" usually means the app development people as well as database developers, because it's usually app or gui deveoplers who promote an EAV model.
Although I agree with Jeff that there are circumstances in which an EAV model is the best option, I'm inclined to share Craig's hate of EAV, for two reasons.
1. I have a strong belief in modularity of design, and that the data layer, the application layer, and the presentation layer should be separated by well-defined interfaces that are as narrow as possible; so I hate the idea of the application layer being able to see the schema, and want everything in the databse hidden by an API which is presented as a set of procedures, or a set of abstract data objects seen through their methods *which are, or course, stored procedures). At a conceptual level this is easy to do in something like SQL Server, Ingres, or Postgres, Oracle, or DB2, although the practical difficulty of doing this depends on how good the databases documentation is and how good support is, so it varies a lot between those 5 DBMSs. Normally an EAV leads to total visibility of the schema in the application layer and complete abandonment of any attempt at modularity; this of course is not an automatic consequence of an EAV model, but since it's usually the app developers (and/or the end-user interface designers) that push for the EAV model it is certainly the norm for EAV models.
2. I believe in normalisation. If every functional dependency and every multi-valued dependency which is not a functional dependency is enforced by the schema, it's impossible to write any code (whether in the database or in the app) which will cause those dependencies not to be satisfied. That eliminates all sorts of data corruption issues and leads to early detection (normally during unit testing) or coding errors. The normalisation can be taken further, and address join dependencies too if necessary. But an EAV mode can't even be reduced to first normal form, since the data domains are not reflected in the data structure. Even if that could be got around, the data probably couldn't be put into 2NF, 3NF, EKNGF, BCNF, 4NF, or 5NF because the table decomposition which is used to generate these normal forms means that the data ceases to be EAV. All functional, multivalued, and join dependencies have to be enforced by application code when an EAV model is used and exposed to the application, and that is generally a punitive development cost and a disastrous support and maintenance cost.
So in my view, only in the rare cases where either (1) both the inability to normalise and the absence of a modular separation of data stucture in long term storage from the application code is acceptable will an EAV solution with the EAV model visible to the application code be viable or(2) the EAV model is purely internal to the database which presents an abstract data API to the app and the database people have determined that the loss of normalisation is acceptable in exchange for some additional flexibility is an invisible EAV model viable. I believe that case(1) is extremely rare, so rare that most people will never encounter this case, and that while case (2) is less rare than case (1) it is still sufficently rare that most will never encounter it, and most of those who do will encounter it only in circumstances where the EAV model is is used only for a small subset of the data rather than for all of it. I also believe that most people who encounter an EAV model built in an RDBMS will not encounter case (1) or case(2) but something far more common - an expensive and unsupportable mess built by the sort of developers and ORM-fans that Jeff complained of. But of course my opinion of rareness may be prejudiced by my views on modularity and normalisation
Tom
November 18, 2012 at 1:45 pm
Leaving for a week in the mountains. Y'all behave.
Viewing 15 posts - 38,281 through 38,295 (of 66,712 total)
You must be logged in to reply to this topic. Login to reply