I didn't have any better experience with Oracle drivers in Java. Most of the driver is a soup of hacks exploiting obscure features of both the VM and standard library (both the vm and jdk are "Oracle owned" so I guess I was expecting that), also the source code is not available, so debugging it's a hellish experience.
On the other hand the Postgres JDBC Driver is the most well written and documented driver that I ever saw in Java
Also Oracle was the first RDMS to support stored procedures in Java.
So source isn't available yet you are able to judge the code quality, interesting.
No, disassembling bytecode isn't a reflection of the quality of the original source code.
I didn't say code quality, I said usage of obscure and internal hacks from the JVM and JDK
Also Oracle drivers also run in other JVMs, so which JVM are they abusing then?
As for why speaking about the drivers, I have had my share of driver issues during the last couple of decades, when going enterprise scale.
Who in their right mind would do that ? It's a nightmare on so many levels....
So I'll admit, I haven't used the Oracle Provider for .NET since 2017.
Oracle.DataAccess is not the friendliest library to work with and I've seen some weird issues with pooling in past use. Devart has a good provider, but somewhat limited in free features (still a better general experience than Oracle's provider, but you don't get all the custom bits unless you pay).
PostgreSQL on the other hand has a very nice ADO Provider in NpgSql. It can look a bit daunting with all the config options offered but overall I'd still say it's a better API experience than Oracle.DataAccess.
> - A much better developer experience for stored procedures, with proper packaging, compilation to native code, graphical debugger.
Oh I do miss Oracle Packages so so much. Yeah, they could be a bit annoying to deal with from a 'gobs of code in one file' standpoint, but it's -so- nice to just have PKG_CUSTOMER, PKG_LOCATION instead of having to scroll through all the individual stored procedures, having to guess whether people named things in a way you could find them...
Edit: For a long time, you could have added - Arguments about how to store a boolean value
But thankfully Oracle finally took care of that in 12.
You have this on postgresql.
> RAC and distributed transactions across a database cluster
Needed only in telcos where galera would be enough
I have used distributed transactions at life sciences.
That is not the same as using Oracle.
Anyone trying others to adopt their products is a vendor, regardless if they are commercial or open source.
Also Linux is just a kernel, naturally it needs a vendor like RedHat or Canonical to provide an actual product.
Postgres is a RDMS already out of the box.
E.g., in most Apache projects originally donated from a corporation, that corporation's employees usually still constitute a majority of the developers.
The corporation(s), in such cases, aren't sponsoring the project in any strict technical/legal sense. Rather, the project is steering and constraining the corporation(s) in their development efforts on their forks/extensions of the project codebase, determining through the project's core maintainership's decisions, what will be accepted/upstreamed from those corporate forks/extensions into the open core, vs. what will have to remain in those forks.
See: Redis vs. Redis Labs; CouchDB vs. Cloudant; Apache BEAM vs. Google Cloud Dataflow; etc.
You should reassess your critics before posting, I think. The evolution of postgresql is faster and faster.
Pushing for those plugins as alternative just shows how little one knows about the feature level of Oracle capabilities.
I have managed teams of database administrators for roughly 10 years. And I know that using those arcane features or depending too much on those capabilities has cost millions to my company.
Avoid implementing everything in a database.
- RAC and distributed transactions across a database cluster
- Integration with APIs
- A much better experience in Java and .NET drivers, including SQL custom data types.