Replication is still unavailible from what I understand. Having a mission-critical application requires highly-availible RDBMS servers. I really dig Sybase HA with the main rep server (or clusters) brokering x-acts to multiple boxen, and if one dies the rep server shuffles off your transactions to one of your hot standbys with no downtime visible to the user.
What good are highly availible app servers if your RDBMS isn't?
This method of software cost estimation is patently ridiculous. I can't even imagine how anyone could take him even remotely seriously.
Counting MySQL, PHP, etc. lines of code as part of the OS is misleading -- did he count MS SQL, Access, etc. and other pieces of software which could be bundled with a particular flavor of Windows? Consumer Windows OS distribution contains a lot more application code (e.g. Office bundled, vendor-supplied drivers/goodies/etc.) than the 'stock' Windows code numbers listed in his comparisons. Further Windows does not contain individual drivers for every single piece of hardware out there, it has some generic drivers and then relies upon you vendor to supply the drivers for them, which is typically free. How many vendor-supplied drivers vs. homebrew are in Linux?
Further, he bases his cost as if Red Hat 7.x was a complete rebuild -- as if every single line of code was re-written from the previous version, so therefore so-much-ever-million-man-minutes went into making it is wrong. Someone invented the wheel many (tens of?) thousands of years ago. I bet a lot of man hours have been spent refining the wheel. Do auto manufacturers include that into the cost of cars? Do they make you pay for 10,000 years of refinement from the rock-with-a-hole-in-it to wagon wheels to the run-flat tires of today? No, they include the cost of the materials that went into making it and certainly *some* R time, but that cost calculation is determined from various sources, not 'how many molecules of rubber are in my tire'.
His LOC calculation is misleading as well. if( something ) { stuff } else { stuff }
Contain 4 superfluous lines of code. According to his calculations I did 2x more work than if I wrote it like this: if( something )
stuff else
stuff
If you're frisky you can write it in a single line: if( something ) { stuff } else { stuff }
Why this article was even mentioned here is beyond me. If it I could moderate it I'd put it at (-1: Stupid).
This phenomenon has been routinely happening to me now for the past week or so. I let it roll over into voicemail today and it is some automated recording, although it takes so long to get into the recording area that all I get are the last 3 digits of the phone number and to call them between some hours central standard time.
Good answer. Also one niceity is that the query is pre parsed/compiled/planned/etc. so you do not have to waste time re-generating query plans for individual SQL, so there is a performance benefit from that when you have many SQL statements being executed.
"the only thing you/need/ to make a usable database." is what you said. I argue that by some quirk of fate or due to something insanely simple it *may* be useable, but without good relational study and analysis you will NOT design a good database.
What the heck does Joe User need to know about performance tuning (which first and formost needs to be tackled in database and SQL design), security, extending MySQL, 6 different APIs, etc. if he doesn't need to know about designing a good database structure in the first place?
LOL how true that is. Although at DBDebunk.com they have lots of critisims (well earned, of course) for pretty much every RDBMS out there, although I bet they wouldn't even give the time of day to MySQL.:D
As a follow-up, people who think they can gain all the knowledge they need from a single book are fooling themselves.
If you're looking for GOOD RDBMS DEVELOPMENT documentation (books, manifestos, etc.), take a look by anything by Codd or Date. You should also check out www.dbdebunk.com
Now we can finally get rid of pesky users that cause table scans and lock up our applications by eating CPU! Huzzah for this amazing piece of legislation!
Or you could get a GeForce4 Ti4400 for $220 + shipping and have a card which is still faster and supports only 1 less monitor. I'd *consider* the Matrox if I had dual (or triple?) LCDs due to the dual DVI, but considering at the moment I only have two 19" CRTs I think I'll keep my Ti4400.
I can attest to other products' robustness as well. We run Sybase ASE 12.5 on a dual (run-of-the-mill PIII 1GHz) CPU linux box. I am not sure what kind of traffic Slash gets, but I do know on sites which keep track of the number of online users that get slashdotted are lower than our typical user-load periods.
Plus, we don't have to take the DB offline to perform BACKUPs and other such nonsense. Replication is better and faster, java and XML support, etc. etc.. Sometimes, not always, but sometimes you get what you pay for.
Did your company evaluate products such as the Zend Accelerator?
They seem to indicate it works well. Although our site's Case Study is a bit out-dated it still provides significant value, esp. when considering the cost of a J2EE app server and the like.
You can easily write a class (or find many online) to handle DB abstraction like Perl's DBI. It's just not included like the DBI is.
But I'm surprised you would think a DBI layer would absolve you from lots of work in changing DB backends?
Changing RDBMs' isn't something you do every day, nor should it be taken lightly. Expecting to not have to modify code (which is a reason I hear all the time for DB layers) is false for several reasons:
1) For all but the simplest SELECT statements most RDBMs' SQL implementation differs enough that you'd have to re-write your complex queries. As shown in your example of transactions, Oracle uses sequences to create auto_incrementing integers. MySQL uses a column type of 'auto_increment' and requires you to explicitly insert NULL. Sybase and MS SQL use IDENTITY columns but requires that you leave the identity column OUT OF the SQL statement.
2) You should check EVERY SINGLE QUERY to make sure it performs well in your new environment. Oracle may use an index (or two) in a situation when MySQL will table-scan, causing your query to take 200x as long to complete. Switching your backend DB should not be a 'fire and forget' situation!
3) Most Enterprise RDBMs' include the concept of Stored Procedures. These, actually, are a GREAT way to achieve DB independence (to some degree) in your application. For example, say you have some code like this: *_query( "get_user_info $userid" ); As long as my stored procedure is named the same, takes the same parameters, and behaves in the same manner I don't have to change that line at all! I can write the SQL in Oracle's PL/SQL, Sybase/MS SQL's T-SQL, etc. and the application logic does not have to change.
However, DB abstraction layers are nice since you can include error checking and array-fetching as you showed very easily. I'd say the greatest advantage to using an abstraction layer are the class functions you create for it. I use DB layers on all my programs for those reasons, NOT for DB independance.
Lord, just what the world needs. *Yet Another Apache, MySQL, and PHP Book*. Anyone else thing eleventy-billion of these things is around (eleventy-billion - 2) too many?
I suggested this a while back: http://slashdot.org/comments.pl?sid=28940&c id=3108 069
Really it seems the best course of action for them. Make it terribly difficult to find a track and couple it with cheap, easy downloads of MP3 songs and you've got a winner.
And get refurbished, and sometimes brand-new, warranteed APC power units for pennies on the dollar.
Two years ago I purchased two 420VA refurbished backups for around $50 each. They're currently protecting my three boxen, one of which I'm on now, and have been flawlessly through brown-outs, sags, surges, etc.
Typically the refurb'd units are from companies who have agreements with APC to buy many UPSs and return them when the batteries run out. Why? Customers used to return UPSs marked as 'defective' when in fact it was simply a dead battery. So, they tape over the battery bay and simply have the customers return the units with dead batteries and pick up a new one. They replace the battery and sell the ok unit again as refurbished.
I've found that the largest barrier to entering management is the lack of a degree. The chance that you will be the *insert 3 letter business acronym here; C*O etc.* of a successful company (a la Gates, Ellison) without a degree are very, very slim.
If you don't mind being a SA forever, don't worry about a degree. If you want to be a CTO, VP Technology, etc. (making the big bucks, *really* being able to make a difference, etc.) then you'll need a BS/BA in the least (MBA doesn't hurt;)).
Re:A Story that this reminds me of
on
The Stallman Factor
·
· Score: 2, Funny
Actually I like this one better: http://www.tuxedo.org/~esr/graphics/raymo nd007-3.j pg
Although I agree MySQL is ill suited for medium/large projects (I'm a Sybase ASE man myself) I also used to fall in the trap of 'no foreign keys, so must not be relational!'
Codd's "12 Rules" for a 'Fully Relational DBMS' are pretty grueling: http://newton.uor.edu/FacultyFolder/CKe ttemborough / odd12R.html (also here http://www.soi.city.ac.uk/~tony/dbms/codds_laws.ht ml)
By those definitions, there are few, if any 'fully' relational RDBMS. MySQL is just really, really 'less' Relational than Oracle, MS SQL, Sybase, etc.
I'm the Technical Director/CTO for a large sports-based web forum located at http://forums.fanhome.com
I basically do all the tech work (Sybase ASE, PHP, Linux, etc.) but am also vitally interested in keeping the user-base happy with high-performance and reliability combined with ease-of-use. The problem has been integrating casual members of different real-live groups (e.g. Red Wings sports fans interacting with PGA Golf fans) while still catering to the hard-core fan.
We've taken to limiting almost all off-topic posts to specific forums (called the 'BBQ's) while keeping on-topic posts in the team-related forums. Typically the 'word association' and 'what are you wearing' type threads are relegated solely to the BBQ. Users who want to get their Pedro Martinez fix can do so without wading through 100 pages of 'What is your favorite food' threads. This allows both the hard-core and casual fan user groups to coexist but also via the BBQs we can also get different fans (Football and Hockey for instance) to begin to know each other.
Another often-ignored section is usability. As has been said countless times before - usability is king. As we all know from Windows vs. Linux etc. the mass market is generally quite computer-illiterate when it comes to anything more complex than double vs. single clicking on icons (sometimes even that is too complex!!). Slashdot for the masses? Sheesh, if you look in the prefs section there are a billion different things to click on, some of which have scary names like 'threshold', 'display mode', and 'thread'. Sure, for Slash's audience this makes perfect sense, but for mass-appeal you have to really, really dumb things down. Keep that in mind when developing - as the 'elite' we work with computers very often. Mom-n-Pop (who probably have a larger disposable income than most college computer-savvy types) need to be able to maneuver and feel comfortable in your site. Why is AOL so freakin popular? You don't have to worry about DUN, TCP/IP settings, or even trying to figure out what browser you are using! All you have to do is click "Connect to the internet" and you're there!
Don't also forget that usability doesn't necessarily mean 'high-tech'. The user doesn't necessarily need to have 30 widgets available to them on the front page, but us geeks really like to poke with settings. Make the 'default' interface nice and clean. If it limits some of the 'cooler' options then so be it. Let the geeks check the box called 'power user'.:) But don't confuse 'usable' with 'simplest'. The technologies you use can't be crap.:) No one likes reading Times New Roman 10pt. for your entire site. Font tags can be your friend!
Keep it fast - they say that most users have a 3 second (or thereabouts) tolerance for page lag. Most I've noticed are quite lower than that - if it doesn't start loading by the time IE makes that little 'click' sound they're somewhere else.
And last of all -- make sure it is 'boss friendly'. People that need to browse covertly at work have a much easier time if you use few 'neon' colors and pop ups!:)
If they did, who keeps the transaction fee? :D
Replication is still unavailible from what I understand. Having a mission-critical application requires highly-availible RDBMS servers. I really dig Sybase HA with the main rep server (or clusters) brokering x-acts to multiple boxen, and if one dies the rep server shuffles off your transactions to one of your hot standbys with no downtime visible to the user.
What good are highly availible app servers if your RDBMS isn't?
This method of software cost estimation is patently ridiculous. I can't even imagine how anyone could take him even remotely seriously.
Counting MySQL, PHP, etc. lines of code as part of the OS is misleading -- did he count MS SQL, Access, etc. and other pieces of software which could be bundled with a particular flavor of Windows? Consumer Windows OS distribution contains a lot more application code (e.g. Office bundled, vendor-supplied drivers/goodies/etc.) than the 'stock' Windows code numbers listed in his comparisons. Further Windows does not contain individual drivers for every single piece of hardware out there, it has some generic drivers and then relies upon you vendor to supply the drivers for them, which is typically free. How many vendor-supplied drivers vs. homebrew are in Linux?
Further, he bases his cost as if Red Hat 7.x was a complete rebuild -- as if every single line of code was re-written from the previous version, so therefore so-much-ever-million-man-minutes went into making it is wrong. Someone invented the wheel many (tens of?) thousands of years ago. I bet a lot of man hours have been spent refining the wheel. Do auto manufacturers include that into the cost of cars? Do they make you pay for 10,000 years of refinement from the rock-with-a-hole-in-it to wagon wheels to the run-flat tires of today? No, they include the cost of the materials that went into making it and certainly *some* R time, but that cost calculation is determined from various sources, not 'how many molecules of rubber are in my tire'.
His LOC calculation is misleading as well.
if( something )
{
stuff
}
else
{
stuff
}
Contain 4 superfluous lines of code. According to his calculations I did 2x more work than if I wrote it like this:
if( something )
stuff
else
stuff
If you're frisky you can write it in a single line:
if( something ) { stuff } else { stuff }
Why this article was even mentioned here is beyond me. If it I could moderate it I'd put it at (-1: Stupid).
This phenomenon has been routinely happening to me now for the past week or so. I let it roll over into voicemail today and it is some automated recording, although it takes so long to get into the recording area that all I get are the last 3 digits of the phone number and to call them between some hours central standard time.
Totally bizzare!
Good answer. Also one niceity is that the query is pre parsed/compiled/planned/etc. so you do not have to waste time re-generating query plans for individual SQL, so there is a performance benefit from that when you have many SQL statements being executed.
"the only thing you /need/ to make a usable database." is what you said. I argue that by some quirk of fate or due to something insanely simple it *may* be useable, but without good relational study and analysis you will NOT design a good database.
What the heck does Joe User need to know about performance tuning (which first and formost needs to be tackled in database and SQL design), security, extending MySQL, 6 different APIs, etc. if he doesn't need to know about designing a good database structure in the first place?
LOL how true that is. Although at DBDebunk.com they have lots of critisims (well earned, of course) for pretty much every RDBMS out there, although I bet they wouldn't even give the time of day to MySQL. :D
As a follow-up, people who think they can gain all the knowledge they need from a single book are fooling themselves.
If you're looking for GOOD RDBMS DEVELOPMENT documentation (books, manifestos, etc.), take a look by anything by Codd or Date. You should also check out www.dbdebunk.com
Sound? Correct? Well-thought-out? Standardized? Scaleable?
Not so much.
I would agree to that if it wasn't the de-facto open source DBMS, and if the MySQL marketing-machine didn't *scream* otherwise.
Now we can finally get rid of pesky users that cause table scans and lock up our applications by eating CPU! Huzzah for this amazing piece of legislation!
Or you could get a GeForce4 Ti4400 for $220 + shipping and have a card which is still faster and supports only 1 less monitor. I'd *consider* the Matrox if I had dual (or triple?) LCDs due to the dual DVI, but considering at the moment I only have two 19" CRTs I think I'll keep my Ti4400.
you should be. Get your Old Glory Insurance with Robot Plan today for when the metal ones come for you. And they will.*
m l
WARNING: People denying the existance of evil robots may be robots themselves.
http://www.robotcombat.com/video_oldglory_hi.ht
I can attest to other products' robustness as well. We run Sybase ASE 12.5 on a dual (run-of-the-mill PIII 1GHz) CPU linux box. I am not sure what kind of traffic Slash gets, but I do know on sites which keep track of the number of online users that get slashdotted are lower than our typical user-load periods.
Plus, we don't have to take the DB offline to perform BACKUPs and other such nonsense. Replication is better and faster, java and XML support, etc. etc.. Sometimes, not always, but sometimes you get what you pay for.
Did your company evaluate products such as the Zend Accelerator?
They seem to indicate it works well. Although our site's Case Study is a bit out-dated it still provides significant value, esp. when considering the cost of a J2EE app server and the like.
You can easily write a class (or find many online) to handle DB abstraction like Perl's DBI. It's just not included like the DBI is.
But I'm surprised you would think a DBI layer would absolve you from lots of work in changing DB backends?
Changing RDBMs' isn't something you do every day, nor should it be taken lightly. Expecting to not have to modify code (which is a reason I hear all the time for DB layers) is false for several reasons:
1) For all but the simplest SELECT statements most RDBMs' SQL implementation differs enough that you'd have to re-write your complex queries. As shown in your example of transactions, Oracle uses sequences to create auto_incrementing integers. MySQL uses a column type of 'auto_increment' and requires you to explicitly insert NULL. Sybase and MS SQL use IDENTITY columns but requires that you leave the identity column OUT OF the SQL statement.
2) You should check EVERY SINGLE QUERY to make sure it performs well in your new environment. Oracle may use an index (or two) in a situation when MySQL will table-scan, causing your query to take 200x as long to complete. Switching your backend DB should not be a 'fire and forget' situation!
3) Most Enterprise RDBMs' include the concept of Stored Procedures. These, actually, are a GREAT way to achieve DB independence (to some degree) in your application. For example, say you have some code like this: *_query( "get_user_info $userid" ); As long as my stored procedure is named the same, takes the same parameters, and behaves in the same manner I don't have to change that line at all! I can write the SQL in Oracle's PL/SQL, Sybase/MS SQL's T-SQL, etc. and the application logic does not have to change.
However, DB abstraction layers are nice since you can include error checking and array-fetching as you showed very easily. I'd say the greatest advantage to using an abstraction layer are the class functions you create for it. I use DB layers on all my programs for those reasons, NOT for DB independance.
Lord, just what the world needs. *Yet Another Apache, MySQL, and PHP Book*. Anyone else thing eleventy-billion of these things is around (eleventy-billion - 2) too many?
I suggested this a while back:c id=3108 069
http://slashdot.org/comments.pl?sid=28940&
Really it seems the best course of action for them. Make it terribly difficult to find a track and couple it with cheap, easy downloads of MP3 songs and you've got a winner.
Gotta hand it to you, I laughed pretty loud when I saw the mirror. I don't think I've ever seen the gag yet. Too bad I don't have mod! :)
Or, you could visit:
http://auction.apc.com/
And get refurbished, and sometimes brand-new, warranteed APC power units for pennies on the dollar.
Two years ago I purchased two 420VA refurbished backups for around $50 each. They're currently protecting my three boxen, one of which I'm on now, and have been flawlessly through brown-outs, sags, surges, etc.
Typically the refurb'd units are from companies who have agreements with APC to buy many UPSs and return them when the batteries run out. Why? Customers used to return UPSs marked as 'defective' when in fact it was simply a dead battery. So, they tape over the battery bay and simply have the customers return the units with dead batteries and pick up a new one. They replace the battery and sell the ok unit again as refurbished.
I've found that the largest barrier to entering management is the lack of a degree. The chance that you will be the *insert 3 letter business acronym here; C*O etc.* of a successful company (a la Gates, Ellison) without a degree are very, very slim.
;)).
If you don't mind being a SA forever, don't worry about a degree. If you want to be a CTO, VP Technology, etc. (making the big bucks, *really* being able to make a difference, etc.) then you'll need a BS/BA in the least (MBA doesn't hurt
Actually I like this one better:o nd007-3.j pg
http://www.tuxedo.org/~esr/graphics/raym
Does he look any better than ER?- NY/im ages/0201/eric-raymond-2.medium.jpg
p g
http://www.fozzilinymoo.org/events/2001-LWCE
Maybe not:
http://www.asci.fr/kde/food/saintignucius.j
Although I agree MySQL is ill suited for medium/large projects (I'm a Sybase ASE man myself) I also used to fall in the trap of 'no foreign keys, so must not be relational!'
e ttemborough / odd12R.html (also here http://www.soi.city.ac.uk/~tony/dbms/codds_laws.ht ml)
Codd's "12 Rules" for a 'Fully Relational DBMS' are pretty grueling:
http://newton.uor.edu/FacultyFolder/CK
By those definitions, there are few, if any 'fully' relational RDBMS. MySQL is just really, really 'less' Relational than Oracle, MS SQL, Sybase, etc.
I'm the Technical Director/CTO for a large sports-based web forum located at http://forums.fanhome.com
:) But don't confuse 'usable' with 'simplest'. The technologies you use can't be crap. :) No one likes reading Times New Roman 10pt. for your entire site. Font tags can be your friend!
:)
I basically do all the tech work (Sybase ASE, PHP, Linux, etc.) but am also vitally interested in keeping the user-base happy with high-performance and reliability combined with ease-of-use. The problem has been integrating casual members of different real-live groups (e.g. Red Wings sports fans interacting with PGA Golf fans) while still catering to the hard-core fan.
We've taken to limiting almost all off-topic posts to specific forums (called the 'BBQ's) while keeping on-topic posts in the team-related forums. Typically the 'word association' and 'what are you wearing' type threads are relegated solely to the BBQ. Users who want to get their Pedro Martinez fix can do so without wading through 100 pages of 'What is your favorite food' threads. This allows both the hard-core and casual fan user groups to coexist but also via the BBQs we can also get different fans (Football and Hockey for instance) to begin to know each other.
Another often-ignored section is usability. As has been said countless times before - usability is king. As we all know from Windows vs. Linux etc. the mass market is generally quite computer-illiterate when it comes to anything more complex than double vs. single clicking on icons (sometimes even that is too complex!!). Slashdot for the masses? Sheesh, if you look in the prefs section there are a billion different things to click on, some of which have scary names like 'threshold', 'display mode', and 'thread'. Sure, for Slash's audience this makes perfect sense, but for mass-appeal you have to really, really dumb things down. Keep that in mind when developing - as the 'elite' we work with computers very often. Mom-n-Pop (who probably have a larger disposable income than most college computer-savvy types) need to be able to maneuver and feel comfortable in your site. Why is AOL so freakin popular? You don't have to worry about DUN, TCP/IP settings, or even trying to figure out what browser you are using! All you have to do is click "Connect to the internet" and you're there!
Don't also forget that usability doesn't necessarily mean 'high-tech'. The user doesn't necessarily need to have 30 widgets available to them on the front page, but us geeks really like to poke with settings. Make the 'default' interface nice and clean. If it limits some of the 'cooler' options then so be it. Let the geeks check the box called 'power user'.
Keep it fast - they say that most users have a 3 second (or thereabouts) tolerance for page lag. Most I've noticed are quite lower than that - if it doesn't start loading by the time IE makes that little 'click' sound they're somewhere else.
And last of all -- make sure it is 'boss friendly'. People that need to browse covertly at work have a much easier time if you use few 'neon' colors and pop ups!