Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Alibaba Cloud ApsaraDB Confidential Database #477

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

tyler-lee
Copy link

Add support for Alibaba Cloud ApsaraDB Confidential Database via JDBC.

Reference: https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/encjdbc

@bpkroth
Copy link
Collaborator

bpkroth commented Mar 14, 2024

Are there example configs or test cases to add to this?

@tyler-lee
Copy link
Author

Are there example configs or test cases to add to this?

No, one can reuse mysql example configs and the only change is to update <driver> and <url> in configs, so it's not necessary?

@bpkroth
Copy link
Collaborator

bpkroth commented Mar 19, 2024

Are there example configs or test cases to add to this?

No, one can reuse mysql example configs and the only change is to update <driver> and <url> in configs, so it's not necessary?

General preference is to have all changes have associated tests with them, else it's hard to know when features that we should be supporting break.

If possible, it would be nice to have some form of dockerized test setup for this as the other supported backends do. See .github/workflows/maven.yml or docker/scripts/build-run-benchmark-with-docker.sh for some details.

Can you please take a look at that before we include this? If it's not possible for some reason we can consider to include it anyways with an "untested" note.

@bpkroth bpkroth self-assigned this Mar 19, 2024
@tyler-lee
Copy link
Author

Are there example configs or test cases to add to this?

No, one can reuse mysql example configs and the only change is to update <driver> and <url> in configs, so it's not necessary?

General preference is to have all changes have associated tests with them, else it's hard to know when features that we should be supporting break.

If possible, it would be nice to have some form of dockerized test setup for this as the other supported backends do. See .github/workflows/maven.yml or docker/scripts/build-run-benchmark-with-docker.sh for some details.

Can you please take a look at that before we include this? If it's not possible for some reason we can consider to include it anyways with an "untested" note.

Thank you for the kind reminder.

There is not public docker image for the DB now and only commercial instances are available (refer to Enable Always Confidential for detailed info), hence it is not possible to build a dockerized test environment.

As an alternative solution, is that ok to provide config/mysql/sample_tpcc_with_encjdbc_config.xml with updated <driver> and <url>? So that once activating a commercial instance, one can quickly verify the test.

1 similar comment
@tyler-lee
Copy link
Author

Are there example configs or test cases to add to this?

No, one can reuse mysql example configs and the only change is to update <driver> and <url> in configs, so it's not necessary?

General preference is to have all changes have associated tests with them, else it's hard to know when features that we should be supporting break.

If possible, it would be nice to have some form of dockerized test setup for this as the other supported backends do. See .github/workflows/maven.yml or docker/scripts/build-run-benchmark-with-docker.sh for some details.

Can you please take a look at that before we include this? If it's not possible for some reason we can consider to include it anyways with an "untested" note.

Thank you for the kind reminder.

There is not public docker image for the DB now and only commercial instances are available (refer to Enable Always Confidential for detailed info), hence it is not possible to build a dockerized test environment.

As an alternative solution, is that ok to provide config/mysql/sample_tpcc_with_encjdbc_config.xml with updated <driver> and <url>? So that once activating a commercial instance, one can quickly verify the test.

@@ -106,6 +106,11 @@
<version>8.0.30</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-encdb-mysql-jdbc</artifactId>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this dependency isn't required by standard MySQL instances, I think it should go in its own profile. Something like this (pseudocode, please fill in and test the details):

<profile>
  <id>aliyundb</id> <!-- FIXME: Is this the best name to use here? -->
  ...
  <!-- copies of most of the rest of the MySQL profile dependencies -->
  <!-- additional aliyun db dependencies -->
                  <dependency>
                    <groupId>com.aliyun</groupId>
                    <artifactId>aliyun-encdb-mysql-jdbc</artifactId>
                  </dependency>
...
</profile>

@bpkroth
Copy link
Collaborator

bpkroth commented Mar 20, 2024

Are there example configs or test cases to add to this?

No, one can reuse mysql example configs and the only change is to update <driver> and <url> in configs, so it's not necessary?

General preference is to have all changes have associated tests with them, else it's hard to know when features that we should be supporting break.
If possible, it would be nice to have some form of dockerized test setup for this as the other supported backends do. See .github/workflows/maven.yml or docker/scripts/build-run-benchmark-with-docker.sh for some details.
Can you please take a look at that before we include this? If it's not possible for some reason we can consider to include it anyways with an "untested" note.

Thank you for the kind reminder.

There is not public docker image for the DB now and only commercial instances are available (refer to Enable Always Confidential for detailed info), hence it is not possible to build a dockerized test environment.

As an alternative solution, is that ok to provide config/mysql/sample_tpcc_with_encjdbc_config.xml with updated <driver> and <url>? So that once activating a commercial instance, one can quickly verify the test.

I think that'd be ok, but let's put it in its own config folder (e.g., config/aliyundb/sample_tpcc_config.xml). See also the discussion about putting it in its own pom.xml profile. Open to suggestions on the best name to use here, but "AnalyticsDB" seems to generically applicable to be solely identified here.

In that config/aliyundb/ directory we should include some README.md with instructions on how to run/test it and that it is not included in the CI pipelines, so might break.

Also, is there anyway you can help me get access to a way to test this on the side first?

@tyler-lee
Copy link
Author

Are there example configs or test cases to add to this?

No, one can reuse mysql example configs and the only change is to update <driver> and <url> in configs, so it's not necessary?

General preference is to have all changes have associated tests with them, else it's hard to know when features that we should be supporting break.
If possible, it would be nice to have some form of dockerized test setup for this as the other supported backends do. See .github/workflows/maven.yml or docker/scripts/build-run-benchmark-with-docker.sh for some details.
Can you please take a look at that before we include this? If it's not possible for some reason we can consider to include it anyways with an "untested" note.

Thank you for the kind reminder.
There is not public docker image for the DB now and only commercial instances are available (refer to Enable Always Confidential for detailed info), hence it is not possible to build a dockerized test environment.
As an alternative solution, is that ok to provide config/mysql/sample_tpcc_with_encjdbc_config.xml with updated <driver> and <url>? So that once activating a commercial instance, one can quickly verify the test.

I think that'd be ok, but let's put it in its own config folder (e.g., config/aliyundb/sample_tpcc_config.xml). See also the discussion about putting it in its own pom.xml profile. Open to suggestions on the best name to use here, but "AnalyticsDB" seems to generically applicable to be solely identified here.

In that config/aliyundb/ directory we should include some README.md with instructions on how to run/test it and that it is not included in the CI pipelines, so might break.

Putting it in its own pom.xml profile is ok. But ApsaraDB (formal name of aliyundb) contains multiple different DB engines including apsaradb-for-mysql, apsaradb-for-postgres, etc., and it's not a good practice to put it in its own config folder (config/apsaradb/) since config/xxx is designed for only one DB engine.

Also, is there anyway you can help me get access to a way to test this on the side first?

Yes, you can use the following temporary instance for test purpose. Note: valid for only 7 days.
url: rm-2ze74i8o2bz4s759sko.mysql.rds.aliyuncs.com:3306
username: benchbasetest
password: Test_123
database: benchbase

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants