云数据库类型 | 特点 | 适用场景 |
---|---|---|
Firebase Realtime Database | 基于NoSQL的实时同步数据库,提供离线支持,按数据量计费 | 实时聊天、轻量级数据存储 |
Firebase Firestore | 支持复杂查询的NoSQL数据库,兼容MongoDB语法,支持多平台 | 中大型应用、复杂数据结构 |
MySQL/PostgreSQL | 传统关系型数据库,支持ACID事务,需自行搭建或使用云托管服务(如AWS RDS) | 结构化数据、高可靠性需求 |
MongoDB Atlas | 全托管文档型数据库,支持分片和高可用,按资源消耗计费 | 非结构化数据、高扩展性场景 |
直接数据库驱动连接(不推荐)
jdbc:mysql://host:port/db
)通过RESTful API间接连接(推荐)
Android → (HTTP/HTTPS) → 后端服务器 → 云数据库
BaaS服务集成(Firebase为例)
implementation 'com.google.firebase:firebase-database:20.1.0'
FirebaseDatabase database = Firebase.database;
DatabaseReference ref = database.getReference("users"); ref.setValue(new User("John", 25));
// 1. 定义API接口 public interface ApiService { @GET("users") Call<List<User>> getUsers(); @POST("users") Call<ResponseBody> createUser(@Body User user); } // 2. 配置Retrofit Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://your-cloud-api.com/") // 后端API地址 .addConverterFactory(GsonConverterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class); // 3. 发起请求 apiService.getUsers().enqueue(new Callback<List<User>>() { @Override public void onResponse(Call<List<User>> call, Response<List<User>> response) { // 处理数据 } @Override public void onFailure(Call<List<User>> call, Throwable t) { // 错误处理 } });
防护维度 | 实施方案 |
---|---|
传输加密 | 强制使用HTTPS,配置SSL/TLS证书 |
访问控制 | 使用JWT或OAuth2.0鉴权,API层面做IP白名单限制 |
数据脱敏 | 敏感字段(如密码)后端哈希存储,前端避免明文传输 |
频率限制 | 后端API增加请求速率限制,防止DDoS攻击 |
问题现象 | 解决方案 |
---|---|
SSL证书不信任 | 将自签名证书导入安卓信任存储,或使用Let’s Encrypt等受信任CA签发的证书 |
CORS跨域问题 | 后端设置Access-Control-Allow-Origin: YOUR_ANDROID_APP_DOMAIN |
大数据量传输性能瓶颈 | 分页加载、增量同步、使用Protobuf压缩数据 |
Q1:为什么安卓端不建议直接连接云数据库?
A1:主要有三个原因:
Q2:如何选择云数据库的规格(如MySQL实例类型)?
A2:需考虑三个维度: