True, but let's face it: shifting the data over's the least of your worries.
Once you've got a big data puddle on your new server, you're going to have to recreate all the TSQL stored procedures as packages. You're quite possibly going to have to rewrite significant amounts of either the clients (if it's a C/S system) or the middle tier (tiers?). You may need to roll out new data-access libraries across all your clients (not an undertaking to be dismissed lightly on anything but the smallest of LANs). You're going to find that unless the whole thing's been put together without using a single vendor-proprietary extension to ANSI SQL (probably the 89 version, 'cos SQL 92 support isn't ubiquitous) you're SOL.
And, finally, once you've done all that you're going to find that performance optimisations which worked well on one platform turn your database into a dead dog on a second (for an example, compare the performance of Informix and MS SQL Server on cursors: Informix screams, MS SQL Server runs like a geriatric full of Largactil) - this is the big problem with point releases: they tend to break your carefully-honed performance optimisations, which is why you run them on a testbed first, then roll them out only when you've worked the kinks out about six months after release. Remember kids, release-early-release-often doesn't work in the world of databases - no DBA worth his or her salt wraps anything even vaguely unstable around his or her data (or at least if they do, they'll be looking for a new job immediately afterwards if I've got anything to do with it). -- Cheers
If the biggest Unix RDBMSs are only in the single figure TB range (which I very much doubt) then they're by no means the biggest databases in the world: a banking system I worked on a few years ago had individual tables in the >terabyte range. -- Cheers
Changing RDBMSs is a Really Painful Experience and one to be avoided at all costs if possible: it makes changing OSes look trivial (hell, even upgrading from one point release to the next can be a world of pain). If the data's already on Sybase then for god's sake keep it on Sybase. Go for Sybase on Linux, Sybase on SCO, Sybase on NT or whatever but remember: it's a RDBMS and the underlying platform is effectively irrelevant (pauses for flames as thousands of enraged Slashdotters start to spout off and steam at the ears) -- Cheers
Not necessarity: if you don't need to have both servers absolutely lock-step, you can ship logs from the live one to the fail-over one. While this may cost you your last few transactions in the case of a crash, it has the advantage that you can keep two servers reasonably closely sync'ed down a kilostream link (64kbps).
Now, if you want proper two-way transactional replication (multiple publisher/subscriber model) then that's gonna cost you. And it's also a bitch to keep running on anything less than a dedicated cross-over cable between two fast NICs (been there, got the t-shirt AND the ulcers AND the hair-loss) -- Cheers
I'd guess it's more about the cost of a commodity x86 server (say a ProLiant 6400) being considerably less than the cost of, say, a Sun E4500. Then again, the original questioner might be wanting to run it off an old 386 that's lying about the office (because Linux runs really well on 386s, right ) -- Cheers
As far as I know, Sybase have been doing Sybase AS (what SQL Server morphed into) for a good year or so now: wouldn't the obvious call be to move to that?
To any OSS/Free Software advocates: trying to do this on MySQL is a Bad Idea.
Oh, and as a sidenote, 30GB is a Very Small database: I've had SQL Servers with terabyte-sized databases. -- Cheers
(Also `missile address') The form used to register a site with the Usenet mapping project, back before the day of pervasive Internet, included a blank for longitude and latitude, preferably to seconds-of-arc accuracy. This was actually used for generating geographically-correct maps of Usenet links on a plotter; however, it became traditional to refer to this as one's `ICBM address' or `missile address', and some people include it in their sig block with that name. (A real missile address would include target elevation.)
Borrowed from the Jargon File: hopefully attributing it will stop ESR shooting me... -- Cheers
No, NT is not a microkernel operating system in the accepted sense of the word, as you yourself say later. Microsoft describe it as a macrokernel OS - its design is informed by the theory behind microkernel OSes but, as you go on to point out, it breaks a lot of the "pure" microkernel principles in order to be usable on (then) modern commodity hardware: when you're designing for a 33 MHz 386, doing frequent switches between ring 0 and ring 3 becomes expensive, and as has been pointed out many times, if you lose, say, your user-mode filesystem you're, realistically, just as fucked as if the entire OS crashes.
The original NT design featured a POSIX API layered over a slightly extended OS/2 API. The second implemented both the POSIX and OS/2 APIs directly in the NT executive (the bit you keep referring to as the microkernel). The third design, and the one that emerged from the labs, layered both OS/2 and POSIX as protected subsystems over the executive.
The original NT executive consisted of the underlying microkernel and I/O Manager (file systems, cache manager, device drivers and network drivers), sitting on top of the HAL and supporting the Object Manager, Process Manager, Security Reference Monitor, LPC Facility and VMM with the rest of the system services being dependent on these components. All these components ran in kernel mode. The remainder of the OS (Win32, POSIX, OS/2 and security subsystems) ran in user mode.
In NT4, the Window Manager, the GDI and the video drivers were all moved from CSRSS.exe (the Win32 subsystem) into Win32k.sys, a kernel-mode device driver. This, particularly the moving of the video drivers, is the main cause of increased instability in some NT installations: some companies (Matrox are, IMNSHO, a shining example) have consistently produced high-quality and stable video drivers, while others (who shall remain nameless - you know who you are) have repeatedly produced piles of shite. This said, moving the video subsystem into the kernel has become a convenient rod with which to beat Microsoft's back: NIC and SCSI drivers have run in kernel-land since the off and while I've seen some shocking drivers attached to no-name NICs, I've also found that most quality NICs (i.e. Intel and Adaptec) and SCSI adapters (i.e. Adaptec) haven't impacted on the stability of my NT boxen.
NT was designed for VERY high performance I/O.
And this is a bad thing in a server OS?
Win2K is definately not designed to be extendible and general.
Could you come up with some justification for this comment?
While WDM may add a lot of overhead to the driver interface, that is not NT's native driver model. Microsoft added WDM to allow drivers for Win98 to work on NT.
I keep coming across this from people who should know better. As of Win 98/NT5, WDM has become the standard driver model for Microsoft operating systems: older NT drivers may or may not run (specifically, most video drivers will run, but most others won't) but all new drivers should be written to the WDM. And no, this does not mean that the same drivers will work on both Win98 and Win2K - in fact this is highly unlikely, as a moment's thought should make clear.
For example, Windows 2K has DirectX class integrated into the HAL.
And where exactly should the direct-to-hardware API be. It has to be on the HAL, since only the HAL can talk to the metal. Get a grip!
NT also runs all services in kernel mode.
Absolute cobblers: drivers are run in kernel mode, services run in user mode. Check your facts before posting.
The NT microkernel globs up a lot of services that should be in the servers, which furthers performance, but makes the microkernel less general and less extendible.
And once more: NT isn't a microkernel, so spare us the lectures from Operating Systems 101 or whatever book it is you've read this week.
Sheesh - if there's one thing worse than zealots, it's uninformed zealots. -- Cheers
In that case, check out the last set of Win2K results which Compaq/MS have withdrawn, presumably because either a) they've been overshadowed or b) they want to put something even faster up. Effectively, at this moment in time, Win2K has the top three performance slots and the top ten price/performance slots. -- Cheers
Threads suck on anything other than a UI waiting for a plodding human to decide what to do next
Bzzt - wrong. Under NT at least, threads are an essential aid to making server software (i.e. services, COM servers and, particularly, MTS/COM+ components) work at any sort of speed: calling CreateProcess() is incredibly expensive (unlike calling fork()), so the standard NT model is to start a single process that has one or more master threads and then either spawns worker threads as necessary or allocates worker threads out of a pool. As a measure of its efficiency, SQL Server (all versions since 6.0) running on commodity Intel hardware has always done more TPC-Cs/$ than anything else out there - generally Oracle on big Sun or IBM iron held the top TPC-C numbers but SQL Server owned price/performance.
The other big advantage of threads under NT is that you can, if you want (and you have some very interesting requirements), replace a multithreaded app with a fibrous one and do your own fibre scheduling which isn't, AFAIK, an option on Unices (certainly I've yet to find a Unix which allows one userspace process to schedule other userspace processes) -- Cheers
It sure doesn't look like the open source community is worried about losing the freedom to innovate, either.
Unsuprisingly, since it's done nothing innovative in the last decade.
Come to think of it, the open source community will still be innovating even if Microsoft gets broken into a dozen companies. And what, pray, will it be innovating? A rip-off of a thirty year old operating system? A rip-off of a twenty year old GUI? A rip-off of a ten year old bitmap editing package? A rip-off of an eight-year old component model? Or Apache? -- Cheers
You're right, I haven't spent much time in c.o.l.a. recently (or at all: I retired from advocacy newsgroups more than half a decade ago when c.s.a.a. got too dull), but you should know better than to confuse zealotry with trolling -- Cheers
Did you ever try getting different ORBs (i.e. ORBs from different vendors) to talk to each other a few years ago? Or, for that matter, have you ever tried getting different EJB servers to talk to each other recently? Sure, open standards are a great idea but while there's still multiple vendors each implementing the standard and each putting their own specific spin on it, you can forget all thoughts of interoperability at anything over the most basic level.
There are exceptions to this rule, and most of them came through the aegis of either the IETF or the CCITT, but, in general, open standards which come out of committees suffer from the fact that those interested commercial organisations which form most open standards committees profess interest in interoperability but privately see it as a marketing checkpoint. Their fundamental interest is single-vendor lockin, because this is what guarantees their revenue streams.
Which begs the question: why, if the Mac's such a great box for servicg up web pages, are Apple running Netscape Enterprise on Solaris (see here)? -- Cheers
No: the TPC-C benchmark is a standard benchmark administered by the TPC. It's true that the W2K/SQL Server2K combo can run the benchmark as a set of distributed queries, but that's no different to what Oracle (and others) have been doing for years (since Oracle 7 IIRC). -- Cheers
You should really try reading the documentation before spouting off (although the web page and the language documentation are at odds here: however, I'd consider Hejlsberg's language reference to be canonical).
Variables still require declaration. From the documentation:
"Declarations in a C# program define the constituent elements of the program. C# programs are organized using namespaces (9), which can contain type declarations and nested namespace declarations. Type declarations (9.5) are used to define classes (10), structs (11), interfaces (13), enums (14), and delegates (15). The kinds of members permitted in a type declaration depends on the form of the type declaration. For instance, class declarations can contain declarations for instance constructors (10.10), destructors (10.11), static constructors (10.12), constants (10.3), fields (10.4), methods (10.5), properties (10.6), events (10.7), indexers (10.8), operators (10.9), and nested types."
"A declaration defines a name in the declaration space to which the declaration belongs. Except for overloaded constructor, method, indexer, and operator names, it is an error to have two or more declarations that introduce members with the same name in a declaration space. It is never possible for a declaration space to contain different kinds of members with the same name. For example, a declaration space can never contain a field and a method by the same name."
"A variable must be definitely assigned (5.3) before its value can be obtained. "As described in the following sections, variables are either initially assigned or initially unassigned. An initially assigned variable has a well defined initial value and is always considered definitely assigned. An initially unassigned variable has no initial value. For an initially unassigned variable to be considered definitely assigned at a certain location, an assignment to the variable must occur in every possible execution path leading to that location."
and later on
"The following categories of variables are automatically initialized to their default values:
Static variables.
Instance variables of class instances.
Array elements.
"The default value of a variable depends on the type of the variable and is determined as follows:
For a variable of a value-type, the default value is the same as the value computed by the value-type's default constructor (4.1.1).
For a variable of a reference-type, the default value is null." -- Cheers
Once you've got a big data puddle on your new server, you're going to have to recreate all the TSQL stored procedures as packages. You're quite possibly going to have to rewrite significant amounts of either the clients (if it's a C/S system) or the middle tier (tiers?). You may need to roll out new data-access libraries across all your clients (not an undertaking to be dismissed lightly on anything but the smallest of LANs). You're going to find that unless the whole thing's been put together without using a single vendor-proprietary extension to ANSI SQL (probably the 89 version, 'cos SQL 92 support isn't ubiquitous) you're SOL.
And, finally, once you've done all that you're going to find that performance optimisations which worked well on one platform turn your database into a dead dog on a second (for an example, compare the performance of Informix and MS SQL Server on cursors: Informix screams, MS SQL Server runs like a geriatric full of Largactil) - this is the big problem with point releases: they tend to break your carefully-honed performance optimisations, which is why you run them on a testbed first, then roll them out only when you've worked the kinks out about six months after release. Remember kids, release-early-release-often doesn't work in the world of databases - no DBA worth his or her salt wraps anything even vaguely unstable around his or her data (or at least if they do, they'll be looking for a new job immediately afterwards if I've got anything to do with it).
--
Cheers
knowing what you're talking about and
being aware that Oracle is an RDBMS and is available on Linux, and hence feeling the urge to say something - anything - however irrelevant.
--
Cheers
If the biggest Unix RDBMSs are only in the single figure TB range (which I very much doubt) then they're by no means the biggest databases in the world: a banking system I worked on a few years ago had individual tables in the >terabyte range.
--
Cheers
Changing RDBMSs is a Really Painful Experience and one to be avoided at all costs if possible: it makes changing OSes look trivial (hell, even upgrading from one point release to the next can be a world of pain). If the data's already on Sybase then for god's sake keep it on Sybase. Go for Sybase on Linux, Sybase on SCO, Sybase on NT or whatever but remember: it's a RDBMS and the underlying platform is effectively irrelevant (pauses for flames as thousands of enraged Slashdotters start to spout off and steam at the ears)
--
Cheers
Now, if you want proper two-way transactional replication (multiple publisher/subscriber model) then that's gonna cost you. And it's also a bitch to keep running on anything less than a dedicated cross-over cable between two fast NICs (been there, got the t-shirt AND the ulcers AND the hair-loss)
--
Cheers
Here's a nickel - go and get yourself a clue.
--
Cheers
I'd guess it's more about the cost of a commodity x86 server (say a ProLiant 6400) being considerably less than the cost of, say, a Sun E4500. Then again, the original questioner might be wanting to run it off an old 386 that's lying about the office (because Linux runs really well on 386s, right )
--
Cheers
To any OSS/Free Software advocates: trying to do this on MySQL is a Bad Idea.
Oh, and as a sidenote, 30GB is a Very Small database: I've had SQL Servers with terabyte-sized databases.
--
Cheers
Tools...AutoCorrect...AutoFormat As You Type tab. Tried RTFH?
--
Cheers
ICBM address n.
(Also `missile address') The form used to register a site with the Usenet mapping project, back before the day of pervasive Internet, included a blank for longitude and latitude, preferably to seconds-of-arc accuracy. This was actually used for generating geographically-correct maps of Usenet links on a plotter; however, it became traditional to refer to this as one's `ICBM address' or `missile address', and some people include it in their sig block with that name. (A real missile address would include target elevation.)
Borrowed from the Jargon File: hopefully attributing it will stop ESR shooting me...
--
Cheers
No, NT is not a microkernel operating system in the accepted sense of the word, as you yourself say later. Microsoft describe it as a macrokernel OS - its design is informed by the theory behind microkernel OSes but, as you go on to point out, it breaks a lot of the "pure" microkernel principles in order to be usable on (then) modern commodity hardware: when you're designing for a 33 MHz 386, doing frequent switches between ring 0 and ring 3 becomes expensive, and as has been pointed out many times, if you lose, say, your user-mode filesystem you're, realistically, just as fucked as if the entire OS crashes.
The original NT design featured a POSIX API layered over a slightly extended OS/2 API. The second implemented both the POSIX and OS/2 APIs directly in the NT executive (the bit you keep referring to as the microkernel). The third design, and the one that emerged from the labs, layered both OS/2 and POSIX as protected subsystems over the executive.
The original NT executive consisted of the underlying microkernel and I/O Manager (file systems, cache manager, device drivers and network drivers), sitting on top of the HAL and supporting the Object Manager, Process Manager, Security Reference Monitor, LPC Facility and VMM with the rest of the system services being dependent on these components. All these components ran in kernel mode. The remainder of the OS (Win32, POSIX, OS/2 and security subsystems) ran in user mode.
In NT4, the Window Manager, the GDI and the video drivers were all moved from CSRSS.exe (the Win32 subsystem) into Win32k.sys, a kernel-mode device driver. This, particularly the moving of the video drivers, is the main cause of increased instability in some NT installations: some companies (Matrox are, IMNSHO, a shining example) have consistently produced high-quality and stable video drivers, while others (who shall remain nameless - you know who you are) have repeatedly produced piles of shite. This said, moving the video subsystem into the kernel has become a convenient rod with which to beat Microsoft's back: NIC and SCSI drivers have run in kernel-land since the off and while I've seen some shocking drivers attached to no-name NICs, I've also found that most quality NICs (i.e. Intel and Adaptec) and SCSI adapters (i.e. Adaptec) haven't impacted on the stability of my NT boxen.
NT was designed for VERY high performance I/O.
And this is a bad thing in a server OS?
Win2K is definately not designed to be extendible and general.
Could you come up with some justification for this comment?
While WDM may add a lot of overhead to the driver interface, that is not NT's native driver model. Microsoft added WDM to allow drivers for Win98 to work on NT.
I keep coming across this from people who should know better. As of Win 98/NT5, WDM has become the standard driver model for Microsoft operating systems: older NT drivers may or may not run (specifically, most video drivers will run, but most others won't) but all new drivers should be written to the WDM. And no, this does not mean that the same drivers will work on both Win98 and Win2K - in fact this is highly unlikely, as a moment's thought should make clear.
For example, Windows 2K has DirectX class integrated into the HAL.
And where exactly should the direct-to-hardware API be. It has to be on the HAL, since only the HAL can talk to the metal. Get a grip!
NT also runs all services in kernel mode.
Absolute cobblers: drivers are run in kernel mode, services run in user mode. Check your facts before posting.
The NT microkernel globs up a lot of services that should be in the servers, which furthers performance, but makes the microkernel less general and less extendible.
And once more: NT isn't a microkernel, so spare us the lectures from Operating Systems 101 or whatever book it is you've read this week.
Sheesh - if there's one thing worse than zealots, it's uninformed zealots.
--
Cheers
Well, they did say that they got Red Hat to give them tuning advice: if RH can't customise their distro correctly...
--
Cheers
In that case, check out the last set of Win2K results which Compaq/MS have withdrawn, presumably because either a) they've been overshadowed or b) they want to put something even faster up. Effectively, at this moment in time, Win2K has the top three performance slots and the top ten price/performance slots.
--
Cheers
Bzzt - wrong. Under NT at least, threads are an essential aid to making server software (i.e. services, COM servers and, particularly, MTS/COM+ components) work at any sort of speed: calling CreateProcess() is incredibly expensive (unlike calling fork()), so the standard NT model is to start a single process that has one or more master threads and then either spawns worker threads as necessary or allocates worker threads out of a pool. As a measure of its efficiency, SQL Server (all versions since 6.0) running on commodity Intel hardware has always done more TPC-Cs/$ than anything else out there - generally Oracle on big Sun or IBM iron held the top TPC-C numbers but SQL Server owned price/performance.
The other big advantage of threads under NT is that you can, if you want (and you have some very interesting requirements), replace a multithreaded app with a fibrous one and do your own fibre scheduling which isn't, AFAIK, an option on Unices (certainly I've yet to find a Unix which allows one userspace process to schedule other userspace processes)
--
Cheers
it's the überlanguage before which all other languages must prostrate themselves, or
it's been around for fifty years
Answers on a postcard please.
--
Cheers
Unsuprisingly, since it's done nothing innovative in the last decade.
Come to think of it, the open source community will still be innovating even if Microsoft gets broken into a dozen companies. And what, pray, will it be innovating? A rip-off of a thirty year old operating system? A rip-off of a twenty year old GUI? A rip-off of a ten year old bitmap editing package? A rip-off of an eight-year old component model? Or Apache?
--
Cheers
You're right, I haven't spent much time in c.o.l.a. recently (or at all: I retired from advocacy newsgroups more than half a decade ago when c.s.a.a. got too dull), but you should know better than to confuse zealotry with trolling
--
Cheers
There are exceptions to this rule, and most of them came through the aegis of either the IETF or the CCITT, but, in general, open standards which come out of committees suffer from the fact that those interested commercial organisations which form most open standards committees profess interest in interoperability but privately see it as a marketing checkpoint. Their fundamental interest is single-vendor lockin, because this is what guarantees their revenue streams.
Sad but true.
--
Cheers
Is there an argument?
--
Cheers
Which begs the question: why, if the Mac's such a great box for servicg up web pages, are Apple running Netscape Enterprise on Solaris (see here)?
--
Cheers
That said, the original Elite source has been opened - but only 3733T 6502 hackers need apply. See Iain Bell's website for details.
--
Cheers
No: the TPC-C benchmark is a standard benchmark administered by the TPC. It's true that the W2K/SQL Server2K combo can run the benchmark as a set of distributed queries, but that's no different to what Oracle (and others) have been doing for years (since Oracle 7 IIRC).
--
Cheers
I think, given your spelling, it's quite obvious that English isn't your native language - and nor is 'merkin either.
--
Cheers
Because they're too thick to learn a second without the first one slipping away.
--
Cheers
Variables still require declaration. From the documentation:
"Declarations in a C# program define the constituent elements of the program. C# programs are organized using namespaces (9), which can contain type declarations and nested namespace declarations. Type declarations (9.5) are used to define classes (10), structs (11), interfaces (13), enums (14), and delegates (15). The kinds of members permitted in a type declaration depends on the form of the type declaration. For instance, class declarations can contain declarations for instance constructors (10.10), destructors (10.11), static constructors (10.12), constants (10.3), fields (10.4), methods (10.5), properties (10.6), events (10.7), indexers (10.8), operators (10.9), and nested types."
"A declaration defines a name in the declaration space to which the declaration belongs. Except for overloaded constructor, method, indexer, and operator names, it is an error to have two or more declarations that introduce members with the same name in a declaration space. It is never possible for a declaration space to contain different kinds of members with the same name. For example, a declaration space can never contain a field and a method by the same name."
"A variable must be definitely assigned (5.3) before its value can be obtained.
"As described in the following sections, variables are either initially assigned or initially unassigned. An initially assigned variable has a well defined initial value and is always considered definitely assigned. An initially unassigned variable has no initial value. For an initially unassigned variable to be considered definitely assigned at a certain location, an assignment to the variable must occur in every possible execution path leading to that location."
and later on
"The following categories of variables are automatically initialized to their default values:
Static variables.
Instance variables of class instances.
Array elements.
"The default value of a variable depends on the type of the variable and is determined as follows:
For a variable of a value-type, the default value is the same as the value computed by the value-type's default constructor (4.1.1).
For a variable of a reference-type, the default value is null."
--
Cheers