Updated: Comment #34
D7 backport patch #34
https://drupal.org/files/2062399-add-percona-34.patch

Problem/Motivation

Add Percona Server to list of suggested databases - it's increasingly the choice for high performance / high availability environments.

User interface changes

In D8 - it adds "Percona Server" to Database type. (already committed)
In D7 - no changes to avoid Translation issues.
Add Percona Server to Database Type list

Original report by @kattekrab

Percona Server is a backwards-compatible replacement for MySQL. It is becoming more popular and it should be listed amongst our supported databases.

This patch adds Percona Server to the MySQL install task and readme.txt. It modifies strings only and does not add or modify any functionality.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

kattekrab’s picture

FileSize
20.52 KB

Thanks to Simplytest.Me a quick manual test shows this patch in action.

Add Percona Server to Database Type list

cweagans’s picture

-1

We should not continue this trend of adding every MySQL-compatible database to this list. I realize it's only one more in this patch, but if we're going to change it, let's change it to something like, "MySQL or MySQL compatible" (or revert to the old wording of "MySQL or equivalent"). This pretty much covers everything, and we don't have to keep tacking on new databases to the end of this list.

cweagans’s picture

(Leaving at needs review, as my opinion is only one - I'm glad to hear what others will say)

kattekrab’s picture

Thanks for the review @cweagans :-)

However, re #2 - to the best of my knowledge the only drop in replacement options available for MySQL are MariaDB and Percona Server. At this point the danger of this becoming a long list is entirely hypothetical. I don't agree that's a strong reason for voting down the patch.

cheers
Donna

cweagans’s picture

Google Cloud SQL and Amazon RDS are two other services that are "MySQL compatible" (Amazon RDS can use MySQL under the hood). Anyways, my point is, we ship with a .htaccess file because we assume that Drupal is going to be used with Apache. This doesn't actively prevent anyone from running Drupal under nginx or the like, but we do expect that if somebody is going to use an alternate service, they are going to know what they're doing.

To me, this is the same. We could just as easily say "MySQL" (with no qualifying text) and just expect that if somebody is going to use something else, they'll know what they're doing enough to recognize that it just has to be mysql compatible.

I agree it's not really a strong reason for voting down the patch, but on principle, I disagree with this direction.

That said, the code looks fine and if this is the direction we decide we want to go, I'm fine with it. Just voicing my disagreement :)

webchick’s picture

It's worth pointing out that MariaDB was added to that string in #861192: Document that MariaDB works, too. This was specifically done because Oracle bought MySQL and the community felt it was very important to highlight the open source community alternative right there in peoples' faces.

I do not know where Percona fits into the MySQL ecosystem, but we would need to come up with a similar "special" reasoning for adding Percona here, or else it will indeed sprawl into a never-ending list of compatible DBs.

webchick’s picture

Assigned: kattekrab » Dries

Also, Dries was keen to see this happen, so assigning to him.

cweagans’s picture

One other thing to note here: if we add Percona to this list, and there's some customization in Percona that works slightly different than MySQL, who's responsible for fixing it? I can see situations like this where there's a bug/"feature" in Percona causing an issue with a site, but Drupal is incorrectly blamed for it (note that this is just speculation - I avoid Percona and prefer MariaDB when possible, so I don't have a strong background on what customizations are in Percona).

So I guess my question is, is there a difference between which databases will probably work and which databases we officially support?

kattekrab’s picture

Discussion in IRC suggests we may need more compelling reasons to add this... so I did a bit of a search to see what I could find! It would largely seem to be that Percona Server is more conservative than MariaDB which can be a better choice for high performance / high availability environments. But I'll admit I'm now a bit out of my depth.

This is from the Percona FAQ so it probably isn't entirely objective. It at least describes where it fits in the "alternative MySQL ecosystem".

How is it related to other MySQL forks?
Percona Server with XtraDB is the closest to the official MySQL Enterprise releases from Oracle. It is more conservative than MariaDB, which includes extra storage engines and more far-reaching code changes. (MariaDB is also built on the Percona XtraDB storage engine, but adds more changes to the rest of the MySQL server.) It is not comparable to Drizzle, which is almost a complete rewrite of MySQL from the ground up.

The FAQ also links to benchmarks and a list of users.

So - more objective sources?

Hope that helps?

webchick’s picture

Cool, that's helpful. I will also say that whenever I've heard of Percona, it's been in relation to high-performance installations, so that may be the big differentiator that warrants its inclusion in the list.

kattekrab’s picture

@cweagans asks

if we add Percona to this list, and there's some customization in Percona that works slightly different than MySQL, who's responsible for fixing it?

This patch came about after I had a chat with Stewart Smith, a developer at Percona.

Percona is in the process of replicating our Drupal testing framework for ongoing regression testing of Percona Server. During that discussion Stewart said

"we're a drop-in replacement for MySQL (and unless any mariadb specific features are used, MariaDB). i.e. it should all "just work" with the MySQL driver and if it isn't, it's a bug. "

which I take to mean that it becomes Percona's problem ;-)

I've pointed Stewart to this thread, so hopefully he'll be able to provide better insight.

cweagans’s picture

it becomes Percona's problem

If that's the case, then I'm good with this :)

stewartsmith’s picture

Yep, as mentioned before, any differing behaviour that would cause Drupal to break we'd consider a bug (either that, or it's a bug in how Drupal uses the database and would mean that it could likely break on any subsequent MySQL version too - but i'd still argue that it'd be a PS bug)

Dries’s picture

I think it makes sense to list Percona. Percona is a great alternative that has proven to work well. For many, using Percona is a best practice actually. It is something that we want to encourage.

Anonymous’s picture

Status: Needs review » Reviewed & tested by the community

well then, this looks RTBC.

Anonymous’s picture

Status: Reviewed & tested by the community » Needs work

well. this is embarrassing. we should prolly add a '/' at the end of www.percona.com, because all the other urls have that.

Damien Tournoud’s picture

Status: Needs work » Reviewed & tested by the community
   - MySQL 5.0.15 (or greater) (http://www.mysql.com/).
   - MariaDB 5.1.44 (or greater) (http://mariadb.org/). MariaDB is a fully
     compatible drop-in replacement for MySQL.
+  - Percona Server 5.1.70 (or greater) (http://www.percona.com). Percona
+    Server is a backwards-compatible replacement for MySQL.

Is it me, or those version numbers start looking more and more random?

kattekrab’s picture

Status: Reviewed & tested by the community » Needs review
FileSize
1.16 KB

@Damien Tournoud
Is it me, or those version numbers starts looking more and more random?

Good question - they may well be random. I chose 5.1.70 just because it's the most recent release for that version...

@beejeebus
we should prolly add a '/' at the end of www.percona.com, because all the other urls have that.

Er... yes! New patch attached!

Thanks :)

kattekrab’s picture

@Damien Tournoud

Given this is a D8 patch - should we be updating the versions for MySQL and MariaDB anyway?
Perhaps set them all to 5.1 or later? Or even 5.5?

EDIT: Anyway - that should be a follow up issue.

- D.

Anonymous’s picture

Status: Needs review » Reviewed & tested by the community

ok, RTBC i think.

effulgentsia’s picture

Assigned: Dries » Unassigned

Dries answered in #14, so I think this is fair game for any core maintainer to commit.

kattekrab’s picture

Component: database system » documentation

Thanks @effulgentsia.

As this is largely docs and a text string - I'm shifting from database system to documentation.

webchick’s picture

Version: 8.x-dev » 7.x-dev
Status: Reviewed & tested by the community » Patch (to be ported)

Oops. Thought this went in a long time ago.

Committed and pushed to 8.x. Thanks!

I guess we should maybe backport to D7 as well?

kattekrab’s picture

Aah thanks @webchick! :-)

yes, backporting makes sense. Now, I have no idea how to do that, so I will get some advice, and have "a red hot go"

- D.

cafuego’s picture

Status: Patch (to be ported) » Needs review
FileSize
1.06 KB

Straight backport, patch attached.

effulgentsia’s picture

Status: Needs review » Reviewed & tested by the community
jhodgdon’s picture

Status: Reviewed & tested by the community » Needs review

I am not sure we want to change the translated text in the UI for Drupal 7. That has implications for translating Drupal.

kattekrab’s picture

Hmmm.

The change in the UI is

from
MySQL, MariaDB, or equivalent

to
MySQL, MariaDB, Percona Server, or equivalent

Are those names generally translated? [probably gross ignorance on my part - sorry for dumb question]

-    return st('MySQL, MariaDB, or equivalent');
+    return st('MySQL, MariaDB, Percona Server, or equivalent');
webchick’s picture

Yeah, anything wrapped in st()/t() gets translated. The impact would be that all translators would have to update their translations, else people would see that english string in amongst their french/hungarian/etc.

kattekrab’s picture

aaaah gotcha. The "or equivalent" would still need to be translated.

Do the doc comments get translated too?
These bits?

+  - Percona Server 5.1.70 (or greater) (http://www.percona.com/). Percona
+    Server is a backwards-compatible replacement for MySQL.
jhodgdon’s picture

Doc comments do not get translated. Like most international software projects, we write all code comments in English and hope/expect that all our core developers can read them enough to get the gist.

Text inside t() gets translated, and in D7, also in functions st() or get_t() -- that is text meant for end users of the software (just the first parameter to these functions gets translated, however -- the rest is substitutions like URLs). So the text "MySQL, MariaDB, or equivalent" is translated, and it's already in the language database files that you can download for many languages. If we change it to read "MySQL, MariaDB, Percona Server, or equivalent", then when someone tries to make, for instance, a Chinese site, the new text wouldn't match what is already in the language database when Drupal tried to look up the translation, so they'd see this English text in the middle of their screen. Oops!

So our policy after a release has been made is that unless there is a blatantly incorrect piece of translated text, we try not to modify it for minor issues like typos or slight improvements. And I think adding Percona would not qualify as something important enough to need to consider modifying translated text.

kattekrab’s picture

makes sense to me.

So... do we take out the UI string, and just commit the doc change to D7 - or just not back port this one at all?

jhodgdon’s picture

Status: Needs review » Needs work

We can make the INSTALL.txt change. Accordingly.. the patch needs work.

kattekrab’s picture

Status: Needs work » Needs review
FileSize
576 bytes

Ok D7 INSTALL.txt patch attached.

Sorry it took a bit longer to get back to this than I anticipated.

@jhodgdon thanks for your review and explanation! :)

cheers
- Donna

kattekrab’s picture

Issue summary: View changes

Updated issue summary.

Kartagis’s picture

Status: Needs review » Reviewed & tested by the community

The latest patch looks fine.

Regards,
K.

jhodgdon’s picture

Status: Reviewed & tested by the community » Fixed

Thanks! Committed to 7.x.

kattekrab’s picture

W00T!! :)

Thanks @jhodgdon

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.

Anonymous’s picture

Issue summary: View changes

Updated issue summary. minor update