Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
it&s me
unidocs-zh
提交
58a838a4
U
unidocs-zh
项目概览
it&s me
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
58a838a4
编写于
12月 29, 2021
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: uniCloud
上级
ea797a05
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
109 addition
and
102 deletion
+109
-102
docs/uniCloud/db-performance.md
docs/uniCloud/db-performance.md
+2
-2
docs/uniCloud/hellodb.md
docs/uniCloud/hellodb.md
+1
-87
docs/uniCloud/init.md
docs/uniCloud/init.md
+12
-12
docs/uniCloud/price.md
docs/uniCloud/price.md
+94
-1
未找到文件。
docs/uniCloud/db-performance.md
浏览文件 @
58a838a4
...
...
@@ -53,11 +53,11 @@ module.exports = async function(event,context) {
### 抽样方法sample
sample操作在高频触发时会响应缓慢,使用前请务必确定自己的业务场景适合使用sample方法
sample操作在
大数据量
高频触发时会响应缓慢,使用前请务必确定自己的业务场景适合使用sample方法
## clientDB联表查询超时@client-db-lookup
请参考此文档调整优化,
[
使用getTemp进行联表查询
](
https://uniapp.dcloud.net.cn/uniCloud/
clientdb
?id=lookup-with-temp
)
请参考此文档调整优化,
[
使用getTemp进行联表查询
](
https://uniapp.dcloud.net.cn/uniCloud/
jql
?id=lookup-with-temp
)
## 慢查询日志@slow
...
...
docs/uniCloud/hellodb.md
浏览文件 @
58a838a4
...
...
@@ -602,90 +602,4 @@ uniCloud提供的`db_init.json`主要是为了对数据库进行初始化,并
### 云厂商之间的迁移@cross-provider
目前可以使用云数据库的导入导出进行迁移,迁移数据库之前可以使用导出db_init.json功能将所有集合及索引导出。再使用数据导入导出功能进行迁移
> 也可以直接使用第三方封装好的插件:[unicloud数据库一键搬家工具,支持阿里云与腾讯云互转。支持跨账号转。](https://ext.dcloud.net.cn/plugin?id=6089)
#### 腾讯云迁移到阿里云@tencent-to-aliyun
迁移数据可以通过在腾讯云服务空间导出数据表为json文件,在阿里云服务空间导入json文件到表的方式进行迁移。
#### 阿里云迁移到腾讯云@aliyun-to-tencent
由于此前腾讯云并未完全支持ObjectId类型的数据,在阿里云迁移到腾讯云时需要注意处理一下
`ObjectId`
类型的数据,包括自动生成的_id字段以及关联到其他表的_id的字段。简单来说就是将导出的数据内的ObjectId类型的数据处理成字符串且不满足ObjectId的格式。
例:
```
js
// 原始数据
{
"
_id
"
:{
"
$oid
"
:
"
60fa6d25cd84d60001ec38a2
"
},
"
uid
"
:{
"
$oid
"
:
"
60fa6d1d2e5faa0001ade857
"
}}
// 调整后的数据
{
"
_id
"
:
"
60fa6d25cd84d60001ec38a2a
"
,
"
uid
"
:
"
60fa6d1d2e5faa0001ade857a
"
}
// 在结尾追加了一个“a”使其不满足ObjectId格式
```
以下为一个简单的脚本示例用于处理导出的json文件
如果将此文件存储为
`parse.js`
,使用
`node parse.js 输入文件相对或绝对路径 输出文件相对或绝对路径`
即可处理导出的json文件
```
js
const
fs
=
require
(
'
fs
'
)
const
path
=
require
(
'
path
'
)
const
readline
=
require
(
'
readline
'
)
const
cwd
=
process
.
cwd
()
const
inputPath
=
path
.
resolve
(
cwd
,
process
.
argv
[
2
])
const
outputPath
=
path
.
resolve
(
cwd
,
process
.
argv
[
3
])
if
(
fs
.
existsSync
(
outputPath
))
{
throw
new
Error
(
`输出路径(
${
outputPath
}
)已存在`
)
}
function
getType
(
val
)
{
return
Object
.
prototype
.
toString
.
call
(
val
).
slice
(
8
,
-
1
).
toLowerCase
()
}
function
parseRecord
(
obj
)
{
const
type
=
getType
(
obj
)
switch
(
type
)
{
case
'
object
'
:
if
(
obj
.
$oid
)
{
return
obj
.
$oid
+
'
a
'
}
const
keys
=
Object
.
keys
(
obj
)
for
(
let
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
const
key
=
keys
[
i
];
obj
[
key
]
=
parseRecord
(
obj
[
key
])
}
return
obj
case
'
array
'
:
for
(
let
i
=
0
;
i
<
obj
.
length
;
i
++
)
{
obj
[
i
]
=
parseRecord
(
obj
[
i
])
}
return
obj
default
:
return
obj
}
}
async
function
parseCollection
()
{
const
inputStream
=
fs
.
createReadStream
(
inputPath
)
const
outputStream
=
fs
.
createWriteStream
(
outputPath
)
const
rl
=
readline
.
createInterface
({
input
:
inputStream
});
for
await
(
const
line
of
rl
)
{
const
recordStr
=
line
.
trim
()
if
(
!
recordStr
)
{
continue
}
const
record
=
parseRecord
(
JSON
.
parse
(
recordStr
))
outputStream
.
write
(
JSON
.
stringify
(
record
)
+
'
\n
'
)
}
rl
.
close
()
console
.
log
(
`处理后的文件已输出到
${
outputPath
}
`
)
}
parseCollection
()
```
\ No newline at end of file
文档移至:
[
在云厂商之间迁移数据库
](
uniCloud/price.md?id=cross-provider-db
)
\ No newline at end of file
docs/uniCloud/init.md
浏览文件 @
58a838a4
...
...
@@ -22,12 +22,12 @@ function init(options):uniCloud
**options 参数说明**
|参数名
|类型 |必填 |默认值 |说明
|
|:-:
|:-: |:-: |:-: |:-:
|
|provider
|String |是 |- |aliyun、tencent
|
|spaceId
|String |是 |- |服务空间ID,
**注意是服务空间ID,不是服务空间名称**
|
|clientSecret |String |是
|- |仅阿里云支持,可以在
[
uniCloud控制台
](
https://unicloud.dcloud.net.cn
)
服务空间列表中查看
|
|endpoint
|String |否 |
`https://api.bspapp.com`
|服务空间地址,仅阿里云侧支持 |
|参数名
|类型 |必填 |默认值 |说明
|
|:-:
|:-: |:-: |:-: |:-:
|
|provider
|String |是 |- |aliyun、tencent
|
|spaceId
|String |是 |- |服务空间ID,
**注意是服务空间ID,不是服务空间名称**
|
|clientSecret |String |是
|- |仅阿里云支持,可以在
[
uniCloud控制台
](
https://unicloud.dcloud.net.cn
)
服务空间列表中查看
|
|endpoint
|String |否 |
`https://api.bspapp.com`
|服务空间地址,仅阿里云侧支持 |
**示例代码**
...
...
@@ -68,9 +68,9 @@ db.collection('uni-id-users').get()
**参数说明**
|参数名
|类型 |必填 |默认值 |说明
|
|:-:
|:-: |:-: |:-: |:-:
|
|provider
|String |是 |- |aliyun、tencent
|
|spaceId
|String |是 |- |服务空间ID,
**注意是服务空间ID,不是服务空间名称**
|
|clientSecret |String |是 |-
|仅阿里云支持,可以在
[
uniCloud控制台
](
https://unicloud.dcloud.net.cn
)
服务空间列表中查看 |
|endpoint
|String |否 |
`https://api.bspapp.com`
|服务空间地址,仅阿里云侧支持
|
|参数名
|类型 |必填 |默认值 |说明
|
|:-:
|:-: |:-: |:-: |:-:
|
|provider
|String |是 |- |aliyun、tencent
|
|spaceId
|String |是 |- |服务空间ID,
**注意是服务空间ID,不是服务空间名称**
|
|clientSecret |String |是 |- |仅阿里云支持,可以在
[
uniCloud控制台
](
https://unicloud.dcloud.net.cn
)
服务空间列表中查看 |
|endpoint
|String |否 |
`https://api.bspapp.com`
|服务空间地址,仅阿里云侧支持
|
docs/uniCloud/price.md
浏览文件 @
58a838a4
...
...
@@ -606,4 +606,97 @@ uniCloud提供包月、按量计费两种计费方式(仅腾讯云),具体
## 发生故障时如何判断故障点
当你的线上系统故障时,可以参考此文档判断责任归属:
[
如何判断是DCloud或阿里云或腾讯云的问题
](
https://uniapp.dcloud.io/uniCloud/faq?id=fault
)
\ No newline at end of file
当你的线上系统故障时,可以参考此文档判断责任归属:
[
如何判断是DCloud或阿里云或腾讯云的问题
](
https://uniapp.dcloud.io/uniCloud/faq?id=fault
)
## 云厂商之间的迁移@cross-provider
### 数据库迁移@cross-provider-db
目前可以使用云数据库的导入导出进行迁移,迁移数据库之前可以使用导出db_init.json功能将所有集合及索引导出。再使用数据导入导出功能进行迁移。导入导出请参考:
[
数据导入导出和备份
](
uniCloud/hellodb.md?id=dbmigration
)
> 也可以直接使用第三方封装好的插件:[unicloud数据库一键搬家工具,支持阿里云与腾讯云互转。支持跨账号转。](https://ext.dcloud.net.cn/plugin?id=6089)
#### 腾讯云迁移到阿里云@tencent-to-aliyun-db
迁移数据可以通过在腾讯云服务空间导出数据表为json文件,在阿里云服务空间导入json文件到表的方式进行迁移。
#### 阿里云迁移到腾讯云@aliyun-to-tencent-db
由于此前腾讯云并未完全支持ObjectId类型的数据,在阿里云迁移到腾讯云时需要注意处理一下
`ObjectId`
类型的数据,包括自动生成的_id字段以及关联到其他表的_id的字段。简单来说就是将导出的数据内的ObjectId类型的数据处理成字符串且不满足ObjectId的格式。
例:
```
js
// 原始数据
{
"
_id
"
:{
"
$oid
"
:
"
60fa6d25cd84d60001ec38a2
"
},
"
uid
"
:{
"
$oid
"
:
"
60fa6d1d2e5faa0001ade857
"
}}
// 调整后的数据
{
"
_id
"
:
"
60fa6d25cd84d60001ec38a2a
"
,
"
uid
"
:
"
60fa6d1d2e5faa0001ade857a
"
}
// 在结尾追加了一个“a”使其不满足ObjectId格式
```
以下为一个简单的脚本示例用于处理导出的json文件
如果将此文件存储为
`parse.js`
,使用
`node parse.js 输入文件相对或绝对路径 输出文件相对或绝对路径`
即可处理导出的json文件
```
js
const
fs
=
require
(
'
fs
'
)
const
path
=
require
(
'
path
'
)
const
readline
=
require
(
'
readline
'
)
const
cwd
=
process
.
cwd
()
const
inputPath
=
path
.
resolve
(
cwd
,
process
.
argv
[
2
])
const
outputPath
=
path
.
resolve
(
cwd
,
process
.
argv
[
3
])
if
(
fs
.
existsSync
(
outputPath
))
{
throw
new
Error
(
`输出路径(
${
outputPath
}
)已存在`
)
}
function
getType
(
val
)
{
return
Object
.
prototype
.
toString
.
call
(
val
).
slice
(
8
,
-
1
).
toLowerCase
()
}
function
parseRecord
(
obj
)
{
const
type
=
getType
(
obj
)
switch
(
type
)
{
case
'
object
'
:
if
(
obj
.
$oid
)
{
return
obj
.
$oid
+
'
a
'
}
const
keys
=
Object
.
keys
(
obj
)
for
(
let
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
const
key
=
keys
[
i
];
obj
[
key
]
=
parseRecord
(
obj
[
key
])
}
return
obj
case
'
array
'
:
for
(
let
i
=
0
;
i
<
obj
.
length
;
i
++
)
{
obj
[
i
]
=
parseRecord
(
obj
[
i
])
}
return
obj
default
:
return
obj
}
}
async
function
parseCollection
()
{
const
inputStream
=
fs
.
createReadStream
(
inputPath
)
const
outputStream
=
fs
.
createWriteStream
(
outputPath
)
const
rl
=
readline
.
createInterface
({
input
:
inputStream
});
for
await
(
const
line
of
rl
)
{
const
recordStr
=
line
.
trim
()
if
(
!
recordStr
)
{
continue
}
const
record
=
parseRecord
(
JSON
.
parse
(
recordStr
))
outputStream
.
write
(
JSON
.
stringify
(
record
)
+
'
\n
'
)
}
rl
.
close
()
console
.
log
(
`处理后的文件已输出到
${
outputPath
}
`
)
}
parseCollection
()
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录