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: [email protected] On 09/14/2020 12:34,[email protected]<[email protected]> 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 <[email protected]> 于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 [email protected] < [email protected]> 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 <[email protected]> 于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: [email protected] On 09/12/2020 22:26,Craig Russell<[email protected]> 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, [email protected] 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 [email protected]
