You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shardingsphere.apache.org by Juan Pan <pa...@apache.org> on 2020/10/27 03:59:15 UTC

Re: [DISCUSS] Rename MasterSlave module to ReadWriteSplit

Hi, community,


I know it is a little late to deliver this email. Still, I want to drop some discussion about this issue here.
Currently, with a crude talking with other guys, there are two great alternatives ( PrimaryReplica ad QueryReplica) for the original name (i.e., masterSlave). 


I prefer QueryReplica, but considering we have finished renaming it as PrimaryReplica, my opinion is to keep it that way. However, @John wants to have another renaming work with `QueryReplica` for this module's optimal name.


I’d like to listen to your idea about this one, but keep in mind that our next release is close at hand.
So we have to make a decision ASAP.


 Juan Pan (Trista)
                         
Senior DBA & PMC of Apache ShardingSphere
E-mail: panjuan@apache.org




On 09/25/2020 01:46,Liang Zhang<zh...@apache.org> wrote:
Done by https://github.com/apache/shardingsphere/issues/7560

On 2020/09/22 10:44:29, "zhangliang@apache.org" <zh...@apache.org> wrote:
Because the release date is coming soon, I will do this issue.

------------------

Sincerely,
Liang Zhang (John)
Apache ShardingSphere


Harvey <fl...@gmail.com> 于2020年9月16日周三 下午8:03写道:

Looks good to me

Thanks,

Hongwei Li

On Sep 16, 2020, at 1:43 AM, "zhangliang@apache.org" <
zhangliang@apache.org> wrote:

Primary-replica is good to me.

So, how about:

MasterSlave -> PrimaryReplicaReplication
MasterDataSource -> PrimaryDataSource
SlaveDataSource -> ReplicaDataSource

------------------

Sincerely,
Liang Zhang (John)
Apache ShardingSphere


Hongwei Li <fl...@gmail.com> 于2020年9月14日周一 下午10:31写道:

FYI:
primary and replica, replica replication are widely used terms in AWS.



https://aws.amazon.com/blogs/database/best-practices-for-amazon-rds-postgresql-replication/


https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Replication.Redis.Groups.html

On Mon, Sep 14, 2020 at 1:07 AM Juan Pan <pa...@apache.org> wrote:

Hi Liang,


I also looked through many docs of other databases,
like MySQL, MariaDB, PostgreSQL, and MongoDB.


For me, I can accept your proposal.


In short, no matter `PrimarySecondaryReplication` or
`PrimaryReplicaReplication`,
IMO. We need to focus on `replication` which means a synchronization
process
among primary nodes and secondary nodes (Replica nodes).
The links below will help me explain more.




[1]


https://medium.com/@Jelastic/mongodb-replica-set-with-master-slave-replication-and-automated-failover-be3cb374452
[2]


https://www.datadriveninvestor.com/2020/05/28/the-master-slave-database-concept-for-beginners/
[3] https://www.postgresql.org/docs/9.2/warm-standby.html
[4]


https://mariadb.com/resources/blog/database-master-slave-replication-in-the-cloud/


Best,
Trista


Juan Pan (Trista)

Senior DBA & PMC of Apache ShardingSphere
E-mail: panjuan@apache.org




On 09/14/2020 12:34,zhangliang@apache.org<zh...@apache.org>
wrote:
I investigate related materials again, maybe read-write-spilt is not a
good
name.

There are two features in Apache ShardingSphere now, master-slave and
replica.

Master-slave:
Write to master data source and replication data to slave data sources
async, and then read from slave data sources.
Benefit: performance.

Replica:
Still in dev mode, we plan to use Raft algorithm to keep the multiple
replicas with consensus.
Benefit: consensus.

The tow features can not use together, users can choose one of them in
the
same time only.

I prefer to rename master-slave module to
primary-secondary-replication,
and rename replica module to consensus-replication.
The new names can describe the feature more accurate and can let user
to
know they are mutually exclusive.

Primary-standby-replication is another choice, but I am afraid the
meaning
of `standby` is waiting here and do nothing if normal,
but the secondary data source still need to process the query requests.

So, how about to rename the concept to:

MasterSlave -> PrimarySecondaryReplication
MasterDataSource -> PrimaryDataSource
SlaveDataSource -> SecondaryDataSource

Please advice me.

------------------

Sincerely,
Liang Zhang (John)
Apache ShardingSphere


Hongwei Li <fl...@gmail.com> 于2020年9月14日周一 下午12:02写道:

I don't have any idea about how the module
'shardingsphere-master-slave'
vs
'shardingsphere-read-write-split', was named.
If there was no specific reason, it is like a historical debt, but does
not
matter so much, as it has been there for a long time, everyone knows
the function of the module.
In the meantime, 'read-write-split' is more obvious from the
processing/action perspective of the module. 'Master/Slave' is also
fine
from the processing object(datasource) perspective.

For simple processing and not considering much, the replacement of
'master/slave' to 'primary/replica' including the combinations is much
straightforward. It is kind of 'leave it as is' processing.

For moving one step further, renaming the module to 'read-write-split'
is a
way to go. The questions are:
shall we replace 'MasterSlave' as 'ReadWriteSplit' at all places?
Do we need to consider if the replacement is meaningful at any place,
such
as the below names:
MasterSlaveDataSourceRuleConfiguration
MasterSlaveLoadBalanceAlgorithm



On Sat, Sep 12, 2020 at 11:29 PM zhangliang@apache.org <
zhangliang@apache.org> wrote:

I like

MasterDataSource -> PrimaryDataSource
SlaveDataSource -> ReplicaDataSource


But I am not sure about

MasterSlave -> PrimaryReplica

Because ShardingSphere's feature is route the update SQL
to PrimaryDataSource and route the query SQL to ReplicaDataSource.
The name ReadWriteSplit may describe the feature more clear.

Any suggestions?

------------------

Sincerely,
Liang Zhang (John)
Apache ShardingSphere


Juan Pan <pa...@apache.org> 于2020年9月13日周日 上午10:07写道:

Hi Craig,


Thanks for your suggestion. :-)
For me, both `primary` and `source` are ok.


usually using terms like "primary", "secondary", "source", and
"replica"
Considering the expression above is mentioned in [1].


There are good reasons for MySQL to use "source" instead of "primary"
because in their model there may be many "source" databases.
Actually, ShardingSphere could also have many "source" databases
(Depending on the user's configuration).


MasterSlave -> ReadWriteSplit
IMO, this renaming does not sound wonderful. I prefer


MasterSlave -> PrimaryReplica  or MasterSlave -> SourceReplica


Moreover, I'd like to listen to others' opinions.


[1] https://mysqlhighavailability.com/mysql-terminology-updates/


Best,
Trista


Juan Pan (Trista)

Senior DBA & PMC of Apache ShardingSphere
E-mail: panjuan@apache.org




On 09/12/2020 22:26,Craig Russell<ap...@gmail.com> wrote:
Hi,

This will be a significant change so I think it would be good to
resolve
all of the naming before any PR is proposed. The first place to start
might
be the documentation to see all of the name changes in one place.

There are good reasons for MySQL to use "source" instead of "primary"
because in their model there may be many "source" databases.
Personally I
don't think "source" is particularly obvious to users, but they did not
ask
me. ;-)

For ShardingSphere, "primary" and "replica" seem to be better choices.
It
will be easy for us to tell users that ShardingSphere's "replica"
corresponds to MySQL's "source".

So the concepts to be changed might be:

MasterSlave -> PrimaryReplica
MasterDataSource -> PrimaryDataSource
SlaveDataSource -> ReplicaDataSource

And again, it might be easier to review the name changes in the context
of
documentation changes.

HTH,
Craig

On Sep 6, 2020, at 2:42 AM, zhangliang@apache.org wrote:

Hi All,

I want to discuss to rename MasterSlave module to ReadWriteSplit
module.

MySQL[1] has already change the master and slave to source and replica.

Some concepts I plan to change:

MasterSlave -> ReadWriteSplit
MasterDataSource -> SourceDataSource
SlaveDataSource -> ReplicaDataSource

Please advice me.

[1] https://mysqlhighavailability.com/mysql-terminology-updates/

------------------

Sincerely,
Liang Zhang (John)
Apache ShardingSphere

Craig L Russell
clr@apache.org








Re: [DISCUSS] Rename MasterSlave module to ReadWriteSplit

Posted by "zhangliang@apache.org" <zh...@apache.org>.
Nice catch and good name for ReplicaQuery.
PrimaryReplicaReplication may mislead user because the feature do nothing
for replication. We just route query requests to replica and route write
requests to primary data source.
I will rename the module name to ReplicaQuery soon.

------------------

Sincerely,
Liang Zhang (John)
Apache ShardingSphere


Juan Pan <pa...@apache.org> 于2020年10月27日周二 上午11:59写道:

> Hi, community,
>
>
> I know it is a little late to deliver this email. Still, I want to drop
> some discussion about this issue here.
> Currently, with a crude talking with other guys, there are two great
> alternatives ( PrimaryReplica ad QueryReplica) for the original name (i.e.,
> masterSlave).
>
>
> I prefer QueryReplica, but considering we have finished renaming it as
> PrimaryReplica, my opinion is to keep it that way. However, @John wants to
> have another renaming work with `QueryReplica` for this module's optimal
> name.
>
>
> I’d like to listen to your idea about this one, but keep in mind that our
> next release is close at hand.
> So we have to make a decision ASAP.
>
>
>  Juan Pan (Trista)
>
> Senior DBA & PMC of Apache ShardingSphere
> E-mail: panjuan@apache.org
>
>
>
>
> On 09/25/2020 01:46,Liang Zhang<zh...@apache.org> wrote:
> Done by https://github.com/apache/shardingsphere/issues/7560
>
> On 2020/09/22 10:44:29, "zhangliang@apache.org" <zh...@apache.org>
> wrote:
> Because the release date is coming soon, I will do this issue.
>
> ------------------
>
> Sincerely,
> Liang Zhang (John)
> Apache ShardingSphere
>
>
> Harvey <fl...@gmail.com> 于2020年9月16日周三 下午8:03写道:
>
> Looks good to me
>
> Thanks,
>
> Hongwei Li
>
> On Sep 16, 2020, at 1:43 AM, "zhangliang@apache.org" <
> zhangliang@apache.org> wrote:
>
> Primary-replica is good to me.
>
> So, how about:
>
> MasterSlave -> PrimaryReplicaReplication
> MasterDataSource -> PrimaryDataSource
> SlaveDataSource -> ReplicaDataSource
>
> ------------------
>
> Sincerely,
> Liang Zhang (John)
> Apache ShardingSphere
>
>
> Hongwei Li <fl...@gmail.com> 于2020年9月14日周一 下午10:31写道:
>
> FYI:
> primary and replica, replica replication are widely used terms in AWS.
>
>
>
>
> https://aws.amazon.com/blogs/database/best-practices-for-amazon-rds-postgresql-replication/
>
>
>
> https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Replication.Redis.Groups.html
>
> On Mon, Sep 14, 2020 at 1:07 AM Juan Pan <pa...@apache.org> wrote:
>
> Hi Liang,
>
>
> I also looked through many docs of other databases,
> like MySQL, MariaDB, PostgreSQL, and MongoDB.
>
>
> For me, I can accept your proposal.
>
>
> In short, no matter `PrimarySecondaryReplication` or
> `PrimaryReplicaReplication`,
> IMO. We need to focus on `replication` which means a synchronization
> process
> among primary nodes and secondary nodes (Replica nodes).
> The links below will help me explain more.
>
>
>
>
> [1]
>
>
>
> https://medium.com/@Jelastic/mongodb-replica-set-with-master-slave-replication-and-automated-failover-be3cb374452
> [2]
>
>
>
> https://www.datadriveninvestor.com/2020/05/28/the-master-slave-database-concept-for-beginners/
> [3] https://www.postgresql.org/docs/9.2/warm-standby.html
> [4]
>
>
>
> https://mariadb.com/resources/blog/database-master-slave-replication-in-the-cloud/
>
>
> Best,
> Trista
>
>
> Juan Pan (Trista)
>
> Senior DBA & PMC of Apache ShardingSphere
> E-mail: panjuan@apache.org
>
>
>
>
> On 09/14/2020 12:34,zhangliang@apache.org<zh...@apache.org>
> wrote:
> I investigate related materials again, maybe read-write-spilt is not a
> good
> name.
>
> There are two features in Apache ShardingSphere now, master-slave and
> replica.
>
> Master-slave:
> Write to master data source and replication data to slave data sources
> async, and then read from slave data sources.
> Benefit: performance.
>
> Replica:
> Still in dev mode, we plan to use Raft algorithm to keep the multiple
> replicas with consensus.
> Benefit: consensus.
>
> The tow features can not use together, users can choose one of them in
> the
> same time only.
>
> I prefer to rename master-slave module to
> primary-secondary-replication,
> and rename replica module to consensus-replication.
> The new names can describe the feature more accurate and can let user
> to
> know they are mutually exclusive.
>
> Primary-standby-replication is another choice, but I am afraid the
> meaning
> of `standby` is waiting here and do nothing if normal,
> but the secondary data source still need to process the query requests.
>
> So, how about to rename the concept to:
>
> MasterSlave -> PrimarySecondaryReplication
> MasterDataSource -> PrimaryDataSource
> SlaveDataSource -> SecondaryDataSource
>
> Please advice me.
>
> ------------------
>
> Sincerely,
> Liang Zhang (John)
> Apache ShardingSphere
>
>
> Hongwei Li <fl...@gmail.com> 于2020年9月14日周一 下午12:02写道:
>
> I don't have any idea about how the module
> 'shardingsphere-master-slave'
> vs
> 'shardingsphere-read-write-split', was named.
> If there was no specific reason, it is like a historical debt, but does
> not
> matter so much, as it has been there for a long time, everyone knows
> the function of the module.
> In the meantime, 'read-write-split' is more obvious from the
> processing/action perspective of the module. 'Master/Slave' is also
> fine
> from the processing object(datasource) perspective.
>
> For simple processing and not considering much, the replacement of
> 'master/slave' to 'primary/replica' including the combinations is much
> straightforward. It is kind of 'leave it as is' processing.
>
> For moving one step further, renaming the module to 'read-write-split'
> is a
> way to go. The questions are:
> shall we replace 'MasterSlave' as 'ReadWriteSplit' at all places?
> Do we need to consider if the replacement is meaningful at any place,
> such
> as the below names:
> MasterSlaveDataSourceRuleConfiguration
> MasterSlaveLoadBalanceAlgorithm
>
>
>
> On Sat, Sep 12, 2020 at 11:29 PM zhangliang@apache.org <
> zhangliang@apache.org> wrote:
>
> I like
>
> MasterDataSource -> PrimaryDataSource
> SlaveDataSource -> ReplicaDataSource
>
>
> But I am not sure about
>
> MasterSlave -> PrimaryReplica
>
> Because ShardingSphere's feature is route the update SQL
> to PrimaryDataSource and route the query SQL to ReplicaDataSource.
> The name ReadWriteSplit may describe the feature more clear.
>
> Any suggestions?
>
> ------------------
>
> Sincerely,
> Liang Zhang (John)
> Apache ShardingSphere
>
>
> Juan Pan <pa...@apache.org> 于2020年9月13日周日 上午10:07写道:
>
> Hi Craig,
>
>
> Thanks for your suggestion. :-)
> For me, both `primary` and `source` are ok.
>
>
> usually using terms like "primary", "secondary", "source", and
> "replica"
> Considering the expression above is mentioned in [1].
>
>
> There are good reasons for MySQL to use "source" instead of "primary"
> because in their model there may be many "source" databases.
> Actually, ShardingSphere could also have many "source" databases
> (Depending on the user's configuration).
>
>
> MasterSlave -> ReadWriteSplit
> IMO, this renaming does not sound wonderful. I prefer
>
>
> MasterSlave -> PrimaryReplica  or MasterSlave -> SourceReplica
>
>
> Moreover, I'd like to listen to others' opinions.
>
>
> [1] https://mysqlhighavailability.com/mysql-terminology-updates/
>
>
> Best,
> Trista
>
>
> Juan Pan (Trista)
>
> Senior DBA & PMC of Apache ShardingSphere
> E-mail: panjuan@apache.org
>
>
>
>
> On 09/12/2020 22:26,Craig Russell<ap...@gmail.com> wrote:
> Hi,
>
> This will be a significant change so I think it would be good to
> resolve
> all of the naming before any PR is proposed. The first place to start
> might
> be the documentation to see all of the name changes in one place.
>
> There are good reasons for MySQL to use "source" instead of "primary"
> because in their model there may be many "source" databases.
> Personally I
> don't think "source" is particularly obvious to users, but they did not
> ask
> me. ;-)
>
> For ShardingSphere, "primary" and "replica" seem to be better choices.
> It
> will be easy for us to tell users that ShardingSphere's "replica"
> corresponds to MySQL's "source".
>
> So the concepts to be changed might be:
>
> MasterSlave -> PrimaryReplica
> MasterDataSource -> PrimaryDataSource
> SlaveDataSource -> ReplicaDataSource
>
> And again, it might be easier to review the name changes in the context
> of
> documentation changes.
>
> HTH,
> Craig
>
> On Sep 6, 2020, at 2:42 AM, zhangliang@apache.org wrote:
>
> Hi All,
>
> I want to discuss to rename MasterSlave module to ReadWriteSplit
> module.
>
> MySQL[1] has already change the master and slave to source and replica.
>
> Some concepts I plan to change:
>
> MasterSlave -> ReadWriteSplit
> MasterDataSource -> SourceDataSource
> SlaveDataSource -> ReplicaDataSource
>
> Please advice me.
>
> [1] https://mysqlhighavailability.com/mysql-terminology-updates/
>
> ------------------
>
> Sincerely,
> Liang Zhang (John)
> Apache ShardingSphere
>
> Craig L Russell
> clr@apache.org
>
>
>
>
>
>
>
>