From 8fe6c3934a7ba07892b78815fa9957abf4fde203 Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Thu, 25 Nov 2021 16:19:05 +0800 Subject: [PATCH] Merge from 2.6.1 (#1267) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * release 2.6.0 (#1145) * Update mkdocs.yml * Update 6.eco-tool-version.md * update connector (#1146) * Delete overrides/partials directory * Update 1.resource-preparations.md * Update mkdocs.yml * Update mkdocs.yml * update nav (#1149) * Update upgrade-nebula-graph-to-260.md (#1148) * Update upgrade-nebula-graph-to-260.md * Update upgrade-nebula-graph-to-260.md * Update mkdocs.yml * Update 6.eco-tool-version.md * fix typo (#1150) * hidden eco tools (#1151) * Update ex-ug-import-from-sst.md * Deploy studio with helm desc changes (#1154) * Update upgrade-nebula-graph-to-260.md (#1147) * Update upgrade-nebula-graph-to-260.md * Update upgrade-nebula-graph-to-260.md * Update st-ug-deploy-by-helm.md * Update 6.eco-tool-version.md * release 2.6.1 (#1155) * Update ex-ug-limitations.md * Update st-ug-limitations.md * Update releasenote.md * Update releasenote.md * Update releasenote.md * Update releasenote.md * Update 0.FAQ.md * Update 1.what-is-nebula-graph.md * Update 3.manage-snapshot.md (#1158) (#1159) Update 3.manage-snapshot.md (#1156) Co-authored-by: Romi * Update 3.deploy-nebula-graph-with-docker-compose.md * Update source_manage-service.md (#1160) * Update ex-ug-import-from-parquet.md * Update 1.resource-preparations.md * add move_files config for ingest * Update 6.cheatsheet-for-ngql-command.md (#1164) changed \| to | * Update README.md * Update 6.show-hosts.md (#1166) * Update mkdocs.yml * Update 6.eco-tool-version.md * merge explorer (#1167) * Update mkdocs.yml * Update ex-ug-deploy.md * Update ex-ug-deploy.md * Update ex-ug-deploy.md (#1169) * Update ex-ug-deploy.md * Update ex-ug-deploy.md * display error (#1171) * Change upgrade (#1172) * change upgrade * update * [WIP]add license doc (#1177) * add license doc * update * Update docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md Co-authored-by: randomJoe211 <69501902+randomJoe211@users.noreply.github.com> * Update 4.install-nebula-graph-from-tar.md * Update source_install-nebula-graph-by-rpm-or-deb.md * Update deploy-license.md * Update deploy-license.md * update * update Co-authored-by: randomJoe211 <69501902+randomJoe211@users.noreply.github.com> * Update 1.install-nebula-graph-by-compiling-the-source-code.md * Update 4.install-nebula-graph-from-tar.md * Update ex-ug-import-from-sst.md * Update ex-ug-import-from-sst.md * Update 0.FAQ.md * Update 10.collect.md (#1186) lower case * Update ex-ug-FAQ.md * Add exchange ent doc (#1199) * Add docs for Exchange Enterprise edition * Update ex-ug-parameter.md * Update ex-ug-export-from-nebula.md * No support for generating SST with GEO data (#1201) * change create sentence in nGQL (#1198) * Update 3.go.md (#1196) * Update 3.go.md (#1194) * Update return.md (#1192) * Update 5.lookup.md (#1191) * Update nebula-bench.md * Update source_install-nebula-graph-by-rpm-or-deb.md * Merge dashboard (#1202) * Update 8.predicate.md (#1124) * add dashboard enterprise (#1077) * [WIP]add dashboard enterprise * update * update * Update 1.create-cluster.md * update * update * update-1101 * update-1103 * update-1104 * update * update * update * update-1105 * update * update * add dashboard to yaml (#1173) * fix problem (#1174) * modify dashboard ent (#1175) * modify dashboard ent * update-1108 * Update 1.create-cluster.md * Update 1.what-is-dashboard-en.md * Update 1.create-cluster.md * update * update * Update mkdocs.yml (#1178) * change en to ent (#1179) * Change en to ent (#1180) * change en to ent * update * Delete 2.deploy-connect-dashboard-en.md (#1181) * Update dashboard ent (#1182) * Update dashboard ent * update * Update 8.faq.md * update * Update 2.deploy-connect-dashboard-ent.md * update-1109 * Update 2.deploy-connect-dashboard-ent.md * Update Python client installation instruction (#1189) Mirror update to https://github.com/vesoft-inc/nebula-python/pull/152 * Update ex-ug-import-from-sst.md (#1188) * Update ex-ug-import-from-sst.md * Update ex-ug-import-from-sst.md * Add link for Exchange bench (#1195) * update dashboard (#1197) * update * Update 6.eco-tool-version.md Co-authored-by: randomJoe211 <69501902+randomJoe211@users.noreply.github.com> Co-authored-by: foesa <35463247+foesa-yang@users.noreply.github.com> Co-authored-by: Grey Li * Update 1.create-cluster.md * Update 2.deploy-connect-dashboard-ent.md * Update 6.eco-tool-version.md * Update 5.account-management.md * Update yield.md (#1203) * update * Update 8.faq.md * Add FAQ for Hive to Nebula (#1208) * Update 2.deploy-connect-dashboard-ent.md * Update SHOW CREATE TAG/EDGE (#1210) * Update SHOW CREATE TAG/EDGE * Update 5.show-create-tag-edge.md * Update 6.eco-tool-version.md * Update 0.FAQ.md * Update 2.meta-service.md (#1218) * Update 1.create-space.md (#1219) * Update 2.use-space.md (#1220) * Update 2.use-space.md * Update mkdocs.yml * New and updates for operator 090 to 261 (#1225) * custom-conf-parameters&pv-claim&balance data (#1176) * custom-conf-parameters * update-pv-claim * auto-balance-data-parameter * Update mkdocs.yml * version macro * updates * Update 8.3.balance-data-when-scaling-storage.md * Update 2.deploy-nebula-operator.md * Update 2.deploy-nebula-operator.md * Update 8.3.balance-data-when-scaling-storage.md * Update 8.1.custom-conf-parameter.md * updates * Update 8.1.custom-conf-parameter.md * Update 8.3.balance-data-when-scaling-storage.md * colon fix * Update 3.1create-cluster-with-kubectl.md * Create 9.upgrade-nebula-cluster.md (#1190) * Create 9.upgrade-nebula-cluster.md * Update 9.upgrade-nebula-cluster.md * Update 9.upgrade-nebula-cluster.md * Update 9.upgrade-nebula-cluster.md * add crd updating step for 090 (#1221)&crd¯o&yaml * upgrade Helm * Update 3.2create-cluster-with-helm.md * describe optimization * Update 9.upgrade-nebula-cluster.md * Update 9.upgrade-nebula-cluster.md * Update 2.deploy-nebula-operator.md * Update 2.deploy-nebula-operator.md * crd upgrading * Update 2.deploy-nebula-operator.md Helm Updates for 090 (#1214) * upgrade Helm * Update 3.2create-cluster-with-helm.md * describe optimization * Update 9.upgrade-nebula-cluster.md * Update 9.upgrade-nebula-cluster.md * Update 2.deploy-nebula-operator.md Update 2.deploy-nebula-operator.md Update mkdocs.yml (#1213) * updates for ingress and upgrading (#1205) * Update 4.connect-to-nebula-graph-service.md * Update 4.connect-to-nebula-graph-service.md * Update 9.upgrade-nebula-cluster.md * Service access via Ingress (#1187) * Update 4.connect-to-nebula-graph-service.md * Update 4.connect-to-nebula-graph-service.md * Update 4.connect-to-nebula-graph-service.md * Update mkdocs.yml * Update 2.deploy-nebula-operator.md * Add SSL encryption (#1228) * Update limit.md (#1207) * Update limit.md * Update limit.md Co-authored-by: randomJoe211 <69501902+randomJoe211@users.noreply.github.com> * Update 6.eco-tool-version.md * Update 3.role-list.md * Update 2.deploy-connect-dashboard-ent.md (#1234) * Update 2.deploy-es.md * Update 2.import-cluster.md * Update 2.deploy-dashboard.md (#1238) * comment out UPDATE CONFIGS in importer example (#1236) To remove confusion on `local config: true` cluster users close #1235 * added link of release note (#1239) * Update ex-ug-what-is-exchange.md * Update mkdocs.yml * Update 2.deploy-connect-dashboard-ent.md (#1240) * Update nebula-spark-connector.md (#1241) * Update practice.md * Create practice.md (#1244) * Update practice.md * add whitespace (#1253) * whitespace (#1252) * whitespace (#1251) * add whitespace (#1250) * whitespace for ngql overview&datatypes&geography (#1248) * Whitespace for ngql operators functions (#1249) * whitespace added * Update 14.geo.md * whitespace for quick start (#1246) * whitespace added for intro (#1245) * Whitespace for ngql schema (#1254) * whitespace * Update 1.get-subgraph.md * Update 6.eco-tool-version.md java client:https://github.com/vesoft-inc/nebula-java/releases/tag/v2.6.1 nebula exchange:https://github.com/vesoft-inc/nebula-exchange/releases/tag/v2.6.1 nebula spark connector:https://github.com/vesoft-inc/nebula-spark-connector/releases/tag/v2.6.1 nebula flink connector: https://github.com/vesoft-inc/nebula-flink-connector/releases/tag/v2.6.1 * Update 2.update-edge.md * Update comments.md * whitespace for the rest (#1257) * Update mkdocs.yml * whitespace before link error fix (#1258) * Update nebula-spark-connector.md (#1259) * whitespace fix for link (#1260) * Update 1.what-is-dashboard.md * Update ex-ug-export-from-nebula.md * Update 6.cheatsheet-for-ngql-command.md * Update README.md * Update 1.what-is-nebula-graph.md * Update 2.1.path.md * Update 3.vid.md * Update 1.architecture-overview.md * Update nebula-algorithm.md (#1263) * Update st-ug-what-is-graph-studio.md * Update source_install-nebula-graph-by-rpm-or-deb.md * add binary package (#1264) * Update source_install-nebula-graph-by-rpm-or-deb.md * Update source_install-nebula-graph-by-rpm-or-deb.md * optimization (#1265) * Update deploy.yaml * Update releasenote.md * Update mkdocs.yml * update * Update header.html Co-authored-by: Sophie-Xie <84560950+Sophie-Xie@users.noreply.github.com> Co-authored-by: min.wu <50101159+whitewum@users.noreply.github.com> Co-authored-by: abby.huang <78209557+abby-cyber@users.noreply.github.com> Co-authored-by: max.zhu@vesoft.com <86282370+izhuxiaoqing@users.noreply.github.com> Co-authored-by: Romi Co-authored-by: Anqi Co-authored-by: foesa <35463247+foesa-yang@users.noreply.github.com> Co-authored-by: randomJoe211 <69501902+randomJoe211@users.noreply.github.com> Co-authored-by: Harris.Chu <1726587+HarrisChu@users.noreply.github.com> Co-authored-by: Even <71239503+even1111112@users.noreply.github.com> Co-authored-by: Grey Li Co-authored-by: Wey Gu <1651790+wey-gu@users.noreply.github.com> --- CONTRIBUTING.md | 1 - .../1.introduction/1.what-is-nebula-graph.md | 44 +-- docs-2.0/1.introduction/2.1.path.md | 12 +- docs-2.0/1.introduction/2.data-model.md | 22 +- .../1.architecture-overview.md | 6 +- .../2.meta-service.md | 14 +- .../3.graph-service.md | 6 +- .../4.storage-service.md | 168 ++++----- docs-2.0/1.introduction/3.vid.md | 55 ++- docs-2.0/14.client/1.nebula-client.md | 12 +- docs-2.0/14.client/3.nebula-cpp-client.md | 35 +- docs-2.0/14.client/4.nebula-java-client.md | 21 +- docs-2.0/14.client/5.nebula-python-client.md | 32 +- docs-2.0/14.client/6.nebula-go-client.md | 12 +- docs-2.0/15.contribution/how-to-contribute.md | 62 ++-- .../2.quick-start/1.quick-start-workflow.md | 42 +-- .../2.quick-start/2.install-nebula-graph.md | 2 +- .../3.connect-to-nebula-graph.md | 2 +- docs-2.0/2.quick-start/4.nebula-graph-crud.md | 92 ++--- .../2.quick-start/5.start-stop-service.md | 2 +- .../6.cheatsheet-for-ngql-command.md | 333 ++++++++---------- docs-2.0/20.appendix/0.FAQ.md | 131 ++++--- docs-2.0/20.appendix/6.eco-tool-version.md | 90 ++--- docs-2.0/20.appendix/mind-map.md | 4 +- docs-2.0/20.appendix/releasenote.md | 52 +-- docs-2.0/20.appendix/write-tools.md | 13 +- .../1.nGQL-overview/1.overview.md | 52 +-- .../1.nGQL-overview/3.graph-patterns.md | 28 +- .../3.ngql-guide/1.nGQL-overview/comments.md | 18 +- .../identifier-case-sensitivity.md | 2 +- .../keywords-and-reserved-words.md | 4 +- .../1.nGQL-overview/ngql-style-guide.md | 22 +- .../10.tag-statements/1.create-tag.md | 50 +-- .../10.tag-statements/2.drop-tag.md | 18 +- .../10.tag-statements/3.alter-tag.md | 18 +- .../10.tag-statements/4.show-tags.md | 2 +- .../10.tag-statements/5.describe-tag.md | 2 +- .../10.tag-statements/6.delete-tag.md | 18 +- .../improve-query-by-tag-index.md | 18 +- .../11.edge-type-statements/1.create-edge.md | 40 +-- .../11.edge-type-statements/2.drop-edge.md | 14 +- .../11.edge-type-statements/3.alter-edge.md | 18 +- .../11.edge-type-statements/4.show-edges.md | 4 +- .../5.describe-edge.md | 2 +- .../12.vertex-statements/1.insert-vertex.md | 42 +-- .../12.vertex-statements/2.update-vertex.md | 12 +- .../12.vertex-statements/3.upsert-vertex.md | 13 +- .../12.vertex-statements/4.delete-vertex.md | 2 +- .../13.edge-statements/1.insert-edge.md | 36 +- .../13.edge-statements/2.update-edge.md | 16 +- .../13.edge-statements/3.upsert-edge.md | 15 +- .../13.edge-statements/4.delete-edge.md | 2 +- .../1.create-native-index.md | 62 ++-- .../2.1.show-create-index.md | 8 +- .../2.show-native-indexes.md | 5 +- .../4.rebuild-native-index.md | 16 +- .../5.show-native-index-status.md | 2 +- .../14.native-index-statements/README.md | 16 +- .../1.search-with-text-based-index.md | 18 +- .../16.subgraph-and-path/1.get-subgraph.md | 26 +- .../16.subgraph-and-path/2.find-path.md | 6 +- .../1.explain-and-profile.md | 22 +- .../.1.configs-syntax.md | 4 +- .../2.balance-syntax.md | 8 +- .../4.job-statements.md | 20 +- .../6.kill-query.md | 6 +- .../3.ngql-guide/3.data-types/1.numeric.md | 26 +- .../3.ngql-guide/3.data-types/10.geography.md | 36 +- .../3.ngql-guide/3.data-types/2.boolean.md | 4 +- .../3.ngql-guide/3.data-types/3.string.md | 24 +- .../3.data-types/4.date-and-time.md | 32 +- docs-2.0/3.ngql-guide/3.data-types/5.null.md | 28 +- docs-2.0/3.ngql-guide/3.data-types/6.list.md | 50 +-- docs-2.0/3.ngql-guide/3.data-types/7.set.md | 4 +- docs-2.0/3.ngql-guide/3.data-types/8.map.md | 6 +- .../3.data-types/9.type-conversion.md | 4 +- .../1.composite-queries.md | 29 +- .../2.user-defined-variables.md | 10 +- .../3.property-reference.md | 24 +- .../3.ngql-guide/5.operators/1.comparison.md | 16 +- .../3.ngql-guide/5.operators/2.boolean.md | 6 +- docs-2.0/3.ngql-guide/5.operators/4.pipe.md | 14 +- .../5.operators/5.property-reference.md | 8 +- docs-2.0/3.ngql-guide/5.operators/6.set.md | 18 +- docs-2.0/3.ngql-guide/5.operators/7.string.md | 6 +- docs-2.0/3.ngql-guide/5.operators/8.list.md | 2 +- .../3.ngql-guide/5.operators/9.precedence.md | 9 +- .../6.functions-and-expressions/1.math.md | 52 +-- .../6.functions-and-expressions/10.collect.md | 8 +- .../6.functions-and-expressions/11.reduce.md | 8 +- .../6.functions-and-expressions/12.hash.md | 14 +- .../6.functions-and-expressions/13.concat.md | 14 +- .../6.functions-and-expressions/14.geo.md | 26 +- .../6.functions-and-expressions/2.string.md | 32 +- .../3.date-and-time.md | 16 +- .../6.functions-and-expressions/4.schema.md | 43 ++- .../5.case-expressions.md | 16 +- .../6.functions-and-expressions/6.list.md | 11 +- .../6.functions-and-expressions/7.count.md | 16 +- .../8.predicate.md | 4 +- .../9.user-defined-functions.md | 2 +- .../7.general-query-statements/2.match.md | 88 +++-- .../7.general-query-statements/3.go.md | 51 ++- .../7.general-query-statements/4.fetch.md | 64 ++-- .../7.general-query-statements/5.lookup.md | 70 ++-- .../6.show/1.show-charset.md | 2 +- .../6.show/12.show-spaces.md | 2 +- .../6.show/14.show-stats.md | 8 +- .../6.show/15.show-tags-edges.md | 4 +- .../6.show/17.show-sessions.md | 14 +- .../6.show/18.show-queries.md | 12 +- .../6.show/19.show-meta-leader.md | 6 +- .../6.show/4.show-create-space.md | 2 +- ...ags-edges.md => 5.show-create-tag-edge.md} | 4 +- .../6.show/6.show-hosts.md | 6 +- .../6.show/8.show-indexes.md | 5 +- .../6.show/9.show-parts.md | 8 +- .../7.general-query-statements/7.unwind.md | 4 +- .../8.clauses-and-options/group-by.md | 10 +- .../8.clauses-and-options/limit.md | 60 ++-- .../8.clauses-and-options/order-by.md | 14 +- .../8.clauses-and-options/return.md | 40 +-- .../8.clauses-and-options/sample.md | 8 +- .../8.clauses-and-options/ttl-options.md | 54 +-- .../8.clauses-and-options/where.md | 28 +- .../8.clauses-and-options/with.md | 18 +- .../8.clauses-and-options/yield.md | 42 +-- .../9.space-statements/1.create-space.md | 53 +-- .../9.space-statements/2.use-space.md | 17 +- .../9.space-statements/3.show-spaces.md | 4 +- .../9.space-statements/5.drop-space.md | 2 +- .../1.resource-preparations.md | 110 +++--- ...bula-graph-by-compiling-the-source-code.md | 64 ++-- .../2.install-nebula-graph-by-rpm-or-deb.md | 2 +- ...deploy-nebula-graph-with-docker-compose.md | 82 ++--- .../4.install-nebula-graph-from-tar.md | 22 +- .../deploy-nebula-graph-cluster.md | 52 +-- .../upgrade-nebula-from-200-to-260.md | 54 --- .../upgrade-nebula-from-200-to-latest.md | 54 +++ ...0.md => upgrade-nebula-graph-to-latest.md} | 81 +++-- .../4.uninstall-nebula-graph.md | 38 +- .../1.text-based-index-restrictions.md | 18 +- .../6.deploy-text-based-index/2.deploy-es.md | 18 +- .../3.deploy-listener.md | 53 ++- .../connect-to-nebula-graph.md | 2 +- .../deploy-license.md | 71 ++++ .../manage-service.md | 2 +- .../1.configurations/1.configurations.md | 46 +-- .../1.configurations/2.meta-config.md | 52 +-- .../1.configurations/3.graph-config.md | 72 ++-- .../1.configurations/4.storage-config.md | 96 ++--- .../1.configurations/6.kernel-config.md | 41 +-- .../2.log-management/logs.md | 24 +- .../1.query-performance-metrics.md | 29 +- .../1.authentication/1.authentication.md | 20 +- .../1.authentication/2.management-user.md | 19 +- .../1.authentication/3.role-list.md | 28 +- .../1.authentication/4.ldap.md | 46 +-- .../2.backup-restore/1.what-is-br.md | 86 ++--- .../2.backup-restore/2.compile-br.md | 10 +- .../2.backup-restore/3.br-backup-data.md | 22 +- .../2.backup-restore/4.br-restore-data.md | 17 +- docs-2.0/7.data-security/3.manage-snapshot.md | 25 +- docs-2.0/7.data-security/4.ssl.md | 36 +- docs-2.0/7.data-security/5.zone.md | 64 ++-- docs-2.0/8.service-tuning/2.graph-modeling.md | 28 +- docs-2.0/8.service-tuning/3.system-design.md | 14 +- docs-2.0/8.service-tuning/4.plan.md | 5 +- docs-2.0/8.service-tuning/compaction.md | 32 +- docs-2.0/8.service-tuning/load-balance.md | 40 +-- docs-2.0/8.service-tuning/practice.md | 26 +- docs-2.0/8.service-tuning/super-node.md | 18 +- docs-2.0/README.md | 14 +- docs-2.0/nebula-algorithm.md | 115 +++--- docs-2.0/nebula-bench.md | 18 +- .../1.what-is-dashboard-ent.md | 24 +- .../2.deploy-connect-dashboard-ent.md | 97 +++-- .../1.create-cluster.md | 20 +- .../2.import-cluster.md | 23 +- .../4.cluster-operator/1.overview.md | 18 +- .../4.cluster-operator/2.monitor.md | 20 +- .../3.cluster-information.md | 32 +- .../4.cluster-operator/4.manage.md | 22 +- .../4.cluster-operator/5.operation-record.md | 4 +- .../4.cluster-operator/6.settings.md | 6 +- .../5.account-management.md | 6 +- .../nebula-dashboard-ent/6.system-settings.md | 4 +- .../7.monitor-parameter.md | 32 +- docs-2.0/nebula-dashboard-ent/8.faq.md | 38 +- .../nebula-dashboard/1.what-is-dashboard.md | 22 +- .../nebula-dashboard/2.deploy-dashboard.md | 64 ++-- .../nebula-dashboard/3.connect-dashboard.md | 16 +- docs-2.0/nebula-dashboard/4.use-dashboard.md | 26 +- .../nebula-dashboard/6.monitor-parameter.md | 32 +- .../about-exchange/ex-ug-limitations.md | 22 +- .../about-exchange/ex-ug-terms.md | 9 - .../about-exchange/ex-ug-what-is-exchange.md | 54 +-- docs-2.0/nebula-exchange/ex-ug-FAQ.md | 66 ++-- docs-2.0/nebula-exchange/ex-ug-compile.md | 30 +- docs-2.0/nebula-exchange/ex-ug-toc.md | 25 -- .../ex-ug-para-import-command.md | 18 +- .../parameter-reference/ex-ug-parameter.md | 180 +++++----- .../use-exchange/ex-ug-export-from-nebula.md | 22 +- .../ex-ug-import-from-clickhouse.md | 112 +++--- .../use-exchange/ex-ug-import-from-csv.md | 225 ++++++------ .../use-exchange/ex-ug-import-from-hbase.md | 114 +++--- .../use-exchange/ex-ug-import-from-hive.md | 118 +++---- .../use-exchange/ex-ug-import-from-json.md | 201 ++++++----- .../use-exchange/ex-ug-import-from-kafka.md | 118 +++---- .../ex-ug-import-from-maxcompute.md | 126 +++---- .../use-exchange/ex-ug-import-from-mysql.md | 106 +++--- .../use-exchange/ex-ug-import-from-neo4j.md | 98 +++--- .../use-exchange/ex-ug-import-from-orc.md | 203 ++++++----- .../use-exchange/ex-ug-import-from-parquet.md | 203 ++++++----- .../use-exchange/ex-ug-import-from-pulsar.md | 118 +++---- .../use-exchange/ex-ug-import-from-sst.md | 292 +++++++-------- .../about-explorer/ex-ug-what-is-explorer.md | 2 +- .../deploy-connect/ex-ug-connect.md | 2 +- .../deploy-connect/ex-ug-deploy.md | 31 +- .../operation-guide/ex-ug-canvas.md | 4 +- .../operation-guide/ex-ug-page-overview.md | 43 +-- .../ex-ug-query-exploration.md | 2 +- docs-2.0/nebula-flink-connector.md | 16 +- docs-2.0/nebula-flink/nf-ug-customize-sink.md | 11 +- .../nebula-flink/nf-ug-customize-source.md | 16 +- .../nebula-importer/config-with-header.md | 62 ++-- .../nebula-importer/config-without-header.md | 78 ++-- docs-2.0/nebula-importer/use-importer.md | 152 ++++---- .../1.introduction-to-nebula-operator.md | 30 +- .../2.deploy-nebula-operator.md | 95 +++-- .../3.1create-cluster-with-kubectl.md | 61 ++-- .../3.2create-cluster-with-helm.md | 136 +++---- .../4.connect-to-nebula-graph-service.md | 91 +++-- .../nebula-operator/5.operator-failover.md | 14 +- .../6.get-started-with-operator.md | 10 +- docs-2.0/nebula-operator/7.operator-faq.md | 10 +- .../8.1.custom-conf-parameter.md | 20 +- .../8.2.pv-reclaim.md | 14 +- .../8.3.balance-data-when-scaling-storage.md | 20 +- .../9.upgrade-nebula-cluster.md | 47 ++- docs-2.0/nebula-spark-connector.md | 116 +++--- .../about-studio/st-ug-check-updates.md | 3 +- .../about-studio/st-ug-limitations.md | 3 +- .../about-studio/st-ug-release-note.md | 2 +- .../about-studio/st-ug-shortcuts.md | 1 - .../st-ug-what-is-graph-studio.md | 8 +- .../deploy-connect/st-ug-connect.md | 6 +- .../deploy-connect/st-ug-deploy-by-helm.md | 16 +- .../deploy-connect/st-ug-deploy.md | 42 ++- .../manage-schema/st-ug-crud-edge-type.md | 50 +-- .../manage-schema/st-ug-crud-index.md | 12 +- .../manage-schema/st-ug-crud-space.md | 10 +- .../manage-schema/st-ug-crud-tag.md | 48 +-- .../quick-start/st-ug-create-schema.md | 28 +- .../quick-start/st-ug-explore.md | 4 +- .../quick-start/st-ug-import-data.md | 22 +- .../quick-start/st-ug-plan-schema.md | 6 +- docs-2.0/nebula-studio/st-ug-toc.md | 37 -- .../st-ug-config-server-errors.md | 16 +- .../st-ug-connection-errors.md | 12 +- .../troubleshooting/st-ug-faq.md | 4 +- .../use-console/st-ug-console.md | 4 +- .../use-console/st-ug-open-in-explore.md | 14 +- .../use-console/st-ug-visualize-subgraph.md | 10 +- .../reuse/source_connect-to-nebula-graph.md | 78 ++-- ...urce_install-nebula-graph-by-rpm-or-deb.md | 64 ++-- docs-2.0/reuse/source_manage-service.md | 44 +-- .../reader/sc-ug-reader-example.md | 12 +- .../reader/sc-ug-what-is-reader.md | 2 +- .../sc-ug-what-is-spark-connector.md | 2 +- .../writer/sc-ug-what-is-writer.md | 2 +- .../writer/sc-ug-writer-example.md | 16 +- mkdocs.yml | 205 ++++++----- overrides/partials/header.html | 2 +- 274 files changed, 4886 insertions(+), 4984 deletions(-) rename docs-2.0/{8.service-tuning => 3.ngql-guide/10.tag-statements}/improve-query-by-tag-index.md (53%) rename docs-2.0/3.ngql-guide/7.general-query-statements/6.show/{5.show-create-tags-edges.md => 5.show-create-tag-edge.md} (73%) delete mode 100644 docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-260.md create mode 100644 docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-latest.md rename docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/{upgrade-nebula-graph-to-260.md => upgrade-nebula-graph-to-latest.md} (62%) create mode 100644 docs-2.0/4.deployment-and-installation/deploy-license.md delete mode 100644 docs-2.0/nebula-exchange/about-exchange/ex-ug-terms.md delete mode 100644 docs-2.0/nebula-exchange/ex-ug-toc.md delete mode 100644 docs-2.0/nebula-studio/st-ug-toc.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 85431922e12..f0d2b2b18d0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,5 +25,4 @@ - 在 GitHub 提交 [issue][_issues]。 - [Fork](https://github.com/vesoft-inc/nebula-docs-cn/fork) 文档,在本地分支上更改或添加新内容,然后向主分支提交 PR。 - [_issues]: https://github.com/vesoft-inc/nebula-docs-cn/issues diff --git a/docs-2.0/1.introduction/1.what-is-nebula-graph.md b/docs-2.0/1.introduction/1.what-is-nebula-graph.md index 4fd0001015f..2c8ceef4cf8 100644 --- a/docs-2.0/1.introduction/1.what-is-nebula-graph.md +++ b/docs-2.0/1.introduction/1.what-is-nebula-graph.md @@ -1,6 +1,6 @@ -# 什么是Nebula Graph +# 什么是 Nebula Graph -Nebula Graph是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。 +Nebula Graph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。 ![Nebula Graph 鸟瞰图](nebula-birdview.png) @@ -12,72 +12,72 @@ Nebula Graph是一款开源的、分布式的、易扩展的原生图数据库 图数据库适合存储大多数从现实抽象出的数据类型。世界上几乎所有领域的事物都有内在联系,像关系型数据库这样的建模系统会提取实体之间的关系,并将关系单独存储到表和列中,而实体的类型和属性存储在其他列甚至其他表中,这使得数据管理费时费力。 -Nebula Graph作为一个典型的图数据库,可以将丰富的关系通过边及其类型和属性自然地呈现。 +Nebula Graph 作为一个典型的图数据库,可以将丰富的关系通过边及其类型和属性自然地呈现。 -## Nebula Graph的优势 +## Nebula Graph 的优势 ### 开源 -Nebula Graph是在Apache 2.0条款下开发的。越来越多的人,如数据库开发人员、数据科学家、安全专家、算法工程师,都参与到Nebula Graph的设计和开发中来,欢迎访问[Nebula Graph GitHub主页](https://github.com/vesoft-inc/nebula)参与开源项目。 +Nebula Graph 是在 Apache 2.0 条款下开发的。越来越多的人,如数据库开发人员、数据科学家、安全专家、算法工程师,都参与到 Nebula Graph 的设计和开发中来,欢迎访问 [Nebula Graph GitHub 主页](https://github.com/vesoft-inc/nebula)参与开源项目。 ### 高性能 -基于图数据库的特性使用C++编写的Nebula Graph,可以提供毫秒级查询。众多数据库中,Nebula Graph在图数据服务领域展现了卓越的性能,数据规模越大,Nebula Graph优势就越大。详情请参见[Nebula Graph benchmarking页面](https://discuss.nebula-graph.com.cn/t/topic/782)。 +基于图数据库的特性使用 C++编写的 Nebula Graph,可以提供毫秒级查询。众多数据库中,Nebula Graph 在图数据服务领域展现了卓越的性能,数据规模越大,Nebula Graph 优势就越大。详情请参见 [Nebula Graph benchmarking 页面](https://discuss.nebula-graph.com.cn/t/topic/782)。 ### 易扩展 -Nebula Graph采用shared-nothing架构,支持在不停止数据库服务的情况下扩缩容。 +Nebula Graph 采用 shared-nothing 架构,支持在不停止数据库服务的情况下扩缩容。 ### 易开发 -Nebula Graph提供Java、Python、C++和Go等流行编程语言的客户端,更多客户端仍在开发中。详情请参见[Nebula Graph clients](../14.client/1.nebula-client.md)。 +Nebula Graph 提供 Java、Python、C++和 Go 等流行编程语言的客户端,更多客户端仍在开发中。详情请参见 [Nebula Graph clients](../14.client/1.nebula-client.md)。 ### 高可靠访问控制 -Nebula Graph支持严格的角色访问控制和LDAP(Lightweight Directory Access Protocol)等外部认证服务,能够有效提高数据安全性。详情请参见[验证和授权](../7.data-security/1.authentication/1.authentication.md)。 +Nebula Graph 支持严格的角色访问控制和 LDAP(Lightweight Directory Access Protocol)等外部认证服务,能够有效提高数据安全性。详情请参见[验证和授权](../7.data-security/1.authentication/1.authentication.md)。 ### 生态多样化 -Nebula Graph开放了越来越多的原生工具,例如[Nebula Graph Studio](https://github.com/vesoft-inc/nebula-studio)、[Nebula Console](https://github.com/vesoft-inc/nebula-console)、[Nebula Exchange](https://github.com/vesoft-inc/nebula-exchange)等,更多工具可以查看 [生态工具概览](../20.appendix/6.eco-tool-version.md)。 +Nebula Graph 开放了越来越多的原生工具,例如 [Nebula Graph Studio](https://github.com/vesoft-inc/nebula-studio)、[Nebula Console](https://github.com/vesoft-inc/nebula-console)、[Nebula Exchange](https://github.com/vesoft-inc/nebula-exchange) 等,更多工具可以查看[生态工具概览](../20.appendix/6.eco-tool-version.md)。 -此外,Nebula Graph还具备与Spark、Flink、HBase等产品整合的能力,在这个充满挑战与机遇的时代,大大增强了自身的竞争力。 +此外,Nebula Graph 还具备与 Spark、Flink、HBase 等产品整合的能力,在这个充满挑战与机遇的时代,大大增强了自身的竞争力。 -### 兼容openCypher查询语言 +### 兼容 openCypher 查询语言 -Nebula Graph 查询语言,简称为 nGQL,是一种声明性的、部分兼容 openCypher 的文本查询语言,易于理解和使用。详细语法请参见[nGQL指南](../3.ngql-guide/1.nGQL-overview/1.overview.md)。 +Nebula Graph 查询语言,简称为 nGQL,是一种声明性的、部分兼容 openCypher 的文本查询语言,易于理解和使用。详细语法请参见 [nGQL 指南](../3.ngql-guide/1.nGQL-overview/1.overview.md)。 ### 面向未来硬件,读写平衡 闪存型设备有着极高的性能,并且[价格快速下降](https://blocksandfiles.com/wp-content/uploads/2021/01/Wikibon-SSD-less-than-HDD-in-2026.jpg), - Nebula Graph 是一个面向 SSD 设计的产品,相比于基于HDD + 大内存的产品,更适合面向未来的硬件趋势,也更容易做到读写平衡。 + Nebula Graph 是一个面向 SSD 设计的产品,相比于基于 HDD + 大内存的产品,更适合面向未来的硬件趋势,也更容易做到读写平衡。 ### 灵活数据建模 -用户可以轻松地在Nebula Graph中建立数据模型,不必将数据强制转换为关系表。而且可以自由增加、更新和删除属性。详情请参见[数据模型](2.data-model.md)。 +用户可以轻松地在 Nebula Graph 中建立数据模型,不必将数据强制转换为关系表。而且可以自由增加、更新和删除属性。详情请参见[数据模型](2.data-model.md)。 ### 广受欢迎 -腾讯、美团、京东、快手、360等科技巨头都在使用Nebula Graph。详情请参见[Nebula Graph官网](https://nebula-graph.com.cn/)。 +腾讯、美团、京东、快手、360 等科技巨头都在使用 Nebula Graph。详情请参见 [Nebula Graph 官网](https://nebula-graph.com.cn/)。 ## 适用场景 -Nebula Graph可用于各种基于图的业务场景。为节约转换各类数据到关系型数据库的时间,以及避免复杂查询,建议使用Nebula Graph。 +Nebula Graph 可用于各种基于图的业务场景。为节约转换各类数据到关系型数据库的时间,以及避免复杂查询,建议使用 Nebula Graph。 ### 欺诈检测 -金融机构必须仔细研究大量的交易信息,才能检测出潜在的金融欺诈行为,并了解某个欺诈行为和设备的内在关联。这种场景可以通过图来建模,然后借助Nebula Graph,可以很容易地检测出诈骗团伙或其他复杂诈骗行为。 +金融机构必须仔细研究大量的交易信息,才能检测出潜在的金融欺诈行为,并了解某个欺诈行为和设备的内在关联。这种场景可以通过图来建模,然后借助 Nebula Graph,可以很容易地检测出诈骗团伙或其他复杂诈骗行为。 ### 实时推荐 -Nebula Graph能够及时处理访问者产生的实时信息,并且精准推送文章、视频、产品和服务。 +Nebula Graph 能够及时处理访问者产生的实时信息,并且精准推送文章、视频、产品和服务。 ### 知识图谱 -自然语言可以转化为知识图谱,存储在Nebula Graph中。用自然语言组织的问题可以通过智能问答系统中的语义解析器进行解析并重新组织,然后从知识图谱中检索出问题的可能答案,提供给提问人。 +自然语言可以转化为知识图谱,存储在 Nebula Graph 中。用自然语言组织的问题可以通过智能问答系统中的语义解析器进行解析并重新组织,然后从知识图谱中检索出问题的可能答案,提供给提问人。 ### 社交网络 -人际关系信息是典型的图数据,Nebula Graph可以轻松处理数十亿人和数万亿人际关系的社交网络信息,并在海量并发的情况下,提供快速的好友推荐和工作岗位查询。 +人际关系信息是典型的图数据,Nebula Graph 可以轻松处理数十亿人和数万亿人际关系的社交网络信息,并在海量并发的情况下,提供快速的好友推荐和工作岗位查询。 ## 相关链接 @@ -91,6 +91,6 @@ Nebula Graph能够及时处理访问者产生的实时信息,并且精准推 用户也可以通过视频了解什么是图数据。 -- [图数据库 Nebula Graph 介绍视频](https://www.bilibili.com/video/BV1kf4y1v7LM)(01分39秒) +- [图数据库 Nebula Graph 介绍视频](https://www.bilibili.com/video/BV1kf4y1v7LM)(01 分 39 秒) diff --git a/docs-2.0/1.introduction/2.1.path.md b/docs-2.0/1.introduction/2.1.path.md index 64966cac2fe..a222bf8cc4f 100644 --- a/docs-2.0/1.introduction/2.1.path.md +++ b/docs-2.0/1.introduction/2.1.path.md @@ -12,7 +12,7 @@ `walk`类型的路径由有限或无限的边序列构成。遍历时点和边可以重复。 -查看示例图,由于C、D、E构成了一个环,因此该图包含无限个路径,例如`A->B->C->D->E`、`A->B->C->D->E->C`、`A->B->C->D->E->C->D`。 +查看示例图,由于 C、D、E 构成了一个环,因此该图包含无限个路径,例如`A->B->C->D->E`、`A->B->C->D->E->C`、`A->B->C->D->E->C->D`。 !!! note @@ -22,15 +22,15 @@ `trail`类型的路径由有限的边序列构成。遍历时只有点可以重复,边不可以重复。柯尼斯堡七桥问题的路径类型就是`trail`。 -查看示例图,由于边不可以重复,所以该图包含有限个路径,最长路径由5条边组成:`A->B->C->D->E->C`。 +查看示例图,由于边不可以重复,所以该图包含有限个路径,最长路径由 5 条边组成:`A->B->C->D->E->C`。 !!! note `MATCH`、`FIND PATH`和`GET SUBGRAPH`语句采用的是`trail`类型路径。 -在trail类型中,还有 `cycle` 和 `circuit` 两种特殊的路径类型,以下图为例对这两种特殊的路径类型进行介绍。 +在 trail 类型中,还有`cycle`和`circuit`两种特殊的路径类型,以下图为例对这两种特殊的路径类型进行介绍。 -![trail示例](../images/Circuits1.png) +![trail 示例](../images/Circuits1.png) - cycle @@ -44,12 +44,12 @@ `path`类型的路径由有限的边序列构成。遍历时点和边都不可以重复。 -查看示例图,由于点和边都不可以重复,所以该图包含有限个路径,最长路径由4条边组成:`A->B->C->D->E`。 +查看示例图,由于点和边都不可以重复,所以该图包含有限个路径,最长路径由 4 条边组成:`A->B->C->D->E`。 ## 视频 用户也可以观看视频了解路径的相关概念。 -[Nebula Algorithm](https://www.bilibili.com/video/BV1Uf4y1t72L)(03分09秒) +[Nebula Algorithm](https://www.bilibili.com/video/BV1Uf4y1t72L)(03 分 09 秒) diff --git a/docs-2.0/1.introduction/2.data-model.md b/docs-2.0/1.introduction/2.data-model.md index c78e42b6554..2ab75d26e6d 100644 --- a/docs-2.0/1.introduction/2.data-model.md +++ b/docs-2.0/1.introduction/2.data-model.md @@ -1,10 +1,10 @@ # 数据模型 -本文介绍Nebula Graph的数据模型。数据模型是一种组织数据并说明它们如何相互关联的模型(schema)。 +本文介绍 Nebula Graph 的数据模型。数据模型是一种组织数据并说明它们如何相互关联的模型(schema)。 ## 数据模型 -Nebula Graph数据模型使用6种基本的数据模型: +Nebula Graph 数据模型使用 6 种基本的数据模型: - 图空间(Space) @@ -15,7 +15,7 @@ Nebula Graph数据模型使用6种基本的数据模型: 点用来保存实体对象,特点如下: - 点是用点标识符(`VID`)标识的。`VID`在同一图空间中唯一。VID 是一个 int64,或者 fixed_string(N)。 - - 点必须有至少一个Tag,也可以有多个Tag。但不能没有Tag。 + - 点必须有至少一个 Tag,也可以有多个 Tag。但不能没有 Tag。 - 边(Edge) @@ -23,17 +23,17 @@ Nebula Graph数据模型使用6种基本的数据模型: - 两点之间可以有多条边。 - 边是有方向的,不存在无向边。 - - 四元组 `<起点VID、Edge type、边排序值(Rank)、终点VID>` 用于唯一标识一条边。边没有EID。 - - 一条边有且仅有一个Edge type。 - - 一条边有且仅有一个rank。其为int64,默认为0。 + - 四元组 `<起点 VID、Edge type、边排序值 (Rank)、终点 VID>` 用于唯一标识一条边。边没有 EID。 + - 一条边有且仅有一个 Edge type。 + - 一条边有且仅有一个 rank。其为 int64,默认为 0。 - 标签(Tag) - Tag由一组事先预定义的属性构成。 + Tag 由一组事先预定义的属性构成。 - 边类型(Edge type) - Edge type由一组事先预定义的属性构成。 + Edge type 由一组事先预定义的属性构成。 - 属性(Properties) @@ -41,11 +41,11 @@ Nebula Graph数据模型使用6种基本的数据模型: !!! Note - Tag和Edge type的作用,类似于关系型数据库中“点表”和“边表”的表结构。 + Tag 和 Edge type 的作用,类似于关系型数据库中“点表”和“边表”的表结构。 ## 有向属性图 -Nebula Graph使用有向属性图模型,指点和边构成的图,这些边是有方向的,点和边都可以有属性。 +Nebula Graph 使用有向属性图模型,指点和边构成的图,这些边是有方向的,点和边都可以有属性。 下表为篮球运动员数据集的结构示例,包括两种类型的点(**player**、**team**)和两种类型的边(**serve**、**follow**)。 @@ -62,6 +62,6 @@ Nebula Graph使用有向属性图模型,指点和边构成的图,这些边 !!! compatibility - 由于 Nebula Graph {{ nebula.release }} 的数据模型中,允许存在"悬挂边",因此在增删时,用户需自行保证“一条边所对应的起点和终点”的存在性。详见[INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md)、[DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md)、[INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md)、[DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)。 + 由于 Nebula Graph {{ nebula.release }} 的数据模型中,允许存在"悬挂边",因此在增删时,用户需自行保证“一条边所对应的起点和终点”的存在性。详见 [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md)、[DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md)、[INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md)、[DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)。 不支持 openCypher 中的 MERGE 语句。 diff --git a/docs-2.0/1.introduction/3.nebula-graph-architecture/1.architecture-overview.md b/docs-2.0/1.introduction/3.nebula-graph-architecture/1.architecture-overview.md index 1f031019350..a341f563bfd 100644 --- a/docs-2.0/1.introduction/3.nebula-graph-architecture/1.architecture-overview.md +++ b/docs-2.0/1.introduction/3.nebula-graph-architecture/1.architecture-overview.md @@ -12,9 +12,9 @@ Nebula Graph 由三种服务构成:Graph 服务、Meta 服务和 Storage 服 在 Nebula Graph 架构中,Meta 服务是由 nebula-metad 进程提供的,负责数据管理,例如 Schema 操作、集群管理和用户权限管理等。 -Meta 服务的详细说明,请参见 [Meta服务](2.meta-service.md)。 +Meta 服务的详细说明,请参见 [Meta 服务](2.meta-service.md)。 -## Graph服务和Storage服务 +## Graph 服务和 Storage 服务 Nebula Graph 采用计算存储分离架构。Graph 服务负责处理计算请求,Storage 服务负责存储数据。它们由不同的进程提供,Graph 服务是由 nebula-graphd 进程提供,Storage 服务是由 nebula-storaged 进程提供。计算存储分离架构的优势如下: @@ -36,4 +36,4 @@ Nebula Graph 采用计算存储分离架构。Graph 服务负责处理计算请 基于分离架构的特性,Graph 服务将可以在更多类型的存储引擎上单独运行,Storage 服务也可以为多种目的计算引擎提供服务。 -Graph 服务和 Storage 服务的详细说明,请参见 [Graph服务](3.graph-service.md) 和 [Storage服务](4.storage-service.md)。 +Graph 服务和 Storage 服务的详细说明,请参见 [Graph 服务](3.graph-service.md)和 [Storage 服务](4.storage-service.md)。 diff --git a/docs-2.0/1.introduction/3.nebula-graph-architecture/2.meta-service.md b/docs-2.0/1.introduction/3.nebula-graph-architecture/2.meta-service.md index 6974e174028..5241e8d20a8 100644 --- a/docs-2.0/1.introduction/3.nebula-graph-architecture/2.meta-service.md +++ b/docs-2.0/1.introduction/3.nebula-graph-architecture/2.meta-service.md @@ -8,22 +8,22 @@ Meta 服务是由 nebula-metad 进程提供的,用户可以根据场景配置 nebula-metad 进程数量: -- 测试环境中,用户可以在 Nebula Graph 集群中部署1个或3个 nebula-metad 进程。如果要部署3个,用户可以将它们部署在1台机器上,或者分别部署在不同的机器上。 -- 生产环境中,建议在 Nebula Graph 集群中部署3个 nebula-metad 进程。请将这些进程部署在不同的机器上以保证高可用。 +- 测试环境中,用户可以在 Nebula Graph 集群中部署 1 个或 3 个 nebula-metad 进程。如果要部署 3 个,用户可以将它们部署在 1 台机器上,或者分别部署在不同的机器上。 +- 生产环境中,建议在 Nebula Graph 集群中部署 3 个 nebula-metad 进程。请将这些进程部署在不同的机器上以保证高可用。 所有 nebula-metad 进程构成了基于 Raft 协议的集群,其中一个进程是 leader,其他进程都是 follower。 -leader 是由多数派选举出来,只有 leader 能够对客户端或其他组件提供服务,其他 follower 作为候补,如果 leader 出现故障,会在所有follower 中选举出新的 leader。 +leader 是由多数派选举出来,只有 leader 能够对客户端或其他组件提供服务,其他 follower 作为候补,如果 leader 出现故障,会在所有 follower 中选举出新的 leader。 !!! Note - leader 和 follower 的数据通过 Raft 协议保持一致,因此 leader 故障和选举新 leader 不会导致数据不一致。更多关于 Raft 的介绍见附录。 + leader 和 follower 的数据通过 Raft 协议保持一致,因此 leader 故障和选举新 leader 不会导致数据不一致。更多关于 Raft 的介绍见 [Storage 服务](4.storage-service.md)。 ## Meta 服务功能 ### 管理用户账号 -Meta 服务中存储了用户的账号和权限信息,当客户端通过账号发送请求给Meta 服务,Meta 服务会检查账号信息,以及该账号是否有对应的请求权限。 +Meta 服务中存储了用户的账号和权限信息,当客户端通过账号发送请求给 Meta 服务,Meta 服务会检查账号信息,以及该账号是否有对应的请求权限。 更多 Nebula Graph 的访问控制说明,请参见[身份验证](../../7.data-security/1.authentication/1.authentication.md)。 @@ -43,9 +43,9 @@ Meta 服务中存储了 Schema 信息,同时还负责 Schema 的添加、修 更多 Nebula Graph 的 Schema 信息,请参见[数据模型](../2.data-model.md)。 -### 管理基于TTL的数据回收 +### 管理 TTL 信息 -Meta 服务提供基于 TTL(Time To Live) 的自动数据回收和空间回收。 +Meta 服务存储 TTL(Time To Live)定义信息,可以用于设置数据生命周期。数据过期后,会由 Storage 服务进行处理,具体过程参见 [TTL](../../3.ngql-guide/8.clauses-and-options/ttl-options.md)。 ### 管理作业 diff --git a/docs-2.0/1.introduction/3.nebula-graph-architecture/3.graph-service.md b/docs-2.0/1.introduction/3.nebula-graph-architecture/3.graph-service.md index fc901892b11..2243ebd1dad 100644 --- a/docs-2.0/1.introduction/3.nebula-graph-architecture/3.graph-service.md +++ b/docs-2.0/1.introduction/3.nebula-graph-architecture/3.graph-service.md @@ -48,7 +48,7 @@ Validator 模块对生成的 AST 进行语义校验,主要包括: - 校验 `*` 代表的信息 - 查询语句中包含 `*` 时,校验子句时需要将 `*` 涉及的Schema都进行校验。 + 查询语句中包含 `*` 时,校验子句时需要将 `*` 涉及的 Schema 都进行校验。 例如语句`GO FROM "Tim" OVER * YIELD dst(edge), properties(edge).likeness, dst(edge)`,校验`OVER`子句时需要校验所有的 Edge type,如果 Edge type 包含 `like`和`serve`,该语句会展开为`GO FROM "Tim" OVER like,serve YIELD dst(edge), properties(edge).likeness, dst(edge)`。 @@ -72,7 +72,7 @@ Validator 模块对生成的 AST 进行语义校验,主要包括: 如上图右侧未优化的执行计划,每个节点依赖另一个节点,例如根节点 `Project` 依赖 `Filter`、`Filter` 依赖 `GetNeighbor`,最终找到叶子节点 `Start`,才能开始执行(并非真正执行)。 - 在这个过程中,每个节点会有对应的输入变量和输出变量,这些变量存储在一个哈希表中。由于执行计划不是真正执行,所以哈希表中每个key的value值都为空(除了 `Start` 节点,起始数据会存储在该节点的输入变量中)。哈希表定义在仓库 `nebula-graph` 内的 `src/context/ExecutionContext.cpp` 中。 + 在这个过程中,每个节点会有对应的输入变量和输出变量,这些变量存储在一个哈希表中。由于执行计划不是真正执行,所以哈希表中每个 key 的 value 值都为空(除了 `Start` 节点,起始数据会存储在该节点的输入变量中)。哈希表定义在仓库 `nebula-graph` 内的 `src/context/ExecutionContext.cpp` 中。 例如哈希表的名称为 `ResultMap`,在建立 `Filter` 这个节点时,定义该节点从 `ResultMap["GN1"]` 中读取数据,然后将结果存储在 `ResultMap["Filter2"]` 中,依次类推,将每个节点的输入输出都确定好。 @@ -120,6 +120,6 @@ Nebula Graph 的代码层次结构如下: 用户也可以通过视频全方位了解 Nebula Graph 的查询引擎。 -- [nMeetup·上海 |全面解析 2.0 Query Engine](https://www.bilibili.com/video/BV1xV411n7DD)(33分30秒) +- [nMeetup·上海 |全面解析 2.0 Query Engine](https://www.bilibili.com/video/BV1xV411n7DD)(33 分 30 秒) diff --git a/docs-2.0/1.introduction/3.nebula-graph-architecture/4.storage-service.md b/docs-2.0/1.introduction/3.nebula-graph-architecture/4.storage-service.md index 36ef63e65c7..c0d37f1ae23 100644 --- a/docs-2.0/1.introduction/3.nebula-graph-architecture/4.storage-service.md +++ b/docs-2.0/1.introduction/3.nebula-graph-architecture/4.storage-service.md @@ -1,14 +1,14 @@ -# Storage服务 +# Storage 服务 -Nebula Graph的存储包含两个部分,一个是Meta相关的存储,称为Meta服务,在前文已有介绍。 +Nebula Graph 的存储包含两个部分,一个是 Meta 相关的存储,称为 Meta 服务,在前文已有介绍。 -另一个是具体数据相关的存储,称为Storage服务。其运行在nebula-storaged进程中。本文仅介绍Storage服务的架构设计。 +另一个是具体数据相关的存储,称为 Storage 服务。其运行在 nebula-storaged 进程中。本文仅介绍 Storage 服务的架构设计。 ## 优势 -- 高性能(自研KVStore) +- 高性能(自研 KVStore) -- 易水平扩展(Shared-nothing架构,不依赖NAS等硬件设备) +- 易水平扩展(Shared-nothing 架构,不依赖 NAS 等硬件设备) - 强一致性(Raft) @@ -16,17 +16,17 @@ Nebula Graph的存储包含两个部分,一个是Meta相关的存储,称为M - 支持向第三方系统进行同步(例如[全文索引](../../4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md)) -## Storage服务架构 +## Storage 服务架构 ![image](https://www-cdn.nebula-graph.com.cn/nebula-blog/nebula-reading-storage-architecture.png) -Storage服务是由nebula-storaged进程提供的,用户可以根据场景配置nebula-storaged进程数量,例如测试环境1个,生产环境3个。 +Storage 服务是由 nebula-storaged 进程提供的,用户可以根据场景配置 nebula-storaged 进程数量,例如测试环境 1 个,生产环境 3 个。 -所有nebula-storaged进程构成了基于Raft协议的集群,整个服务架构可以分为三层,从上到下依次为: +所有 nebula-storaged 进程构成了基于 Raft 协议的集群,整个服务架构可以分为三层,从上到下依次为: -- Storage interface层 +- Storage interface 层 - Storage服务的最上层,定义了一系列和图相关的API。API请求会在这一层被翻译成一组针对[分片](#数据分片)的KV操作,例如: + Storage 服务的最上层,定义了一系列和图相关的 API。API 请求会在这一层被翻译成一组针对[分片](#数据分片)的 KV 操作,例如: - `getNeighbors`:查询一批点的出边或者入边,返回边以及对应的属性,并且支持条件过滤。 @@ -34,47 +34,47 @@ Storage服务是由nebula-storaged进程提供的,用户可以根据场景配 - `getProps`:获取一个点或者一条边的属性。 - 正是这一层的存在,使得Storage服务变成了真正的图存储,否则Storage服务只是一个KV存储服务。 + 正是这一层的存在,使得 Storage 服务变成了真正的图存储,否则 Storage 服务只是一个 KV 存储服务。 -- Consensus层 +- Consensus 层 - Storage服务的中间层,实现了[Multi Group Raft](#multi_group_raft),保证强一致性和高可用性。 + Storage 服务的中间层,实现了 [Multi Group Raft](#multi_group_raft),保证强一致性和高可用性。 -- Store Engine层 +- Store Engine 层 - Storage服务的最底层,是一个单机版本地存储引擎,提供对本地数据的`get`、`put`、`scan`等操作。相关接口存储在`KVStore.h`和`KVEngine.h`文件,用户可以根据业务需求定制开发相关的本地存储插件。 + Storage 服务的最底层,是一个单机版本地存储引擎,提供对本地数据的`get`、`put`、`scan`等操作。相关接口存储在`KVStore.h`和`KVEngine.h`文件,用户可以根据业务需求定制开发相关的本地存储插件。 -下文将基于架构介绍Storage服务的部分特性。 +下文将基于架构介绍 Storage 服务的部分特性。 ## KVStore -Nebula Graph使用自行开发的KVStore,而不是其他开源KVStore,原因如下: +Nebula Graph 使用自行开发的 KVStore,而不是其他开源 KVStore,原因如下: -- 需要高性能KVStore。 +- 需要高性能 KVStore。 -- 需要以库的形式提供,实现高效计算下推。对于强Schema的Nebula Graph来说,计算下推时如何提供Schema信息,是高效的关键。 +- 需要以库的形式提供,实现高效计算下推。对于强 Schema 的 Nebula Graph 来说,计算下推时如何提供 Schema 信息,是高效的关键。 - 需要数据强一致性。 -基于上述原因,Nebula Graph使用RocksDB作为本地存储引擎,实现了自己的KVStore,有如下优势: +基于上述原因,Nebula Graph 使用 RocksDB 作为本地存储引擎,实现了自己的 KVStore,有如下优势: -- 对于多硬盘机器,Nebula Graph只需配置多个不同的数据目录即可充分利用多硬盘的并发能力。 +- 对于多硬盘机器,Nebula Graph 只需配置多个不同的数据目录即可充分利用多硬盘的并发能力。 -- 由Meta服务统一管理所有Storage服务,可以根据所有分片的分布情况和状态,手动进行负载均衡。 +- 由 Meta 服务统一管理所有 Storage 服务,可以根据所有分片的分布情况和状态,手动进行负载均衡。 !!! note 不支持自动负载均衡是为了防止自动数据搬迁影响线上业务。 -- 定制预写日志(WAL),每个分片都有自己的WAL。 +- 定制预写日志(WAL),每个分片都有自己的 WAL。 - 支持多个图空间,不同图空间相互隔离,每个图空间可以设置自己的分片数和副本数。 ## 数据存储格式 -图存储的主要数据是点和边,Nebula Graph将点和边的信息存储为key,同时将点和边的属性信息存储在value中,以便更高效地使用属性过滤。 +图存储的主要数据是点和边,Nebula Graph 将点和边的信息存储为 key,同时将点和边的属性信息存储在 value 中,以便更高效地使用属性过滤。 -由于Nebula Graph 2.0的数据存储格式在1.x的基础上做了修改,下文将在介绍数据存储格式时同时介绍不同版本的差异。 +由于 Nebula Graph 2.0 的数据存储格式在 1.x 的基础上做了修改,下文将在介绍数据存储格式时同时介绍不同版本的差异。 - 点数据存储格式 @@ -82,10 +82,10 @@ Nebula Graph使用自行开发的KVStore,而不是其他开源KVStore,原因 |字段|说明| |:---|:---| - |`Type`|key类型。长度为1个字节。| - |`PartID`|数据分片编号。长度为3个字节。此字段主要用于Storage负载均衡(balance)时方便根据前缀扫描整个分片的数据。| - |`VertexID`|点ID。当点ID类型为int时,长度为8个字节;当点ID类型为string时,长度为创建图空间时指定的`fixed_string`长度。| - |`TagID`|点关联的Tag ID。长度为4个字节。| + |`Type`|key 类型。长度为 1 个字节。| + |`PartID`|数据分片编号。长度为 3 个字节。此字段主要用于 Storage 负载均衡(balance)时方便根据前缀扫描整个分片的数据。| + |`VertexID`|点 ID。当点 ID 类型为 int 时,长度为 8 个字节;当点 ID 类型为 string 时,长度为创建图空间时指定的`fixed_string`长度。| + |`TagID`|点关联的 Tag ID。长度为 4 个字节。| - 边数据存储格式 @@ -93,28 +93,28 @@ Nebula Graph使用自行开发的KVStore,而不是其他开源KVStore,原因 |字段|说明| |:---|:---| - |`Type`|key类型。长度为1个字节。| - |`PartID`|数据分片编号。长度为3个字节。此字段主要用于Storage负载均衡(balance)时方便根据前缀扫描整个分片的数据。| - |`VertexID`|点ID。前一个`VertexID`在出边里表示起始点ID,在"入边"里表示目的点ID;后一个`VertexID`"出边"里表示目的点ID,在"入边"里表示起始点ID。| - |`Edge type`|边的类型。大于0表示"出边",小于0表示"入边"。长度为4个字节。| - |`Rank`|用来处理两点之间有多个同类型边的情况。用户可以根据自己的需求进行设置,例如存放交易时间、交易流水号等。长度为8个字节,| - |`PlaceHolder`|预留。长度为1个字节。| + |`Type`|key 类型。长度为 1 个字节。| + |`PartID`|数据分片编号。长度为 3 个字节。此字段主要用于 Storage 负载均衡(balance)时方便根据前缀扫描整个分片的数据。| + |`VertexID`|点 ID。前一个`VertexID`在出边里表示起始点 ID,在"入边"里表示目的点 ID;后一个`VertexID`"出边"里表示目的点 ID,在"入边"里表示起始点 ID。| + |`Edge type`|边的类型。大于 0 表示"出边",小于 0 表示"入边"。长度为 4 个字节。| + |`Rank`|用来处理两点之间有多个同类型边的情况。用户可以根据自己的需求进行设置,例如存放交易时间、交易流水号等。长度为 8 个字节,| + |`PlaceHolder`|预留。长度为 1 个字节。| !!! compatibility "历史版本兼容性" - 2.0和1.x的差异如下: + 2.0 和 1.x 的差异如下: - - 1.x中,点和边的`Type`值相同,而在2.0中进行了区分,即在物理上分离了点和边,方便快速查询某个点的所有Tag。 - - 1.x中,`VertexID`仅支持int类型,而在2.0中新增了string类型。 - - 2.0中取消了1.x中的保留字段`Timestamp`。 - - 2.0中边数据新增字段`PlaceHolder`。 - - 2.0中修改了索引的格式,以便支持范围查询。 + - 1.x 中,点和边的`Type`值相同,而在 2.0 中进行了区分,即在物理上分离了点和边,方便快速查询某个点的所有 Tag。 + - 1.x 中,`VertexID`仅支持 int 类型,而在 2.0 中新增了 string 类型。 + - 2.0 中取消了 1.x 中的保留字段`Timestamp`。 + - 2.0 中边数据新增字段`PlaceHolder`。 + - 2.0 中修改了索引的格式,以便支持范围查询。 ### 属性说明 -Nebula Graph使用强类型Schema。 +Nebula Graph 使用强类型 Schema。 -对于点或边的属性信息,Nebula Graph会将属性信息编码后按顺序存储。由于属性的长度是固定的,查询时可以根据偏移量快速查询。在解码之前,需要先从Meta服务中查询具体的Schema信息(并缓存)。同时为了支持在线变更Schema,在编码属性时,会加入对应的Schema版本信息。 +对于点或边的属性信息,Nebula Graph 会将属性信息编码后按顺序存储。由于属性的长度是固定的,查询时可以根据偏移量快速查询。在解码之前,需要先从 Meta 服务中查询具体的 Schema 信息(并缓存)。同时为了支持在线变更 Schema,在编码属性时,会加入对应的 Schema 版本信息。 ## 数据分片 @@ -124,29 +124,29 @@ Nebula Graph使用强类型Schema。 ### 切边与存储放大 -Nebula Graph中逻辑上的一条边对应着硬盘上的两个键值对(key-value pair),在边的数量和属性较多时,存储放大现象较明显。边的存储方式如下图所示。 +Nebula Graph 中逻辑上的一条边对应着硬盘上的两个键值对(key-value pair),在边的数量和属性较多时,存储放大现象较明显。边的存储方式如下图所示。 ![edge storage](https://docs-cdn.nebula-graph.com.cn/docs-2.0/1.introduction/2.nebula-graph-architecture/two-edge-format.png) -上图以最简单的两个点和一条边为例,起点SrcVertex通过边EdgeA连接目的点DstVertex,形成路径`(SrcVertex)-[EdgeA]->(DstVertex)`。这两个点和一条边会以4个键值对的形式保存在存储层的两个不同分片,即Partition x和Partition y中,详细说明如下: +上图以最简单的两个点和一条边为例,起点 SrcVertex 通过边 EdgeA 连接目的点 DstVertex,形成路径`(SrcVertex)-[EdgeA]->(DstVertex)`。这两个点和一条边会以 4 个键值对的形式保存在存储层的两个不同分片,即 Partition x 和 Partition y 中,详细说明如下: -* 点SrcVertex的键值保存在Partition x中。Key的字段有Type、PartID(x),VID(Src)和TagID。SerializedValue即Value,是序列化的点属性。 +* 点 SrcVertex 的键值保存在 Partition x 中。Key 的字段有 Type、PartID(x),VID(Src)和 TagID。SerializedValue 即 Value,是序列化的点属性。 -* 点EdgeA的第一份键值,这里用EdgeA_Out表示,与SrcVertex一同保存在Partition x中。Key的字段有Type、PartID(x)、VID(Src,即点SrcVertex的ID)、EdgeType(符号为正,代表边方向为出)、Rank(0)、VID(Dst,即点DstVertex的ID)和PlaceHolder。SerializedValue即Value,是序列化的边属性。 +* 点 EdgeA 的第一份键值,这里用 EdgeA_Out 表示,与 SrcVertex 一同保存在 Partition x 中。Key 的字段有 Type、PartID(x)、VID(Src,即点 SrcVertex 的 ID)、EdgeType(符号为正,代表边方向为出)、Rank(0)、VID(Dst,即点 DstVertex 的 ID)和 PlaceHolder。SerializedValue 即 Value,是序列化的边属性。 -* 点DstVertex的键值保存在Partition y中。Key的字段有Type、PartID(y),VID(Dst)和TagID。SerializedValue即Value,是序列化的点属性。 +* 点 DstVertex 的键值保存在 Partition y 中。Key 的字段有 Type、PartID(y),VID(Dst)和 TagID。SerializedValue 即 Value,是序列化的点属性。 -* 点EdgeA的第二份键值,这里用EdgeA_In表示,与DstVertex一同保存在Partition y中。Key的字段有Type、PartID(y)、VID(Dst,即点DstVertex的ID)、EdgeType(符号为负,代表边方向为入)、Rank(0)、VID(Src,即点SrcVertex的ID)和PlaceHolder。SerializedValue即Value,是序列化的边属性,与EdgeA_Out中该部分的完全相同。 +* 点 EdgeA 的第二份键值,这里用 EdgeA_In 表示,与 DstVertex 一同保存在 Partition y 中。Key 的字段有 Type、PartID(y)、VID(Dst,即点 DstVertex 的 ID)、EdgeType(符号为负,代表边方向为入)、Rank(0)、VID(Src,即点 SrcVertex 的 ID)和 PlaceHolder。SerializedValue 即 Value,是序列化的边属性,与 EdgeA_Out 中该部分的完全相同。 -EdgeA_Out和EdgeA_In以方向相反的两条边的形式存在于存储层,二者组合成了逻辑上的一条边EdgeA。EdgeA_Out用于从起点开始的遍历请求,例如`(a)-[]->()`;EdgeA_In用于指向目的点的遍历请求,或者说从目的点开始,沿着边的方向逆序进行的遍历请求,例如例如`()-[]->(a)`。 +EdgeA_Out 和 EdgeA_In 以方向相反的两条边的形式存在于存储层,二者组合成了逻辑上的一条边 EdgeA。EdgeA_Out 用于从起点开始的遍历请求,例如`(a)-[]->()`;EdgeA_In 用于指向目的点的遍历请求,或者说从目的点开始,沿着边的方向逆序进行的遍历请求,例如例如`()-[]->(a)`。 -如EdgeA_Out和EdgeA_In一样,Nebula Graph冗余了存储每条边的信息,导致存储边所需的实际空间翻倍。因为边对应的Key占用的硬盘空间较小,但Value占用的空间与属性值的长度和数量成正比,所以,当边的属性值较大或数量较多时候,硬盘空间占用量会比较大。 +如 EdgeA_Out 和 EdgeA_In 一样,Nebula Graph 冗余了存储每条边的信息,导致存储边所需的实际空间翻倍。因为边对应的 Key 占用的硬盘空间较小,但 Value 占用的空间与属性值的长度和数量成正比,所以,当边的属性值较大或数量较多时候,硬盘空间占用量会比较大。 -如果对边进行操作,为了保证两个键值对的最终一致性,可以开启[TOSS功能](../../5.configurations-and-logs/1.configurations/3.graph-config.md),开启后,会先在正向边所在的分片进行操作,然后在反向边所在分片进行操作,最后返回结果。 +如果对边进行操作,为了保证两个键值对的最终一致性,可以开启 [TOSS 功能](../../5.configurations-and-logs/1.configurations/3.graph-config.md),开启后,会先在正向边所在的分片进行操作,然后在反向边所在分片进行操作,最后返回结果。 ### 分片算法 -分片策略采用**静态 Hash**的方式,即对点VID进行取模操作,同一个点的所有Tag、出边和入边信息都会存储到同一个分片,这种方式极大地提升了查询效率。 +分片策略采用**静态 Hash **的方式,即对点 VID 进行取模操作,同一个点的所有 Tag、出边和入边信息都会存储到同一个分片,这种方式极大地提升了查询效率。 !!! Note @@ -156,10 +156,10 @@ EdgeA_Out和EdgeA_In以方向相反的两条边的形式存在于存储层,二 如果需要将某些点放置在相同的分片(例如在一台机器上),可以参考[公式或代码](https://github.com/vesoft-inc/nebula-common/blob/master/src/common/clients/meta/MetaClient.cpp)。 -下文用简单代码说明VID和分片的关系。 +下文用简单代码说明 VID 和分片的关系。 ``` -// 如果ID长度为8,为了兼容1.0,将数据类型视为int64。 +// 如果 ID 长度为 8,为了兼容 1.0,将数据类型视为 int64。 uint64_t vid = 0; if (id.size() == 8) { memcpy(static_cast(&vid), id.data(), 8); @@ -170,7 +170,7 @@ if (id.size() == 8) { PartitionID pId = vid % numParts + 1; ``` -简单来说,上述代码是将一个固定的字符串进行哈希计算,转换成数据类型为int64的数字(int64数字的哈希计算结果是数字本身),将数字取模,然后加1,即: +简单来说,上述代码是将一个固定的字符串进行哈希计算,转换成数据类型为 int64 的数字(int64 数字的哈希计算结果是数字本身),将数字取模,然后加 1,即: ```C++ pId = vid % numParts + 1; @@ -181,10 +181,10 @@ pId = vid % numParts + 1; |参数|说明| |:---|:---| |`%`|取模运算。| -|`numParts`|`VID`所在图空间的分片数,即[CREATE SPACE](../../3.ngql-guide/9.space-statements/1.create-space.md)语句中的`partition_num`值。| -|`pId`|`VID`所在分片的ID。| +|`numParts`|`VID`所在图空间的分片数,即 [CREATE SPACE](../../3.ngql-guide/9.space-statements/1.create-space.md) 语句中的`partition_num`值。| +|`pId`|`VID`所在分片的 ID。| -例如有100个分片,`VID`为1、101和1001的三个点将会存储在相同的分片。分片ID和机器地址之间的映射是随机的,所以不能假定任何两个分片位于同一台机器上。 +例如有 100 个分片,`VID`为 1、101 和 1001 的三个点将会存储在相同的分片。分片 ID 和机器地址之间的映射是随机的,所以不能假定任何两个分片位于同一台机器上。 ## Raft @@ -192,35 +192,35 @@ pId = vid % numParts + 1; 分布式系统中,同一份数据通常会有多个副本,这样即使少数副本发生故障,系统仍可正常运行。这就需要一定的技术手段来保证多个副本之间的一致性。 -基本原理:Raft 就是一种用于保证多副本一致性的协议。Raft 采用多个副本之间竞选的方式,赢得”超过半数”副本投票的(候选)副本成为 Leader,由 Leader 代表所有副本对外提供服务;其他 Follower 作为备份。当该 Leader 出现异常后(通信故障、运维命令等),其余 Follower 进行新一轮选举,投票出一个新的 Leader。Leader 和 Follower 之间通过心跳的方式相互探测是否存活,并以 Raft-wal 的方式写入硬盘,超过多个心跳仍无响应的副本会认为发生故障。 +基本原理:Raft 就是一种用于保证多副本一致性的协议。Raft 采用多个副本之间竞选的方式,赢得”超过半数”副本投票的(候选)副本成为 Leader,由 Leader 代表所有副本对外提供服务;其他 Follower 作为备份。当该 Leader 出现异常后(通信故障、运维命令等),其余 Follower 进行新一轮选举,投票出一个新的 Leader。Leader 和 Follower 之间通过心跳的方式相互探测是否存活,并以 Raft-wal 的方式写入硬盘,超过多个心跳仍无响应的副本会认为发生故障。 !!! Note - 因为 Raft-wal 需要定期写硬盘,如果硬盘写能力瓶颈会导致 Raft 心跳失败,导致重新发起选举。硬盘IO严重堵塞情况下,会导致长期无法选举出Leader。 + 因为 Raft-wal 需要定期写硬盘,如果硬盘写能力瓶颈会导致 Raft 心跳失败,导致重新发起选举。硬盘 IO 严重堵塞情况下,会导致长期无法选举出 Leader。 读写流程:对于客户端的每个写入请求,Leader 会将该写入以 Raft-wal 的方式,将该条同步给其他 Follower,并只有在“超过半数”副本都成功收到 Raft-wal 后,才会返回客户端该写入成功。对于客户端的每个读取请求,都直接访问 Leader,而 Follower 并不参与读请求服务。 -故障流程:场景1:考虑一个配置为单副本(图空间)的集群;如果系统只有一个副本时,其自身就是 Leader;如果其发生故障,系统将完全不可用。场景2:考虑一个配置为3副本(图空间)的集群;如果系统有 3 个副本,其中一个副本是 Leader,其他 2 个副本是 Follower;即使原 Leader 发生故障,剩下两个副本仍可投票出一个新的Leader(以及一个Follower),此时系统仍可使用;但是当这2个副本中任一者再次发生故障后,由于投票人数不足,系统将完全不可用。 +故障流程:场景 1:考虑一个配置为单副本(图空间)的集群;如果系统只有一个副本时,其自身就是 Leader;如果其发生故障,系统将完全不可用。场景 2:考虑一个配置为 3 副本(图空间)的集群;如果系统有 3 个副本,其中一个副本是 Leader,其他 2 个副本是 Follower;即使原 Leader 发生故障,剩下两个副本仍可投票出一个新的 Leader(以及一个 Follower),此时系统仍可使用;但是当这 2 个副本中任一者再次发生故障后,由于投票人数不足,系统将完全不可用。 !!! Note Raft 多副本的方式与 HDFS 多副本的方式是不同的,Raft 基于“多数派”投票,因此副本数量不能是偶数。 ### Multi Group Raft -由于Storage服务需要支持集群分布式架构,所以基于Raft协议实现了Multi Group Raft,即每个分片的所有副本共同组成一个Raft group,其中一个副本是leader,其他副本是follower,从而实现强一致性和高可用性。Raft的部分实现如下。 +由于 Storage 服务需要支持集群分布式架构,所以基于 Raft 协议实现了 Multi Group Raft,即每个分片的所有副本共同组成一个 Raft group,其中一个副本是 leader,其他副本是 follower,从而实现强一致性和高可用性。Raft 的部分实现如下。 -由于Raft日志不允许空洞,Nebula Graph使用Multi Group Raft缓解此问题,分片数量较多时,可以有效提高Nebula Graph的性能。但是分片数量太多会增加开销,例如Raft group内部存储的状态信息、WAL文件,或者负载过低时的批量操作。 +由于 Raft 日志不允许空洞,Nebula Graph 使用 Multi Group Raft 缓解此问题,分片数量较多时,可以有效提高 Nebula Graph 的性能。但是分片数量太多会增加开销,例如 Raft group 内部存储的状态信息、WAL 文件,或者负载过低时的批量操作。 -实现Multi Group Raft有2个关键点: +实现 Multi Group Raft 有 2 个关键点: -- 共享Transport层 +- 共享 Transport 层 - 每一个Raft group内部都需要向对应的peer发送消息,如果不能共享Transport层,会导致连接的开销巨大。 + 每一个 Raft group 内部都需要向对应的 peer 发送消息,如果不能共享 Transport 层,会导致连接的开销巨大。 - 共享线程池 @@ -228,48 +228,48 @@ Listener:这是一种特殊的 Raft 角色,并不参与投票,也不能用 ### 批量(Batch)操作 -Nebula Graph中,每个分片都是串行写日志,为了提高吞吐,写日志时需要做批量操作,但是由于Nebula Graph利用WAL实现一些特殊功能,需要对批量操作进行分组,这是Nebula Graph的特色。 +Nebula Graph 中,每个分片都是串行写日志,为了提高吞吐,写日志时需要做批量操作,但是由于 Nebula Graph 利用 WAL 实现一些特殊功能,需要对批量操作进行分组,这是 Nebula Graph 的特色。 -例如无锁CAS操作需要之前的WAL全部提交后才能执行,如果一个批量写入的WAL里包含了CAS类型的WAL,就需要拆分成粒度更小的几个组,还要保证这几组WAL串行提交。 +例如无锁 CAS 操作需要之前的 WAL 全部提交后才能执行,如果一个批量写入的 WAL 里包含了 CAS 类型的 WAL,就需要拆分成粒度更小的几个组,还要保证这几组 WAL 串行提交。 -### leader切换(Transfer Leadership) +### leader 切换(Transfer Leadership) -leader切换对于负载均衡至关重要,当把某个分片从一台机器迁移到另一台机器时,首先会检查分片是不是leader,如果是的话,需要先切换leader,数据迁移完毕之后,通常还要重新[均衡leader分布](../../8.service-tuning/load-balance.md)。 +leader 切换对于负载均衡至关重要,当把某个分片从一台机器迁移到另一台机器时,首先会检查分片是不是 leader,如果是的话,需要先切换 leader,数据迁移完毕之后,通常还要重新[均衡 leader 分布](../../8.service-tuning/load-balance.md)。 -对于leader来说,提交leader切换命令时,就会放弃自己的leader身份,当follower收到leader切换命令时,就会发起选举。 +对于 leader 来说,提交 leader 切换命令时,就会放弃自己的 leader 身份,当 follower 收到 leader 切换命令时,就会发起选举。 ### 成员变更 -为了避免脑裂,当一个Raft group的成员发生变化时,需要有一个中间状态,该状态下新旧group的多数派需要有重叠的部分,这样就防止了新的group或旧的group单方面做出决定。为了更加简化,Diego Ongaro 在自己的博士论文中提出每次只增减一个peer的方式,以保证新旧group的多数派总是有重叠。Nebula Graph也采用了这个方式,只不过增加成员和移除成员的实现有所区别。具体实现方式请参见Raft Part class里addPeer/removePeer的实现。 +为了避免脑裂,当一个 Raft group 的成员发生变化时,需要有一个中间状态,该状态下新旧 group 的多数派需要有重叠的部分,这样就防止了新的 group 或旧的 group 单方面做出决定。为了更加简化,Diego Ongaro 在自己的博士论文中提出每次只增减一个 peer 的方式,以保证新旧 group 的多数派总是有重叠。Nebula Graph 也采用了这个方式,只不过增加成员和移除成员的实现有所区别。具体实现方式请参见 Raft Part class 里 addPeer/removePeer 的实现。 -## 与HDFS的区别 +## 与 HDFS 的区别 -Storage服务基于Raft协议实现的分布式架构,与HDFS的分布式架构有一些区别。例如: +Storage 服务基于 Raft 协议实现的分布式架构,与 HDFS 的分布式架构有一些区别。例如: -- Storage服务本身通过Raft协议保证一致性,副本数量通常为奇数,方便进行选举leader,而HDFS存储具体数据的DataNode需要通过NameNode保证一致性,对副本数量没有要求。 +- Storage 服务本身通过 Raft 协议保证一致性,副本数量通常为奇数,方便进行选举 leader,而 HDFS 存储具体数据的 DataNode 需要通过 NameNode 保证一致性,对副本数量没有要求。 -- Storage服务只有leader副本提供读写服务,而HDFS的所有副本都可以提供读写服务。 +- Storage 服务只有 leader 副本提供读写服务,而 HDFS 的所有副本都可以提供读写服务。 -- Storage服务无法修改副本数量,只能在创建图空间时指定副本数量,而HDFS可以调整副本数量。 +- Storage 服务无法修改副本数量,只能在创建图空间时指定副本数量,而 HDFS 可以调整副本数量。 -- Storage服务是直接访问文件系统,而HDFS的上层(例如HBase)需要先访问HDFS,再访问到文件系统,远程过程调用(RPC)次数更多。 +- Storage 服务是直接访问文件系统,而 HDFS 的上层(例如 HBase)需要先访问 HDFS,再访问到文件系统,远程过程调用(RPC)次数更多。 -总而言之,Storage服务更加轻量级,精简了一些功能,架构没有HDFS复杂,可以有效提高小块存储的读写性能。 +总而言之,Storage 服务更加轻量级,精简了一些功能,架构没有 HDFS 复杂,可以有效提高小块存储的读写性能。 ## 视频 用户也可以通过视频全方位了解 Nebula Graph 的存储设计。 -- [nMeetup·上海 | Storage in Nebula Graph 2.0](https://www.bilibili.com/video/BV16b4y1Q77k)(24分29秒) +- [nMeetup·上海 | Storage in Nebula Graph 2.0](https://www.bilibili.com/video/BV16b4y1Q77k)(24 分 29 秒) diff --git a/docs-2.0/1.introduction/3.vid.md b/docs-2.0/1.introduction/3.vid.md index 7ae92dea809..7d3f5103f03 100644 --- a/docs-2.0/1.introduction/3.vid.md +++ b/docs-2.0/1.introduction/3.vid.md @@ -1,64 +1,63 @@ -# 点VID +# 点 VID -在Nebula Graph中,一个点由点的ID唯一标识,即VID或Vertex ID。 +在 Nebula Graph 中,一个点由点的 ID 唯一标识,即 VID 或 Vertex ID。 -## VID的特点 +## VID 的特点 -- VID数据类型只可以为定长字符串`FIXED_STRING()`或`INT64`;一个图空间只能选用其中一种VID类型。 +- VID 数据类型只可以为定长字符串`FIXED_STRING()`或`INT64`;一个图空间只能选用其中一种 VID 类型。 -- VID在一个图空间中必须唯一,其作用类似于关系型数据库中的主键(索引+唯一约束)。但不同图空间中的VID是完全独立无关的。 +- VID 在一个图空间中必须唯一,其作用类似于关系型数据库中的主键(索引+唯一约束)。但不同图空间中的 VID 是完全独立无关的。 -- 点VID的生成方式必须由用户自行指定,系统不提供自增ID或者UUID。 +- 点 VID 的生成方式必须由用户自行指定,系统不提供自增 ID 或者 UUID。 -- VID相同的点,会被认为是同一个点。例如: +- VID 相同的点,会被认为是同一个点。例如: - + VID相当于一个实体的唯一标号,例如一个人的身份证号。Tag相当于实体所拥有的类型,例如"滴滴司机"和"老板"。不同的Tag又相应定义了两组不同的属性,例如"驾照号、驾龄、接单量、接单小号"和"工号、薪水、债务额度、商务电话"。 + + VID 相当于一个实体的唯一标号,例如一个人的身份证号。Tag 相当于实体所拥有的类型,例如"滴滴司机"和"老板"。不同的 Tag 又相应定义了两组不同的属性,例如"驾照号、驾龄、接单量、接单小号"和"工号、薪水、债务额度、商务电话"。 - + 同时操作相同VID并且相同Tag的两条`INSERT`语句(均无`IF NOT EXISTS`参数),晚写入的`INSERT`会覆盖先写入的。 + + 同时操作相同 VID 并且相同 Tag 的两条`INSERT`语句(均无`IF NOT EXISTS`参数),晚写入的`INSERT`会覆盖先写入的。 - + 同时操作包含相同VID但是两个不同`TAG A`和`TAG B`的两条`INSERT`语句,对`TAG A`的操作不会影响`TAG B`。 + + 同时操作包含相同 VID 但是两个不同`TAG A`和`TAG B`的两条`INSERT`语句,对`TAG A`的操作不会影响`TAG B`。 -- VID通常会被(LSM-tree方式)索引并缓存在内存中,因此直接访问VID的性能最高。 +- VID 通常会被(LSM-tree 方式)索引并缓存在内存中,因此直接访问 VID 的性能最高。 -## VID使用建议 +## VID 使用建议 -- Nebula Graph 1.x只支持VID类型为`INT64`,2.x支持`INT64`和`FIXED_STRING()`。在`CREATE SPACE`中通过参数`vid_type`可以指定VID类型。 +- Nebula Graph 1.x 只支持 VID 类型为`INT64`,2.x 支持`INT64`和`FIXED_STRING()`。在`CREATE SPACE`中通过参数`vid_type`可以指定 VID 类型。 -- 可以使用`id()`函数,指定或引用该点的VID; +- 可以使用`id()`函数,指定或引用该点的 VID; -- 可以使用`LOOKUP`或者`MATCH`语句,来通过属性索引查找对应的VID; +- 可以使用`LOOKUP`或者`MATCH`语句,来通过属性索引查找对应的 VID; -- 性能上,直接通过VID找到点的语句性能最高,例如`DELETE xxx WHERE id(xxx) == "player100"`,或者`GO FROM "player100"`等语句。通过属性先查找VID,再进行图操作的性能会变差,例如`LOOKUP | GO FROM $-.ids`等语句,相比前者多了一次内存或硬盘的随机读(`LOOKUP`)以及一次序列化(`|`)。 +- 性能上,直接通过 VID 找到点的语句性能最高,例如`DELETE xxx WHERE id(xxx) == "player100"`,或者`GO FROM "player100"`等语句。通过属性先查找 VID,再进行图操作的性能会变差,例如`LOOKUP | GO FROM $-.ids`等语句,相比前者多了一次内存或硬盘的随机读(`LOOKUP`)以及一次序列化(`|`)。 -## VID生成建议 +## VID 生成建议 -VID的生成工作完全交给应用端,有一些通用的建议: +VID 的生成工作完全交给应用端,有一些通用的建议: -- (最优)通过有唯一性的主键或者属性来直接作为VID;属性访问依赖于VID; +- (最优)通过有唯一性的主键或者属性来直接作为 VID;属性访问依赖于 VID; -- 通过有唯一性的属性组合来生成VID,属性访问依赖于属性索引。 +- 通过有唯一性的属性组合来生成 VID,属性访问依赖于属性索引。 -- 通过snowflake等算法生成VID,属性访问依赖于属性索引; +- 通过 snowflake 等算法生成 VID,属性访问依赖于属性索引; -- 如果个别记录的主键特别长,但绝大多数记录的主键都很短的情况,不要将`FIXED_STRING()`的`N`设置成超大,这会浪费大量内存和硬盘,也会降低性能。此时可通过BASE64,MD5,hash编码加拼接的方式来生成。 +- 如果个别记录的主键特别长,但绝大多数记录的主键都很短的情况,不要将`FIXED_STRING()`的`N`设置成超大,这会浪费大量内存和硬盘,也会降低性能。此时可通过 BASE64,MD5,hash 编码加拼接的方式来生成。 -- 如果用hash方式生成int64 VID:在有10亿个点的情况下,发生hash冲突的概率大约是1/10。边的数量与碰撞的概率无关。 +- 如果用 hash 方式生成 int64 VID:在有 10 亿个点的情况下,发生 hash 冲突的概率大约是 1/10。边的数量与碰撞的概率无关。 -## 定义和修改VID的数据类型 +## 定义和修改 VID 的数据类型 -VID的数据类型必须在[创建图空间](../3.ngql-guide/9.space-statements/1.create-space.md)时定义,且一旦定义无法修改。 +VID 的数据类型必须在[创建图空间](../3.ngql-guide/9.space-statements/1.create-space.md)时定义,且一旦定义无法修改。 -## "查询起始点"(`start vid`)与全局扫描 +## "查询起始点"(`start vid`) 与全局扫描 绝大多数情况下,Nebula Graph 的查询语句(`MATCH`、`GO`、`LOOKUP`)的执行计划,必须要通过一定方式找到查询起始点的 VID(`start vid`)。 定位 `start vid` 只有两种方式: -1. 例如 `GO FROM "player100" OVER` 是在语句中显式的指明 `start vid` 是 "player100"; +1. 例如 `GO FROM "player100" OVER` 是在语句中显式的指明 `start vid` 是 "player100"; 2. 例如 `LOOKUP ON player WHERE player.name == "Tony Parker"` 或者 `MATCH (v:player {name:"Tony Parker"}) `,是通过属性 `player.name` 的索引来定位到 `start vid`; - !!! caution "不能在没有 `start vid` 情况下进行全局扫描" 例如 `match (n) return n;` 会返回错误,因为此时无法定位到 `start vid`;这是一个全局扫描,因此被禁止。 diff --git a/docs-2.0/14.client/1.nebula-client.md b/docs-2.0/14.client/1.nebula-client.md index c97eae8a9e6..ced474b3599 100644 --- a/docs-2.0/14.client/1.nebula-client.md +++ b/docs-2.0/14.client/1.nebula-client.md @@ -1,17 +1,17 @@ # 客户端介绍 -Nebula Graph提供多种类型客户端,便于用户连接、管理Nebula Graph图数据库。 +Nebula Graph 提供多种类型客户端,便于用户连接、管理 Nebula Graph 图数据库。 -- [Nebula Console](../2.quick-start/3.connect-to-nebula-graph.md):原生CLI客户端 +- [Nebula Console](../2.quick-start/3.connect-to-nebula-graph.md):原生 CLI 客户端 - [Nebula CPP](3.nebula-cpp-client.md):C++客户端 -- [Nebula Java](4.nebula-java-client.md):Java客户端 +- [Nebula Java](4.nebula-java-client.md):Java 客户端 -- [Nebula Python](5.nebula-python-client.md):Python客户端 +- [Nebula Python](5.nebula-python-client.md):Python 客户端 -- [Nebula Go](6.nebula-go-client.md):Go客户端 +- [Nebula Go](6.nebula-go-client.md):Go 客户端 !!! note - 除Nebula Java之外,其他客户端暂不支持线程安全(thread-safe)。 + 除 Nebula Java 之外,其他客户端暂不支持线程安全(thread-safe)。 diff --git a/docs-2.0/14.client/3.nebula-cpp-client.md b/docs-2.0/14.client/3.nebula-cpp-client.md index 8113debff80..145f193ffb8 100644 --- a/docs-2.0/14.client/3.nebula-cpp-client.md +++ b/docs-2.0/14.client/3.nebula-cpp-client.md @@ -1,26 +1,26 @@ # Nebula CPP -[Nebula CPP](https://github.com/vesoft-inc/nebula-cpp/tree/{{cpp.branch}})是一款C++语言的客户端,可以连接、管理Nebula Graph图数据库。 +[Nebula CPP](https://github.com/vesoft-inc/nebula-cpp/tree/{{cpp.branch}}) 是一款 C++语言的客户端,可以连接、管理 Nebula Graph 图数据库。 ## 前提条件 -- 已安装C++,GCC版本为4.8及以上。 +- 已安装 C++,GCC 版本为 4.8 及以上。 - 编译安装需要准备正确的编译环境,详情请参见[软硬件要求和安装三方库依赖包](../4.deployment-and-installation/1.resource-preparations.md)。 ## 版本对照表 -|Nebula Graph版本|Nebula CPP版本| +|Nebula Graph 版本|Nebula CPP 版本| |:---|:---| |{{ nebula.release }}|{{cpp.release}}| |2.0.1|2.0.0| |2.0.0|2.0.0| -## 安装Nebula CPP +## 安装 Nebula CPP -1. 克隆Nebula CPP源码到机器。 +1. 克隆 Nebula CPP 源码到机器。 - - (推荐)如果需要安装指定版本的Nebula CPP,请使用选项`--branch`指定分支。例如安装v{{ cpp.release }}发布版本,请执行如下命令: + - (推荐)如果需要安装指定版本的 Nebula CPP,请使用选项`--branch`指定分支。例如安装 v{{ cpp.release }}发布版本,请执行如下命令: ```bash $ git clone --branch v{{ cpp.release }} https://github.com/vesoft-inc/nebula-cpp.git @@ -32,19 +32,19 @@ $ git clone https://github.com/vesoft-inc/nebula-cpp.git ``` -2. 进入目录nebula-cpp。 +2. 进入目录 nebula-cpp。 ```bash $ cd nebula-cpp ``` -3. 创建目录build并进入该目录。 +3. 创建目录 build 并进入该目录。 ```bash $ mkdir build && cd build ``` -4. 使用CMake生成makefile文件。 +4. 使用 CMake 生成 makefile 文件。 !!! Note @@ -56,17 +56,17 @@ !!! note - 如果g++不支持c++11,请添加选项`-DDISABLE_CXX11_ABI=ON`。 + 如果 g++不支持 c++11,请添加选项`-DDISABLE_CXX11_ABI=ON`。 -5. 编译Nebula CPP。 +5. 编译 Nebula CPP。 - 为了适当地加快编译速度,可以使用选项`-j`并行编译。并行数量`N`建议为$\min(\text{CPU}核数,\frac{内存(GB)}{2})$。 + 为了适当地加快编译速度,可以使用选项`-j`并行编译。并行数量`N`建议为$\min(\text{CPU}核数,\frac{内存 (GB)}{2})$。 ```bash $ make -j{N} ``` -6. 安装Nebula CPP。 +6. 安装 Nebula CPP。 ```bash $ sudo make install @@ -80,7 +80,7 @@ ## 使用方法 -将CPP文件编译为可执行文件即可。接下来以`SessionExample.cpp`为例,介绍如何操作。 +将 CPP 文件编译为可执行文件即可。接下来以`SessionExample.cpp`为例,介绍如何操作。 1. 使用[示例代码](https://github.com/vesoft-inc/nebula-cpp/blob/master/examples/SessionExample.cpp)创建`SessionExample.cpp`文件。 @@ -90,9 +90,9 @@ $ LIBRARY_PATH=:$LIBRARY_PATH g++ -std=c++11 SessionExample.cpp -I -lnebula_graph_client -o session_example ``` - - `library_folder_path`:Nebula Graph动态库文件存储路径,默认为`/usr/local/nebula/lib64`。 + - `library_folder_path`:Nebula Graph 动态库文件存储路径,默认为`/usr/local/nebula/lib64`。 - - `include_folder_path`:Nebula Graph头文件存储路径,默认为`/usr/local/nebula/include`。 + - `include_folder_path`:Nebula Graph 头文件存储路径,默认为`/usr/local/nebula/include`。 示例: @@ -102,7 +102,7 @@ ### 核心代码 -详细示例请参见[SessionExample](https://github.com/vesoft-inc/nebula-cpp/blob/master/examples/SessionExample.cpp)。 +详细示例请参见 [SessionExample](https://github.com/vesoft-inc/nebula-cpp/blob/master/examples/SessionExample.cpp)。 ```C++ nebula::init(&argc, &argv); @@ -121,4 +121,3 @@ session.asyncExecute("SHOW HOSTS", [&complete](nebula::ExecutionResponse&& cbRes }); session.release(); ``` - diff --git a/docs-2.0/14.client/4.nebula-java-client.md b/docs-2.0/14.client/4.nebula-java-client.md index a68f665e8e3..580e516c929 100644 --- a/docs-2.0/14.client/4.nebula-java-client.md +++ b/docs-2.0/14.client/4.nebula-java-client.md @@ -1,23 +1,23 @@ # Nebula Java -[Nebula Java](https://github.com/vesoft-inc/nebula-java/tree/{{ java.branch }})是一款Java语言的客户端,可以连接、管理Nebula Graph图数据库。 +[Nebula Java](https://github.com/vesoft-inc/nebula-java/tree/{{ java.branch }}) 是一款 Java 语言的客户端,可以连接、管理 Nebula Graph 图数据库。 ## 前提条件 -已安装Java,版本为8.0及以上。 +已安装 Java,版本为 8.0 及以上。 ## 版本对照表 -|Nebula Graph版本|Nebula Java版本| +|Nebula Graph 版本|Nebula Java 版本| |:---|:---| |{{ nebula.release }}|{{java.release}}| |2.0.1|2.0.0| |2.0.0|2.0.0| |2.0.0-rc1|2.0.0-rc1| -## 下载Nebula Java +## 下载 Nebula Java -- (推荐)如果需要使用指定版本的Nebula Java,请使用选项`--branch`指定分支。例如使用v{{ java.release }}发布版本,请执行如下命令: +- (推荐)如果需要使用指定版本的 Nebula Java,请使用选项`--branch`指定分支。例如使用 v{{ java.release }}发布版本,请执行如下命令: ```bash $ git clone --branch v{{ java.release }} https://github.com/vesoft-inc/nebula-java.git @@ -35,11 +35,11 @@ 建议一个线程使用一个会话,如果多个线程使用同一个会话,会降低效率。 -使用IDEA等工具导入Maven项目,请在`pom.xml`中添加如下依赖: +使用 IDEA 等工具导入 Maven 项目,请在`pom.xml`中添加如下依赖: !!! note - `2.0.0-SNAPSHOT`为日常研发版本,可能存在未知问题,建议使用release版本号替换`2.0.0-SNAPSHOT`。 + `2.0.0-SNAPSHOT`为日常研发版本,可能存在未知问题,建议使用 release 版本号替换`2.0.0-SNAPSHOT`。 ```bash @@ -49,7 +49,7 @@ ``` -如果无法下载日常研发版本的依赖,请在`pom.xml`中添加如下内容(release版本不需要添加): +如果无法下载日常研发版本的依赖,请在`pom.xml`中添加如下内容(release 版本不需要添加): ```bash @@ -60,11 +60,11 @@ ``` -如果没有Maven管理项目,请手动[下载JAR包](https://repo1.maven.org/maven2/com/vesoft/)进行安装。 +如果没有 Maven 管理项目,请手动[下载 JAR 包](https://repo1.maven.org/maven2/com/vesoft/)进行安装。 ### 核心代码 -详细示例请参见[GraphClientExample](https://github.com/vesoft-inc/nebula-java/blob/master/examples/src/main/java/com/vesoft/nebula/examples/GraphClientExample.java)。 +详细示例请参见 [GraphClientExample](https://github.com/vesoft-inc/nebula-java/blob/master/examples/src/main/java/com/vesoft/nebula/examples/GraphClientExample.java)。 ```java NebulaPool pool = new NebulaPool(); @@ -82,7 +82,6 @@ try { String createSpace = "CREATE SPACE IF NOT EXISTS " + space + " (partition_num=15, replica_factor=1, vid_type=fixed_string(30)); "; ResultSet resp = session.execute(createSpace); - //create schema String createSchema = "USE " + space + "; CREATE TAG IF NOT EXISTS person(name string, age int);" + "CREATE EDGE IF NOT EXISTS like(likeness double)"; diff --git a/docs-2.0/14.client/5.nebula-python-client.md b/docs-2.0/14.client/5.nebula-python-client.md index 5b324e028fb..264484a3932 100644 --- a/docs-2.0/14.client/5.nebula-python-client.md +++ b/docs-2.0/14.client/5.nebula-python-client.md @@ -1,23 +1,23 @@ # Nebula Python -[Nebula Python](https://github.com/vesoft-inc/nebula-python)是一款Python语言的客户端,可以连接、管理Nebula Graph图数据库。 +[Nebula Python](https://github.com/vesoft-inc/nebula-python) 是一款 Python 语言的客户端,可以连接、管理 Nebula Graph 图数据库。 ## 前提条件 -已安装Python,版本为3.5及以上。 +已安装 Python,版本为 3.5 及以上。 ## 版本对照表 -|Nebula Graph版本|Nebula Python版本| +|Nebula Graph 版本|Nebula Python 版本| |:---|:---| |{{ nebula.release }}|{{python.release}}| |2.0.1|2.0.0| |2.0.0|2.0.0| |2.0.0-rc1|2.0.0rc1| -## 安装Nebula Python +## 安装 Nebula Python -### pip安装 +### pip 安装 ```bash $ pip install nebula2-python== @@ -25,9 +25,9 @@ $ pip install nebula2-python== ### 克隆源码安装 -1. 克隆Nebula Python源码到机器。 +1. 克隆 Nebula Python 源码到机器。 - - (推荐)如果需要安装指定版本的Nebula Python,请使用选项`--branch`指定分支。例如安装v{{ python.release }}发布版本,请执行如下命令: + - (推荐)如果需要安装指定版本的 Nebula Python,请使用选项`--branch`指定分支。例如安装 v{{ python.release }}发布版本,请执行如下命令: ```bash $ git clone --branch v{{ python.release }} https://github.com/vesoft-inc/nebula-python.git @@ -39,7 +39,7 @@ $ pip install nebula2-python== $ git clone https://github.com/vesoft-inc/nebula-python.git ``` -2. 进入目录nebula-python。 +2. 进入目录 nebula-python。 ```bash $ cd nebula-python @@ -53,9 +53,9 @@ $ pip install nebula2-python== ## 核心代码 -详细示例请参见[Example](https://github.com/vesoft-inc/nebula-python/tree/master/example)。 +详细示例请参见 [Example](https://github.com/vesoft-inc/nebula-python/tree/master/example)。 -### 连接Graph服务 +### 连接 Graph 服务 ```python # 定义配置 @@ -63,24 +63,24 @@ config = Config() config.max_connection_pool_size = 10 # 初始化连接池 connection_pool = ConnectionPool() -# 如果给定的服务器正常,则返回true,否则返回false。 +# 如果给定的服务器正常,则返回 true,否则返回 false。 ok = connection_pool.init([('192.168.xx.1', 9669)], config) -# 方法1:控制连接自行释放。 +# 方法 1:控制连接自行释放。 # 从连接池中获取会话 session = connection_pool.get_session('root', 'nebula') # 选择图空间 session.execute('USE basketballplayer') -# 执行查看TAG命令 +# 执行查看 TAG 命令 result = session.execute('SHOW TAGS') print(result) # 释放会话 session.release() -# 方法2:使用session_context,会话将被自动释放。 +# 方法 2:使用 session_context,会话将被自动释放。 with connection_pool.session_context('root', 'nebula') as session: session.execute('USE basketballplayer;') result = session.execute('SHOW TAGS;') @@ -90,10 +90,10 @@ with connection_pool.session_context('root', 'nebula') as session: connection_pool.close() ``` -### 连接Storage服务 +### 连接 Storage 服务 ```python -# 设置所有Meta服务地址 +# 设置所有 Meta 服务地址 meta_cache = MetaCache([('192.168.xx.1', 9559), ('192.168.xx.2', 9559), ('192.168.xx.3', 9559)], diff --git a/docs-2.0/14.client/6.nebula-go-client.md b/docs-2.0/14.client/6.nebula-go-client.md index 1eb7fbe55c1..2da1e6c6d5b 100644 --- a/docs-2.0/14.client/6.nebula-go-client.md +++ b/docs-2.0/14.client/6.nebula-go-client.md @@ -1,22 +1,22 @@ # Nebula Go -[Nebula Go](https://github.com/vesoft-inc/nebula-go/tree/{{go.branch}})是一款Go语言的客户端,可以连接、管理Nebula Graph图数据库。 +[Nebula Go](https://github.com/vesoft-inc/nebula-go/tree/{{go.branch}}) 是一款 Go 语言的客户端,可以连接、管理 Nebula Graph 图数据库。 ## 前提条件 -已安装Go,版本为1.13及以上。 +已安装 Go,版本为 1.13 及以上。 ## 版本对照表 -|Nebula Graph版本|Nebula Go版本| +|Nebula Graph 版本|Nebula Go 版本| |:---|:---| |{{ nebula.release }}|{{go.release}}| |2.0.1|2.0.0-GA| |2.0.0|2.0.0-GA| -## 下载Nebula Go +## 下载 Nebula Go -- (推荐)如果需要下载指定版本的Nebula Go,请使用选项`--branch`指定分支。例如安装v{{ go.release }}发布版本,请执行如下命令: +- (推荐)如果需要下载指定版本的 Nebula Go,请使用选项`--branch`指定分支。例如安装 v{{ go.release }}发布版本,请执行如下命令: ```bash $ git clone --branch v{{ go.release }} https://github.com/vesoft-inc/nebula-go.git @@ -40,7 +40,7 @@ $ go get -u -v github.com/vesoft-inc/nebula-go@ ## 核心代码 -详细示例请参见[graph_client_basic_example](https://github.com/vesoft-inc/nebula-go/blob/master/basic_example/graph_client_basic_example.go)和[graph_client_goroutines_example](https://github.com/vesoft-inc/nebula-go/blob/master/gorountines_example/graph_client_goroutines_example.go)。 +详细示例请参见 [graph_client_basic_example](https://github.com/vesoft-inc/nebula-go/blob/master/basic_example/graph_client_basic_example.go) 和 [graph_client_goroutines_example](https://github.com/vesoft-inc/nebula-go/blob/master/gorountines_example/graph_client_goroutines_example.go)。 ```bash const ( diff --git a/docs-2.0/15.contribution/how-to-contribute.md b/docs-2.0/15.contribution/how-to-contribute.md index 3c1afbe7384..f681a7e280f 100644 --- a/docs-2.0/15.contribution/how-to-contribute.md +++ b/docs-2.0/15.contribution/how-to-contribute.md @@ -2,23 +2,23 @@ ## 开始之前 -### github或社区提交问题 +### github 或社区提交问题 -欢迎为项目贡献任何代码或文档,但是建议先在[github](https://github.com/vesoft-inc/nebula)或[社区](https://discuss.nebula-graph.io/)上提交一个问题,和大家共同讨论。 +欢迎为项目贡献任何代码或文档,但是建议先在 [github](https://github.com/vesoft-inc/nebula) 或[社区](https://discuss.nebula-graph.io/)上提交一个问题,和大家共同讨论。 ### 签署贡献者许可协议(CLA) -什么是[CLA](https://www.apache.org/licenses/contributor-agreements.html)? +什么是 [CLA](https://www.apache.org/licenses/contributor-agreements.html)? 签署协议链接:[vesoft inc. Contributor License Agreement](https://cla-assistant.io/vesoft-inc/) -单击按钮**Sign in with GitHub to agree**签署协议。 +单击按钮** Sign in with GitHub to agree **签署协议。 如果有任何问题,请发送邮件至`info@vesoft.com`。 ## 修改单篇文档 -Nebula Graph文档以Markdown语言编写。单击文档标题右侧的铅笔图标即可提交修改建议。 +Nebula Graph 文档以 Markdown 语言编写。单击文档标题右侧的铅笔图标即可提交修改建议。 该方法仅适用于修改单篇文档。 @@ -26,13 +26,13 @@ Nebula Graph文档以Markdown语言编写。单击文档标题右侧的铅笔图 该方法适用于贡献代码、批量修改多篇文档或者新增文档。 -### Step 1:通过GitHub fork仓库 +### Step 1:通过 GitHub fork 仓库 -Nebula Graph项目有很多[仓库](https://github.com/vesoft-inc),以[nebula-graph仓库](https://github.com/vesoft-inc/nebula)为例: +Nebula Graph 项目有很多[仓库](https://github.com/vesoft-inc),以 [nebula-graph 仓库](https://github.com/vesoft-inc/nebula)为例: -1. 访问[https://github.com/vesoft-inc/nebula](https://github.com/vesoft-inc/nebula)。 +1. 访问 [github.com/vesoft-inc/nebula](https://github.com/vesoft-inc/nebula)。 -2. 在右上角单击按钮`Fork`,然后单击用户名,即可fork出nebula-graph仓库。 +2. 在右上角单击按钮`Fork`,然后单击用户名,即可 fork 出 nebula-graph 仓库。 ### Step 2:将分支克隆到本地 @@ -43,10 +43,10 @@ Nebula Graph项目有很多[仓库](https://github.com/vesoft-inc),以[nebula- working_dir=$HOME/Workspace ``` -2. 将`user`设置为GitHub的用户名。 +2. 将`user`设置为 GitHub 的用户名。 ```bash - user={GitHub用户名} + user={GitHub 用户名} ``` 3. 克隆代码。 @@ -73,18 +73,18 @@ Nebula Graph项目有很多[仓库](https://github.com/vesoft-inc),以[nebula- git remote -v ``` -4. (可选)定义pre-commit hook。 +4. (可选)定义 pre-commit hook。 - 请将Nebula Graph的pre-commit hook连接到`.git`目录。 + 请将 Nebula Graph 的 pre-commit hook 连接到`.git`目录。 - hook将检查commit,包括格式、构建、文档生成等。 + hook 将检查 commit,包括格式、构建、文档生成等。 ```bash cd $working_dir/nebula-graph/.git/hooks ln -s $working_dir/nebula-graph/.linters/cpp/hooks/pre-commit.sh . ``` - pre-commit hook有时候可能无法正常执行,用户必须手动执行。 + pre-commit hook 有时候可能无法正常执行,用户必须手动执行。 ```bash cd $working_dir/nebula-graph/.git/hooks @@ -110,8 +110,8 @@ Nebula Graph项目有很多[仓库](https://github.com/vesoft-inc),以[nebula- !!! Note - 由于一个PR通常包含多个commits,最终合入upstream/master分支时,我们会将这些commits挤压(squash)成一个commit进行合并。因此强烈建议创建一个独立的分支进行更改,这样在合入时才容易被挤压。合并后,这个分支可以被丢弃。如果未创建单独的分支,而是直接将commits提交至origin/master,在合入时,可能会出现问题。 - 若未创建单独的分支(或是origin/master合并了其他的分支等),导致origin/master和upstream/master不一致时,用户可以使用hard reset强制两者进行一致。例如: + 由于一个 PR 通常包含多个 commits,最终合入 upstream/master 分支时,我们会将这些 commits 挤压(squash)成一个 commit 进行合并。因此强烈建议创建一个独立的分支进行更改,这样在合入时才容易被挤压。合并后,这个分支可以被丢弃。如果未创建单独的分支,而是直接将 commits 提交至 origin/master,在合入时,可能会出现问题。 + 若未创建单独的分支(或是 origin/master 合并了其他的分支等),导致 origin/master 和 upstream/master 不一致时,用户可以使用 hard reset 强制两者进行一致。例如: ```bash git fetch upstream @@ -124,15 +124,15 @@ Nebula Graph项目有很多[仓库](https://github.com/vesoft-inc),以[nebula- - 代码风格 - **Nebula Graph**采用`cpplint`来确保代码符合Google的代码风格指南。检查器将在提交代码之前执行。 + **Nebula Graph **采用`cpplint`来确保代码符合 Google 的代码风格指南。检查器将在提交代码之前执行。 - 单元测试要求 - 请为新功能或Bug修复添加单元测试。 + 请为新功能或 Bug 修复添加单元测试。 - 构建代码时开启单元测试 - 详情请参见[使用源码安装Nebula Graph](../4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md)。 + 详情请参见[使用源码安装 Nebula Graph](../4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md)。 !!! Note @@ -150,12 +150,12 @@ Nebula Graph项目有很多[仓库](https://github.com/vesoft-inc),以[nebula- ### Step 5:保持分支同步 ```bash -# 当处于myfeature分支时。 +# 当处于 myfeature 分支时。 git fetch upstream git rebase upstream/master ``` -在其他贡献者将PR合并到基础分支之后,用户需要更新head分支。 +在其他贡献者将 PR 合并到基础分支之后,用户需要更新 head 分支。 ### Step 6:Commit @@ -169,31 +169,31 @@ git commit -a ### Step 7:Push -需要审核或离线备份代码时,可以将本地仓库创建的分支push到GitHub的远程仓库。 +需要审核或离线备份代码时,可以将本地仓库创建的分支 push 到 GitHub 的远程仓库。 ```bash git push origin myfeature ``` -### Step 8:创建pull request +### Step 8:创建 pull request -1. 访问fork出的仓库`https://github.com/$user/nebula-graph` (替换此处的用户名`$user`)。 +1. 访问 fork 出的仓库`https://github.com/$user/nebula-graph` (替换此处的用户名`$user`)。 2. 单击`myfeature`分支旁的按钮`Compare & pull request`。 ### Step 9:代码审查 -pull request创建后,至少需要两人审查。审查人员将进行彻底的代码审查,以确保变更满足存储库的贡献准则和其他质量标准。 +pull request 创建后,至少需要两人审查。审查人员将进行彻底的代码审查,以确保变更满足存储库的贡献准则和其他质量标准。 ## 添加测试用例 -添加测试用例的方法参见[How to add test cases](https://github.com/vesoft-inc/nebula/blob/master/tests/README.md#how-to-add-test-case)。 +添加测试用例的方法参见 [How to add test cases](https://github.com/vesoft-inc/nebula/blob/master/tests/README.md#how-to-add-test-case)。 ## 捐赠项目 ### Step 1:确认项目捐赠 -通过邮件、微信、Slack等方式联络Nebula Graph官方人员,确认捐赠项目一事。项目将被捐赠至Nebula Contrib组织下。 +通过邮件、微信、Slack 等方式联络 Nebula Graph 官方人员,确认捐赠项目一事。项目将被捐赠至 Nebula Contrib 组织下。 邮件地址:info@vesoft.com @@ -203,10 +203,10 @@ Slack:[Join Slack](https://join.slack.com/t/nebulagraph/shared_invite/zt-7ybej ### Step 2:获取项目接收人信息 -由Nebula Graph官方人员给出Nebula Contrib的项目接收者ID。 +由 Nebula Graph 官方人员给出 Nebula Contrib 的项目接收者 ID。 ### Step 3:捐赠项目 -由您将项目转移至本次捐赠的项目接受人,并由项目接收者将该项目转移至Nebula Contrib组织下。捐赠后,您将以Maintain角色继续主导社区项目的发展。 +由您将项目转移至本次捐赠的项目接受人,并由项目接收者将该项目转移至 Nebula Contrib 组织下。捐赠后,您将以 Maintain 角色继续主导社区项目的发展。 -GitHub上转移仓库的操作,请参见[Transferring a repository owned by your user account](https://docs.github.com/en/enterprise-server@3.0/github/administering-a-repository/managing-repository-settings/transferring-a-repository#transferring-a-repository-owned-by-your-user-account)。 +GitHub 上转移仓库的操作,请参见 [Transferring a repository owned by your user account](https://docs.github.com/en/enterprise-server@3.0/github/administering-a-repository/managing-repository-settings/transferring-a-repository#transferring-a-repository-owned-by-your-user-account)。 diff --git a/docs-2.0/2.quick-start/1.quick-start-workflow.md b/docs-2.0/2.quick-start/1.quick-start-workflow.md index 7dd9e5431a8..f4db47ee898 100644 --- a/docs-2.0/2.quick-start/1.quick-start-workflow.md +++ b/docs-2.0/2.quick-start/1.quick-start-workflow.md @@ -1,66 +1,66 @@ # 快速入门 -快速入门将介绍如何简单地使用Nebula Graph,包括部署、连接Nebula Graph,以及基础的增删改查操作。 +快速入门将介绍如何简单地使用 Nebula Graph,包括部署、连接 Nebula Graph,以及基础的增删改查操作。 ## 文档 -按照以下步骤可以快速部署并且使用Nebula Graph。 +按照以下步骤可以快速部署并且使用 Nebula Graph。 -1. [安装Nebula Graph](../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) +1. [安装 Nebula Graph](../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) - 使用RPM或DEB文件可以快速安装Nebula Graph。其它部署方式及相应的准备工作请参见[安装部署](../4.deployment-and-installation/1.resource-preparations.md)。 + 使用 RPM 或 DEB 文件可以快速安装 Nebula Graph。其它部署方式及相应的准备工作请参见[安装部署](../4.deployment-and-installation/1.resource-preparations.md)。 -2. [启动Nebula Graph](5.start-stop-service.md) +2. [启动 Nebula Graph](5.start-stop-service.md) - 部署好Nebula Graph之后需要启动Nebula Graph服务。 + 部署好 Nebula Graph 之后需要启动 Nebula Graph 服务。 -3. [连接Nebula Graph](3.connect-to-nebula-graph.md) +3. [连接 Nebula Graph](3.connect-to-nebula-graph.md) - 启动Nebula Graph服务后即可使用客户端连接。Nebula Graph支持多种客户端,快速入门中介绍使用原生命令行客户端Nebula Console连接Nebula Graph的方法。 + 启动 Nebula Graph 服务后即可使用客户端连接。Nebula Graph 支持多种客户端,快速入门中介绍使用原生命令行客户端 Nebula Console 连接 Nebula Graph 的方法。 -4. [使用常用nGQL(CRUD命令)](4.nebula-graph-crud.md) +4. [使用常用 nGQL(CRUD 命令)](4.nebula-graph-crud.md) - 连接到Nebula Graph之后即可使用nGQL(Nebula Graph Query Language)进行增删改查。 + 连接到 Nebula Graph 之后即可使用 nGQL(Nebula Graph Query Language)进行增删改查。 ## 视频 -用户也可以观看视频了解Nebula Graph的相关概念和操作。 +用户也可以观看视频了解 Nebula Graph 的相关概念和操作。 ### 热点视频 -* [听吴敏博士聊Nebula Graph](https://www.bilibili.com/video/BV14U4y157zc)(37分40秒) +* [听吴敏博士聊 Nebula Graph](https://www.bilibili.com/video/BV14U4y157zc)(37 分 40 秒) -* [Foesa小学姐课堂——Nebula Graph那些磨人的概念](https://www.bilibili.com/video/BV1Q5411K7Gg)(04分20秒) +* [Foesa 小学姐课堂——Nebula Graph 那些磨人的概念](https://www.bilibili.com/video/BV1Q5411K7Gg)(04 分 20 秒) -* [Foesa小学姐课堂——path 的三种类型](https://www.bilibili.com/video/BV1Uf4y1t72L)(03分09秒) +* [Foesa 小学姐课堂——path 的三种类型](https://www.bilibili.com/video/BV1Uf4y1t72L)(03 分 09 秒) ### 入门系列 -* [Nebula Graph Studio图探索](https://www.bilibili.com/video/BV1QN411Z7Vh)(03分23秒) +* [Nebula Graph Studio 图探索](https://www.bilibili.com/video/BV1QN411Z7Vh)(03 分 23 秒) -* [Nebula Exchange](https://www.bilibili.com/video/BV1Pq4y177D9)(03分08秒) +* [Nebula Exchange](https://www.bilibili.com/video/BV1Pq4y177D9)(03 分 08 秒) -* [Nebula Algorithm](https://www.bilibili.com/video/BV1fB4y1T7XK)(02分36秒) +* [Nebula Algorithm](https://www.bilibili.com/video/BV1fB4y1T7XK)(02 分 36 秒) -### NG辅导班 +### NG 辅导班 -* [第一篇:图世界的那些概念、术语](https://www.bilibili.com/video/BV17X4y1A7p9)(08分12秒) +* [第一篇:图世界的那些概念、术语](https://www.bilibili.com/video/BV17X4y1A7p9)(08 分 12 秒) -* [第二篇:如何更好地学习 Nebula Graph](https://www.bilibili.com/video/BV1aX4y1A7xd)(07分44秒) +* [第二篇:如何更好地学习 Nebula Graph](https://www.bilibili.com/video/BV1aX4y1A7xd)(07 分 44 秒) -请访问[Bilibili空间](https://space.bilibili.com/472621355),查看 30 多个,500 多分钟的系列视频。 +请访问 [Bilibili 空间](https://space.bilibili.com/472621355),查看 30 多个,500 多分钟的系列视频。 diff --git a/docs-2.0/2.quick-start/2.install-nebula-graph.md b/docs-2.0/2.quick-start/2.install-nebula-graph.md index ce99db09ed1..0c83c32e63a 100644 --- a/docs-2.0/2.quick-start/2.install-nebula-graph.md +++ b/docs-2.0/2.quick-start/2.install-nebula-graph.md @@ -1,4 +1,4 @@ -# 步骤1:安装Nebula Graph +# 步骤 1:安装 Nebula Graph {% include "/source_install-nebula-graph-by-rpm-or-deb.md" %} diff --git a/docs-2.0/2.quick-start/3.connect-to-nebula-graph.md b/docs-2.0/2.quick-start/3.connect-to-nebula-graph.md index a188805977c..cdc162635db 100644 --- a/docs-2.0/2.quick-start/3.connect-to-nebula-graph.md +++ b/docs-2.0/2.quick-start/3.connect-to-nebula-graph.md @@ -1,4 +1,4 @@ -# 步骤3:连接Nebula Graph +# 步骤 3:连接 Nebula Graph {% include "/source_connect-to-nebula-graph.md" %} diff --git a/docs-2.0/2.quick-start/4.nebula-graph-crud.md b/docs-2.0/2.quick-start/4.nebula-graph-crud.md index a7eee37cc94..e298d2af966 100644 --- a/docs-2.0/2.quick-start/4.nebula-graph-crud.md +++ b/docs-2.0/2.quick-start/4.nebula-graph-crud.md @@ -1,16 +1,16 @@ -# 步骤4:使用常用nGQL(CRUD命令) +# 步骤 4:使用常用 nGQL(CRUD 命令) -本文介绍Nebula Graph查询语言的基础语法,包括用于Schema创建和常用增删改查操作的语句。 +本文介绍 Nebula Graph 查询语言的基础语法,包括用于 Schema 创建和常用增删改查操作的语句。 -如需了解更多语句的用法,参见[nGQL指南](../3.ngql-guide/1.nGQL-overview/1.overview.md)。 +如需了解更多语句的用法,参见 [nGQL 指南](../3.ngql-guide/1.nGQL-overview/1.overview.md)。 -## 图空间和Schema +## 图空间和 Schema -一个Nebula Graph实例由一个或多个图空间组成。每个图空间都是物理隔离的,用户可以在同一个实例中使用不同的图空间存储不同的数据集。 +一个 Nebula Graph 实例由一个或多个图空间组成。每个图空间都是物理隔离的,用户可以在同一个实例中使用不同的图空间存储不同的数据集。 ![Nebula Graph and graph spaces](https://docs-cdn.nebula-graph.com.cn/docs-2.0/2.quick-start/nebula-graph-instance-and-graph-spaces.png) -为了在图空间中插入数据,需要为图数据库定义一个Schema。Nebula Graph的Schema是由如下几部分组成。 +为了在图空间中插入数据,需要为图数据库定义一个 Schema。Nebula Graph 的 Schema 是由如下几部分组成。 | 组成部分 | 说明| | :--- | :--- | @@ -25,11 +25,11 @@ ![The demo dataset](dataset-for-crud.png) -## 检查Nebula Graph集群的机器状态 +## 检查 Nebula Graph 集群的机器状态 !!! Note - 首先建议检查机器状态,确保所有的Storage服务连接到了Meta服务。执行命令`SHOW HOSTS`查看机器状态。 + 首先建议检查机器状态,确保所有的 Storage 服务连接到了 Meta 服务。执行命令`SHOW HOSTS`查看机器状态。 ```ngql nebula> SHOW HOSTS; @@ -43,13 +43,13 @@ nebula> SHOW HOSTS; +-------------+-----------+-----------+--------------+----------------------+------------------------+ ``` -在返回结果中,查看**Status**列,可以看到所有Storage服务都在线。 +在返回结果中,查看** Status **列,可以看到所有 Storage 服务都在线。 ### 异步实现创建和修改 !!! caution - Nebula Graph中执行如下创建和修改操作,是异步实现的。要在**下一个**心跳周期之后才能生效;否则访问会报错。 + Nebula Graph 中执行如下创建和修改操作,是异步实现的。要在**下一个**心跳周期之后才能生效;否则访问会报错。 - `CREATE SPACE` - `CREATE TAG` @@ -61,17 +61,17 @@ nebula> SHOW HOSTS; !!! Note - 默认心跳周期是10秒。修改心跳周期参数`heartbeat_interval_secs`,请参见[配置简介](../5.configurations-and-logs/1.configurations/1.configurations.md)。 + 默认心跳周期是 10 秒。修改心跳周期参数`heartbeat_interval_secs`,请参见[配置简介](../5.configurations-and-logs/1.configurations/1.configurations.md)。 为确保数据同步,后续操作能顺利进行,可采取以下方法之一: - 执行`SHOW`或`DESCRIBE`命令检查相应对象的状态,确保创建或修改已完成。如果没有完成,请等待几秒重试。 -- 等待2个心跳周期(20秒)。 +- 等待 2 个心跳周期(20 秒)。 ## 创建和选择图空间 -### nGQL语法 +### nGQL 语法 - 创建图空间 @@ -84,7 +84,7 @@ nebula> SHOW HOSTS; [COMMENT = '']; ``` - 参数详情请参见[CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md)。 + 参数详情请参见 [CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md)。 diff --git a/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md b/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md index 919b0851e8d..4277819f218 100644 --- a/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md +++ b/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md @@ -1,4 +1,4 @@ -# nGQL命令汇总 +# nGQL 命令汇总 ## 函数 @@ -6,28 +6,28 @@ | 函数 | 说明 | | :-------------------------------------- | :----------------------------------------------------------- | - | double abs(double x) | 返回x的绝对值。 | - | double floor(double x) | 返回小于或等于x的最大整数。 | - | double ceil(double x) | 返回大于或等于x的最小整数。 | - | double round(double x) | 返回离x最近的整数值,如果x恰好在中间,则返回离0较远的整数。 | - | double sqrt(double x) | 返回x的平方根。 | - | double cbrt(double x) | 返回x的立方根。 | - | double hypot(double x, double y) | 返回直角三角形(直角边长为x和y)的斜边长。 | + | double abs(double x) | 返回 x 的绝对值。 | + | double floor(double x) | 返回小于或等于 x 的最大整数。 | + | double ceil(double x) | 返回大于或等于 x 的最小整数。 | + | double round(double x) | 返回离 x 最近的整数值,如果 x 恰好在中间,则返回离 0 较远的整数。 | + | double sqrt(double x) | 返回 x 的平方根。 | + | double cbrt(double x) | 返回 x 的立方根。 | + | double hypot(double x, double y) | 返回直角三角形(直角边长为 x 和 y)的斜边长。 | | double pow(double x, double y) | 返回$x^y$的值。 | | double exp(double x) | 返回$e^x$的值。 | | double exp2(double x) | 返回$2^x2$的值。 | - | double log(double x) | 返回以自然数e为底x的对数。 | - | double log2(double x) | 返回以2为底x的对数。 | - | double log10(double x) | 返回以10为底x的对数。 | - | double sin(double x) | 返回x的正弦值。 | - | double asin(double x) | 返回x的反正弦值。 | - | double cos(double x) | 返回x的余弦值。 | - | double acos(double x) | 返回x的反余弦值。 | - | double tan(double x) | 返回x的正切值。 | - | double atan(double x) | 返回x的反正切值。 | - | double rand() | 返回[0,1)内的随机浮点数。 | - | int rand32(int min, int max) | 返回`[min, max)`内的一个随机32位整数。 用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。 如果不传入参数,此时会从带符号的32位int范围内随机返回。 | - | int rand64(int min, int max) | 返回`[min, max)`内的一个随机64位整数。 用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。 如果不传入参数,此时会从带符号的64位int范围内随机返回。 | + | double log(double x) | 返回以自然数 e 为底 x 的对数。 | + | double log2(double x) | 返回以 2 为底 x 的对数。 | + | double log10(double x) | 返回以 10 为底 x 的对数。 | + | double sin(double x) | 返回 x 的正弦值。 | + | double asin(double x) | 返回 x 的反正弦值。 | + | double cos(double x) | 返回 x 的余弦值。 | + | double acos(double x) | 返回 x 的反余弦值。 | + | double tan(double x) | 返回 x 的正切值。 | + | double atan(double x) | 返回 x 的反正切值。 | + | double rand() | 返回 [0,1) 内的随机浮点数。 | + | int rand32(int min, int max) | 返回`[min, max)`内的一个随机 32 位整数。 用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。 如果不传入参数,此时会从带符号的 32 位 int 范围内随机返回。 | + | int rand64(int min, int max) | 返回`[min, max)`内的一个随机 64 位整数。 用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。 如果不传入参数,此时会从带符号的 64 位 int 范围内随机返回。 | | collect() | 将收集的所有值放在一个列表中。 | | avg() | 返回参数的平均值。 | | count() | 返回参数的数量。 | @@ -35,13 +35,13 @@ | min() | 返回参数的最小值。 | | std() | 返回参数的总体标准差。 | | sum() | 返回参数的和。 | - | bit_and() | 逐位做AND操作。 | - | bit_or() | 逐位做OR操作。 | - | bit_xor() | 逐位做XOR操作。 | + | bit_and() | 逐位做 AND 操作。 | + | bit_or() | 逐位做 OR 操作。 | + | bit_xor() | 逐位做 XOR 操作。 | | int size() | 返回列表或映射中元素的数量。 | - | int range(int start, int end, int step) | 返回`[start,end]`中指定步长的值组成的列表。步长`step`默认为1。 | - | int sign(double x) | 返回x的正负号。 如果x为`0`,则返回`0`。 如果x为负数,则返回`-1`。 如果x为正数,则返回`1`。 | - | double e() | 返回自然对数的底e(2.718281828459045)。 | + | int range(int start, int end, int step) | 返回`[start,end]`中指定步长的值组成的列表。步长`step`默认为 1。 | + | int sign(double x) | 返回 x 的正负号。 如果 x 为`0`,则返回`0`。 如果 x 为负数,则返回`-1`。 如果 x 为正数,则返回`1`。 | + | double e() | 返回自然对数的底 e(2.718281828459045)。 | | double pi() | 返回数学常数π(3.141592653589793)。 | | double radians() | 将角度转换为弧度。`radians(180)`返回`3.141592653589793`。 | @@ -51,7 +51,7 @@ | 函数 | 说明 | | :---------------------------------------------- | :----------------------------------------------------------- | - | int strcasecmp(string a, string b) | 比较两个字符串(不区分大小写)。当a=b时,返回0,当a>b是,返回大于0的数,当ab 是,返回大于 0 的数,当 a`count()`返回总行数(包括NULL)。
`count(expr)`返回满足表达式的非空值的总数。
`count()`和`size()`是不同的。 | + | count() | 语法:`count({expr | *})` 。
`count()`返回总行数(包括 NULL)。
`count(expr)`返回满足表达式的非空值的总数。
`count()`和`size()`是不同的。 | -* [collect函数](../3.ngql-guide/6.functions-and-expressions/10.collect.md) +* [collect 函数](../3.ngql-guide/6.functions-and-expressions/10.collect.md) | 函数 | 说明 | | :-------- | :----------------------------------------------------------- | @@ -134,7 +126,7 @@ -* [reduce函数](../3.ngql-guide/6.functions-and-expressions/11.reduce.md) +* [reduce 函数](../3.ngql-guide/6.functions-and-expressions/11.reduce.md) | 函数 | 语法 | 说明 | | :------- | :-------------------------------------------------------- | ------------------------------------------------------------ | @@ -142,23 +134,21 @@ -* [hash函数](../3.ngql-guide/6.functions-and-expressions/12.hash.md) +* [hash 函数](../3.ngql-guide/6.functions-and-expressions/12.hash.md) | 函数 | 说明 | | :----- | :----------------------------------------------------------- | - | hash() | `hash()`函数返回参数的哈希值。其参数可以是数字、字符串、列表、布尔值、NULL等类型的值,或者计算结果为这些类型的表达式。`hash()`函数采用MurmurHash2算法,种子(seed)为`0xc70f6907UL`。用户可以在[`MurmurHash2.h`](https://github.com/vesoft-inc/nebula/blob/master/src/common/base/MurmurHash2.h)中查看其源代码。 | + | hash() | `hash()`函数返回参数的哈希值。其参数可以是数字、字符串、列表、布尔值、NULL 等类型的值,或者计算结果为这些类型的表达式。`hash()`函数采用 MurmurHash2 算法,种子(seed)为`0xc70f6907UL`。用户可以在 [`MurmurHash2.h`](https://github.com/vesoft-inc/nebula/blob/master/src/common/base/MurmurHash2.h) 中查看其源代码。 | -* [concat函数](../3.ngql-guide/6.functions-and-expressions/13.concat.md) +* [concat 函数](../3.ngql-guide/6.functions-and-expressions/13.concat.md) | 函数 | 说明 | | :------- | :----------------------------------------------------------- | | concat() | `concat()`函数至少需要两个或以上字符串参数,并将所有参数连接成一个字符串。
语法:`concat(string1,string2,...)` | - - -* [concat_ws函数](../3.ngql-guide/6.functions-and-expressions/13.concat.md) +* [concat_ws 函数](../3.ngql-guide/6.functions-and-expressions/13.concat.md) | 函数 | 说明 | | ----------- | ------------------------------------------------------------ | @@ -182,11 +172,9 @@ | none() | 如果指定的谓词不适用于列表中的任何一个元素,则返回`true`,否则返回`false`。 | | single() | 如果指定的谓词适用于列表中的唯一一个元素,则返回`true`,否则返回`false`。 | +* [CASE 表达式](../3.ngql-guide/6.functions-and-expressions/5.case-expressions.md) - -* [CASE表达式](../3.ngql-guide/6.functions-and-expressions/5.case-expressions.md) - - `CASE`表达式使用条件来过滤nGQL查询语句的结果,常用于`YIELD`和`RETURN`子句中。`CASE`表达式会遍历所有条件,并在满足第一个条件时停止读取后续条件,然后返回结果。如果不满足任何条件,将通过`ELSE`子句返回结果。如果没有`ELSE`子句且不满足任何条件,则返回`NULL`。 + `CASE`表达式使用条件来过滤 nGQL 查询语句的结果,常用于`YIELD`和`RETURN`子句中。`CASE`表达式会遍历所有条件,并在满足第一个条件时停止读取后续条件,然后返回结果。如果不满足任何条件,将通过`ELSE`子句返回结果。如果没有`ELSE`子句且不满足任何条件,则返回`NULL`。 语法: @@ -205,8 +193,6 @@ | `result` | 如果`value`匹配`comparer`,则返回该`result`。 | | `default` | 如果没有条件匹配,则返回该`default`。 | - - ## 通用查询语句 * [MATCH](../3.ngql-guide/7.general-query-statements/2.match.md) @@ -218,33 +204,31 @@ | 模式 | 示例 | 说明 | | --------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | 匹配点 | `(v)` | 用户可以在一对括号中使用自定义变量来表示模式中的点。例如`(v)`。 | - | 匹配Tag | `MATCH (v:player) RETURN v` | 用户可以在点的右侧用`:`表示模式中的Tag。 | - | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v` | 用户可以在Tag的右侧用`{: }`表示模式中点的属性。 | - | 匹配单点ID | `MATCH (v) WHERE id(v) == 'player101' RETURN v` | 用户可以使用点ID去匹配点。`id()`函数可以检索点的ID。 | - | 匹配多点ID | `MATCH (v:player { name: 'Tim Duncan' })--(v2) WHERE id(v2) IN ["player101", "player102"] RETURN v2` | 要匹配多个点的ID,可以用`WHERE id(v) IN [vid_list]`。 | + | 匹配 Tag | `MATCH (v:player) RETURN v` | 用户可以在点的右侧用`:`表示模式中的 Tag。 | + | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v` | 用户可以在 Tag 的右侧用`{: }`表示模式中点的属性。 | + | 匹配单点 ID | `MATCH (v) WHERE id(v) == 'player101' RETURN v` | 用户可以使用点 ID 去匹配点。`id()`函数可以检索点的 ID。 | + | 匹配多点 ID | `MATCH (v:player { name: 'Tim Duncan' })--(v2) WHERE id(v2) IN ["player101", "player102"] RETURN v2` | 要匹配多个点的 ID,可以用`WHERE id(v) IN [vid_list]`。 | | 匹配连接的点 | `MATCH (v:player{name:"Tim Duncan"})--(v2) RETURN v2.name AS Name` | 用户可以使用`--`符号表示两个方向的边,并匹配这些边连接的点。用户可以在`--`符号上增加`<`或`>`符号指定边的方向。 | | 匹配路径 | `MATCH p=(v:player{name:"Tim Duncan"})-->(v2) RETURN p` | 连接起来的点和边构成了路径。用户可以使用自定义变量命名路径。 | | 匹配边 | `MATCH (v:player{name:"Tim Duncan"})-[e]-(v2) RETURN e` | 除了用`--`、`-->`、`<--`表示未命名的边之外,用户还可以在方括号中使用自定义变量命名边。例如`-[e]-`。 | - | 匹配Edge type | `MATCH ()-[e:follow]-() RETURN e` | 和点一样,用户可以用`:`表示模式中的Edge type,例如`-[e:follow]-`。 | - | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e` | 用户可以用`{: }`表示模式中Edge type的属性,例如`[e:follow{likeness:95}]`。 | - | 匹配多个Edge type | `MATCH (v:player{name:"Tim Duncan"})-[e:follow \| :serve]->(v2) RETURN e` | 使用`\|`可以匹配多个Edge type,例如`[e:follow \| :serve]`。第一个Edge type前的英文冒号(:)不可省略,后续Edge type前的英文冒号可以省略,例如`[e:follow \| serve]`。 | + | 匹配 Edge type | `MATCH ()-[e:follow]-() RETURN e` | 和点一样,用户可以用`:`表示模式中的 Edge type,例如`-[e:follow]-`。 | + | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e` | 用户可以用`{: }`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`。 | + | 匹配多个 Edge type | `MATCH (v:player{name:"Tim Duncan"})-[e:follow | :serve]->(v2) RETURN e` | 使用`|`可以匹配多个 Edge type,例如`[e:follow | :serve]`。第一个 Edge type 前的英文冒号(:)不可省略,后续 Edge type 前的英文冒号可以省略,例如`[e:follow | serve]`。 | | 匹配多条边 | `MATCH (v:player{name:"Tim Duncan"})-[]->(v2)<-[e:serve]-(v3) RETURN v2, v3` | 用户可以扩展模式,匹配路径中的多条边。 | | 匹配定长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) RETURN DISTINCT v2 AS Friends` | 用户可以在模式中使用`:*`匹配定长路径。`hop`必须是一个非负整数。 | - | 匹配变长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*1..3]->(v2) RETURN v2 AS Friends` | `minHop`:可选项。表示路径的最小长度。`minHop`必须是一个非负整数,默认值为1。
`maxHop`:必选项。表示路径的最大长度。`maxHop`必须是一个非负整数,没有默认值。 | - | 匹配多个Edge type的变长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow \| serve*2]->(v2) RETURN DISTINCT v2` | 用户可以在变长或定长模式中指定多个Edge type。`hop`、`minHop`和`maxHop`对所有Edge type都生效。 | - | 检索点或边的信息 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v`
`MATCH (v:player{name:"Tim Duncan"})-[e]->(v2) RETURN e` | 使用`RETURN { \| }`检索点或边的所有信息。 | - | 检索点ID | `MATCH (v:player{name:"Tim Duncan"}) RETURN id(v)` | 使用`id()`函数检索点ID。 | - | 检索Tag | `MATCH (v:player{name:"Tim Duncan"}) RETURN labels(v)` | 使用`labels()`函数检索点上的Tag列表。
检索列表`labels(v)`中的第N个元素,可以使用`labels(v)[n-1]`。 | - | 检索点或边的单个属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v.age` | 使用`RETURN { \| }.`检索单个属性。
使用`AS`设置属性的别名。 | + | 匹配变长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*1..3]->(v2) RETURN v2 AS Friends` | `minHop`:可选项。表示路径的最小长度。`minHop`必须是一个非负整数,默认值为 1。
`maxHop`:必选项。表示路径的最大长度。`maxHop`必须是一个非负整数,没有默认值。 | + | 匹配多个 Edge type 的变长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow | serve*2]->(v2) RETURN DISTINCT v2` | 用户可以在变长或定长模式中指定多个 Edge type。`hop`、`minHop`和`maxHop`对所有 Edge type 都生效。 | + | 检索点或边的信息 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v`
`MATCH (v:player{name:"Tim Duncan"})-[e]->(v2) RETURN e` | 使用`RETURN { | }`检索点或边的所有信息。 | + | 检索点 ID | `MATCH (v:player{name:"Tim Duncan"}) RETURN id(v)` | 使用`id()`函数检索点 ID。 | + | 检索 Tag | `MATCH (v:player{name:"Tim Duncan"}) RETURN labels(v)` | 使用`labels()`函数检索点上的 Tag 列表。
检索列表`labels(v)`中的第 N 个元素,可以使用`labels(v)[n-1]`。 | + | 检索点或边的单个属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v.age` | 使用`RETURN { | }.`检索单个属性。
使用`AS`设置属性的别名。 | | 检索点或边的所有属性 | `MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) RETURN properties(v2)` | 使用`properties()`函数检索点或边的所有属性。 | - | 检索Edge type | `MATCH p=(v:player{name:"Tim Duncan"})-[e]->() RETURN DISTINCT type(e)` | 使用`type()`函数检索匹配的Edge type。 | + | 检索 Edge type | `MATCH p=(v:player{name:"Tim Duncan"})-[e]->() RETURN DISTINCT type(e)` | 使用`type()`函数检索匹配的 Edge type。 | | 检索路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[*3]->() RETURN p` | 使用`RETURN `检索匹配路径的所有信息。 | | 检索路径中的点 | `MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) RETURN nodes(p)` | 使用`nodes()`函数检索路径中的所有点。 | | 检索路径中的边 | `MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) RETURN relationships(p)` | 使用`relationships()`函数检索路径中的所有边。 | | 检索路径长度 | `MATCH p=(v:player{name:"Tim Duncan">})-[*..2]->(v2) RETURN p AS Paths, length(p) AS Length` | 使用`length()`函数检索路径的长度。 | - - * [LOOKUP](../3.ngql-guide/7.general-query-statements/5.lookup.md) ``` @@ -255,12 +239,12 @@ | 模式 | 示例 | 说明 | | ------------------- | ------------------------------------------------------------ | ---------------------------------------------- | - | 检索点 | `LOOKUP ON player WHERE player.name == "Tony Parker" YIELD player.name AS name, player.age AS age` | 返回Tag为`player`且`name`为`Tony Parker`的点。 | - | 检索边 | `LOOKUP ON follow WHERE follow.degree == 90 YIELD follow.degree` | 返回Edge type为`follow`且`degree`为`90`的边。 | - | 通过Tag列出所有点 | `LOOKUP ON player` | 查找所有Tag为`player`的点 VID。 | - | 通过Edge type列出边 | `LOOKUP ON like` | 查找Edge type为`like`的所有边的信息。 | - | 统计点 | `LOOKUP ON player \| YIELD COUNT(*) AS Player_Number` | 统计Tag为`player`的点。 | - | 统计边 | `LOOKUP ON like \| YIELD COUNT(*) AS Like_Number` | 统计Edge type为`like`的边。 | + | 检索点 | `LOOKUP ON player WHERE player.name == "Tony Parker" YIELD player.name AS name, player.age AS age` | 返回 Tag 为`player`且`name`为`Tony Parker`的点。 | + | 检索边 | `LOOKUP ON follow WHERE follow.degree == 90 YIELD follow.degree` | 返回 Edge type 为`follow`且`degree`为`90`的边。 | + | 通过 Tag 列出所有点 | `LOOKUP ON player` | 查找所有 Tag 为`player`的点 VID。 | + | 通过 Edge type 列出边 | `LOOKUP ON like` | 查找 Edge type 为`like`的所有边的信息。 | + | 统计点 | `LOOKUP ON player | YIELD COUNT(*) AS Player_Number` | 统计 Tag 为`player`的点。 | + | 统计边 | `LOOKUP ON like | YIELD COUNT(*) AS Like_Number` | 统计 Edge type 为`like`的边。 | @@ -278,16 +262,14 @@ | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------- | - | `GO FROM "player102" OVER serve` | 返回player102所属队伍。 | - | `GO 2 STEPS FROM "player102" OVER follow` | 返回距离player102两跳的朋友。 | + | `GO FROM "player102" OVER serve` | 返回 player102 所属队伍。 | + | `GO 2 STEPS FROM "player102" OVER follow` | 返回距离 player102 两跳的朋友。 | | `GO FROM "player100", "player102" OVER serve WHERE properties(edge).start_year > 1995 YIELD DISTINCT properties($$).name AS team_name, properties(edge).start_year AS start_year, properties($^).name AS player_name` | 添加过滤条件。 | - | `GO FROM "player100" OVER follow, serve YIELD properties(edge).degree, properties(edge).start_year` | 遍历多个Edge type。属性没有值时,会显示`UNKNOWN_PROP`。 | - | `GO FROM "player100" OVER follow REVERSELY YIELD src(edge) AS destination` | 返回player100入方向的邻居点。 | - | `GO FROM "player100" OVER follow REVERSELY YIELD src(edge) AS id \| GO FROM $-.id OVER serve WHERE properties($^).age > 20 YIELD properties($^).name AS FriendOf, properties($$).name AS Team` | 查询player100的朋友和朋友所属队伍。 | - | `GO FROM "player102" OVER follow YIELD dst(edge) AS both` | 返回player102所有邻居点。 | - | `GO 2 STEPS FROM "player100" OVER follow YIELD src(edge) AS src, dst(edge) AS dst, properties($$).age AS age \| GROUP BY $-.dst YIELD $-.dst AS dst, collect_set($-.src) AS src, collect($-.age) AS age` | 根据年龄分组。 | - - + | `GO FROM "player100" OVER follow, serve YIELD properties(edge).degree, properties(edge).start_year` | 遍历多个 Edge type。属性没有值时,会显示`UNKNOWN_PROP`。 | + | `GO FROM "player100" OVER follow REVERSELY YIELD src(edge) AS destination` | 返回 player100 入方向的邻居点。 | + | `GO FROM "player100" OVER follow REVERSELY YIELD src(edge) AS id | GO FROM $-.id OVER serve WHERE properties($^).age > 20 YIELD properties($^).name AS FriendOf, properties($$).name AS Team` | 查询 player100 的朋友和朋友所属队伍。 | + | `GO FROM "player102" OVER follow YIELD dst(edge) AS both` | 返回 player102 所有邻居点。 | + | `GO 2 STEPS FROM "player100" OVER follow YIELD src(edge) AS src, dst(edge) AS dst, properties($$).age AS age | GROUP BY $-.dst YIELD $-.dst AS dst, collect_set($-.src) AS src, collect($-.age) AS age` | 根据年龄分组。 | * [FETCH](../3.ngql-guide/7.general-query-statements/4.fetch.md) @@ -299,17 +281,17 @@ | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | - | `FETCH PROP ON player "player100"` | 在`FETCH`语句中指定Tag获取对应点的属性值。 | + | `FETCH PROP ON player "player100"` | 在`FETCH`语句中指定 Tag 获取对应点的属性值。 | | `FETCH PROP ON player "player100" YIELD player.name AS name` | 使用`YIELD`子句指定返回的属性。 | - | `FETCH PROP ON player "player101", "player102", "player103"` | 指定多个点ID获取多个点的属性值,点之间用英文逗号(,)分隔。 | - | `FETCH PROP ON player, t1 "player100", "player103"` | 在`FETCH`语句中指定多个Tag获取属性值。Tag之间用英文逗号(,)分隔。 | + | `FETCH PROP ON player "player101", "player102", "player103"` | 指定多个点 ID 获取多个点的属性值,点之间用英文逗号(,)分隔。 | + | `FETCH PROP ON player, t1 "player100", "player103"` | 在`FETCH`语句中指定多个 Tag 获取属性值。Tag 之间用英文逗号(,)分隔。 | | `FETCH PROP ON * "player100", "player106", "team200"` | 在`FETCH`语句中使用`*`获取当前图空间所有标签里,点的属性值。 | | `FETCH PROP ON serve "player102" -> "player106" YIELD dst(edge)` | 语法:`FETCH PROP ON -> [@] [, -> ...] [YIELD ]` | - | `FETCH PROP ON serve "player100" -> "team204"` | 获取连接player100和team204的边serve的所有属性值。 | + | `FETCH PROP ON serve "player100" -> "team204"` | 获取连接 player100 和 team204 的边 serve 的所有属性值。 | | `FETCH PROP ON serve "player100" -> "team204" YIELD serve.start_year` | 使用`YIELD`子句指定返回的属性。 | - | `FETCH PROP ON serve "player100" -> "team204", "player133" -> "team202"` | 指定多个边模式(` -> [@]`)获取多个边的属性值。模式之间用英文逗号(,)分隔。 | - | `FETCH PROP ON serve "player100" -> "team204"@1` | 要获取rank不为0的边,请在FETCH语句中设置rank。 | - | `GO FROM "player101" OVER follow YIELD follow._src AS s, follow._dst AS d \| FETCH PROP ON follow $-.s -> $-.d YIELD follow.degree` | 返回从点player101开始的follow边的degree值。 | + | `FETCH PROP ON serve "player100" -> "team204", "player133" -> "team202"` | 指定多个边模式 (` -> [@]`) 获取多个边的属性值。模式之间用英文逗号(,)分隔。 | + | `FETCH PROP ON serve "player100" -> "team204"@1` | 要获取 rank 不为 0 的边,请在 FETCH 语句中设置 rank。 | + | `GO FROM "player101" OVER follow YIELD follow._src AS s, follow._dst AS d | FETCH PROP ON follow $-.s -> $-.d YIELD follow.degree` | 返回从点 player101 开始的 follow 边的 degree 值。 | | `$var = GO FROM "player101" OVER follow YIELD follow._src AS s, follow._dst AS d; FETCH PROP ON follow $var.s -> $var.d YIELD follow.degree` | 自定义变量构建查询。 | @@ -335,100 +317,87 @@ | [SHOW CHARSET](../3.ngql-guide/7.general-query-statements/6.show/1.show-charset.md) | `SHOW CHARSET` | `SHOW CHARSET` | 显示当前的字符集。 | | [SHOW COLLATION](../3.ngql-guide/7.general-query-statements/6.show/2.show-collation.md) | `SHOW COLLATION` | `SHOW COLLATION` | 显示当前的排序规则。 | | [SHOW CREATE SPACE](../3.ngql-guide/7.general-query-statements/6.show/4.show-create-space.md) | `SHOW CREATE SPACE ` | `SHOW CREATE SPACE basketballplayer` | 显示指定图空间的创建语句。 | - | [SHOW CREATE TAG/EDGE](../3.ngql-guide/7.general-query-statements/6.show/5.show-create-tags-edges.md) | `SHOW CREATE {TAG \| EDGE }` | `SHOW CREATE TAG player` | 显示指定Tag/Edge type的基本信息。 | - | [SHOW HOSTS](../3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md) | `SHOW HOSTS [GRAPH \| STORAGE \| META]` | `SHOW HOSTS`
`SHOW HOSTS GRAPH` | 显示Graph、Storage、Meta服务主机信息、版本信息。 | - | [SHOW INDEX STATUS](../3.ngql-guide/7.general-query-statements/6.show/7.show-index-status.md) | `SHOW {TAG \| EDGE} INDEX STATUS` | `SHOW TAG INDEX STATUS` | 重建原生索引的作业状态,以便确定重建索引是否成功。 | - | [SHOW INDEXES](../3.ngql-guide/7.general-query-statements/6.show/8.show-indexes.md) | `SHOW {TAG \| EDGE} INDEXES` | `SHOW TAG INDEXES` | 列出当前图空间内的所有Tag和Edge type(包括属性)的索引。 | + | [SHOW CREATE TAG/EDGE](../3.ngql-guide/7.general-query-statements/6.show/5.show-create-tag-edge.md) | `SHOW CREATE {TAG | EDGE }` | `SHOW CREATE TAG player` | 显示指定 Tag/Edge type 的基本信息。 | + | [SHOW HOSTS](../3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md) | `SHOW HOSTS [GRAPH | STORAGE | META]` | `SHOW HOSTS`
`SHOW HOSTS GRAPH` | 显示 Graph、Storage、Meta 服务主机信息、版本信息。 | + | [SHOW INDEX STATUS](../3.ngql-guide/7.general-query-statements/6.show/7.show-index-status.md) | `SHOW {TAG | EDGE} INDEX STATUS` | `SHOW TAG INDEX STATUS` | 重建原生索引的作业状态,以便确定重建索引是否成功。 | + | [SHOW INDEXES](../3.ngql-guide/7.general-query-statements/6.show/8.show-indexes.md) | `SHOW {TAG | EDGE} INDEXES` | `SHOW TAG INDEXES` | 列出当前图空间内的所有 Tag 和 Edge type(包括属性)的索引。 | | [SHOW PARTS](../3.ngql-guide/7.general-query-statements/6.show/9.show-parts.md) | `SHOW PARTS []` | `SHOW PARTS` | 显示图空间中指定分片或所有分片的信息。 | | [SHOW ROLES](../3.ngql-guide/7.general-query-statements/6.show/10.show-roles.md) | `SHOW ROLES IN ` | `SHOW ROLES in basketballplayer` | 显示分配给用户的角色信息。 | | [SHOW SNAPSHOTS](../3.ngql-guide/7.general-query-statements/6.show/11.show-snapshots.md) | `SHOW SNAPSHOTS` | `SHOW SNAPSHOTS` | 显示所有快照信息。 | | [SHOW SPACES](../3.ngql-guide/7.general-query-statements/6.show/12.show-spaces.md) | `SHOW SPACES` | `SHOW SPACES` | 显示现存的图空间。 | | [SHOW STATS](../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) | `SHOW STATS` | `SHOW STATS` | 显示最近`STATS`作业收集的图空间统计信息。 | - | [SHOW TAGS/EDGES](../3.ngql-guide/7.general-query-statements/6.show/15.show-tags-edges.md) | `SHOW TAGS \| EDGES` | `SHOW TAGS`、`SHOW EDGES` | 显示当前图空间内的所有Tag/Edge type。 | + | [SHOW TAGS/EDGES](../3.ngql-guide/7.general-query-statements/6.show/15.show-tags-edges.md) | `SHOW TAGS | EDGES` | `SHOW TAGS`、`SHOW EDGES` | 显示当前图空间内的所有 Tag/Edge type。 | | [SHOW USERS](../3.ngql-guide/7.general-query-statements/6.show/16.show-users.md) | `SHOW USERS` | `SHOW USERS` | 显示用户信息。 | | [SHOW SESSIONS](../3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md) | `SHOW SESSIONS ` | ` SHOW SESSIONS` | 显示所有会话信息。 | - | [SHOW SESSIONS](../3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md) | `SHOW SESSION ` | `SHOW SESSION 1623304491050858` | 指定会话ID进行查看。 | - | [SHOW QUERIES](../3.ngql-guide/7.general-query-statements/6.show/18.show-queries.md) | `SHOW [ALL] QUERIES` | `SHOW QUERIES` | 查看当前Session中正在执行的查询请求信息。 | - | [SHOW META LEADER](../3.ngql-guide/7.general-query-statements/6.show/19.show-meta-leader.md) | `SHOW META LEADER` | `SHOW META LEADER` | 显示当前Meta集群的leader信息。 | - + | [SHOW SESSIONS](../3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md) | `SHOW SESSION ` | `SHOW SESSION 1623304491050858` | 指定会话 ID 进行查看。 | + | [SHOW QUERIES](../3.ngql-guide/7.general-query-statements/6.show/18.show-queries.md) | `SHOW [ALL] QUERIES` | `SHOW QUERIES` | 查看当前 Session 中正在执行的查询请求信息。 | + | [SHOW META LEADER](../3.ngql-guide/7.general-query-statements/6.show/19.show-meta-leader.md) | `SHOW META LEADER` | `SHOW META LEADER` | 显示当前 Meta 集群的 leader 信息。 | ## 子句和选项 | 子句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [GROUP BY](../3.ngql-guide/8.clauses-and-options/group-by.md) | ` GROUP BY YIELD , ` | `GO FROM "player100" OVER follow BIDIRECT YIELD $$.player.name as Name \| GROUP BY $-.Name YIELD $-.Name as Player, count(*) AS Name_Count` | 查找所有连接到player100的点,并根据他们的姓名进行分组,返回姓名的出现次数。 | -| [LIMIT](../3.ngql-guide/8.clauses-and-options/limit.md) | `YIELD [\| LIMIT [,] ]` | `O FROM "player100" OVER follow REVERSELY YIELD $$.player.name AS Friend, $$.player.age AS Age \| ORDER BY $-.Age, $-.Friend \| LIMIT 1, 3` | 从排序结果中返回第2行开始的3行数据。 | +| [GROUP BY](../3.ngql-guide/8.clauses-and-options/group-by.md) | ` GROUP BY YIELD , ` | `GO FROM "player100" OVER follow BIDIRECT YIELD $$.player.name as Name | GROUP BY $-.Name YIELD $-.Name as Player, count(*) AS Name_Count` | 查找所有连接到 player100 的点,并根据他们的姓名进行分组,返回姓名的出现次数。 | +| [LIMIT](../3.ngql-guide/8.clauses-and-options/limit.md) | `YIELD [| LIMIT [,] ]` | `O FROM "player100" OVER follow REVERSELY YIELD $$.player.name AS Friend, $$.player.age AS Age | ORDER BY $-.Age, $-.Friend | LIMIT 1, 3` | 从排序结果中返回第 2 行开始的 3 行数据。 | | [SKIP](../3.ngql-guide/8.clauses-and-options/limit.md) | `RETURN [SKIP ] [LIMIT ]` | `MATCH (v:player{name:"Tim Duncan"}) --> (v2) RETURN v2.name AS Name, v2.age AS Age ORDER BY Age DESC SKIP 1` | 用户可以单独使用`SKIP `设置偏移量,后面不需要添加`LIMIT `。 | -| [ORDER BY](../3.ngql-guide/8.clauses-and-options/order-by.md) | ` ORDER BY [ASC \| DESC] [, [ASC \| DESC] ...]` | `FETCH PROP ON player "player100", "player101", "player102", "player103" YIELD player.age AS age, player.name AS name \| ORDER BY $-.age ASC, $-.name DESC` | `ORDER BY`子句指定输出结果的排序规则。 | -| [RETURN](../3.ngql-guide/8.clauses-and-options/return.md) | `RETURN {\|\|.\|.\|...}` | `MATCH (v:player) RETURN v.name, v.age LIMIT 3` | 返回点的属性为`name`和`age`的前三行值。 | -| [TTL](../3.ngql-guide/8.clauses-and-options/ttl-options.md) | ``CREATE TAG ( , , ...) ttl_duration= , ttl_col = `` | `CREATE TAG t2(a int, b int, c string) ttl_duration= 100, ttl_col = "a"` | 创建Tag并设置TTL选项。 | -| [WHERE](../3.ngql-guide/8.clauses-and-options/where.md) | `WHERE {. {>\|==\|<\|...} ...}` | `MATCH (v:player) WHERE v.name == "Tim Duncan" XOR (v.age < 30 AND v.name == "Yao Ming") OR NOT (v.name == "Yao Ming" OR v.name == "Tim Duncan") RETURN v.name, v.age` | `WHERE`子句可以根据条件过滤输出结果,通常用于`GO`和`LOOKUP`语句,`MATCH`和`WITH`语句。 | -| [YIELD](../3.ngql-guide/8.clauses-and-options/yield.md) | `YIELD [DISTINCT] [AS ] [, [AS ] ...] [WHERE ];` | `GO FROM "player100" OVER follow YIELD dst(edge) AS ID \| FETCH PROP ON player $-.ID YIELD player.age AS Age \| YIELD AVG($-.Age) as Avg_age, count(*)as Num_friends` | 查找player100关注的player,并计算他们的平均年龄。 | -| [WITH](../3.ngql-guide/8.clauses-and-options/with.md) | `MATCH $expressions WITH {nodes()\|labels()\|...}` | `MATCH p=(v:player{name:"Tim Duncan"})--() WITH nodes(p) AS n UNWIND n AS n1 RETURN DISTINCT n1` | `WITH`子句可以获取并处理查询前半部分的结果,并将处理结果作为输入传递给查询的后半部分。 | - - +| [ORDER BY](../3.ngql-guide/8.clauses-and-options/order-by.md) | ` ORDER BY [ASC | DESC] [, [ASC | DESC] ...]` | `FETCH PROP ON player "player100", "player101", "player102", "player103" YIELD player.age AS age, player.name AS name | ORDER BY $-.age ASC, $-.name DESC` | `ORDER BY`子句指定输出结果的排序规则。 | +| [RETURN](../3.ngql-guide/8.clauses-and-options/return.md) | `RETURN {||.|.|...}` | `MATCH (v:player) RETURN v.name, v.age LIMIT 3` | 返回点的属性为`name`和`age`的前三行值。 | +| [TTL](../3.ngql-guide/8.clauses-and-options/ttl-options.md) | ``CREATE TAG ( , , ...) ttl_duration= , ttl_col = `` | `CREATE TAG t2(a int, b int, c string) ttl_duration= 100, ttl_col = "a"` | 创建 Tag 并设置 TTL 选项。 | +| [WHERE](../3.ngql-guide/8.clauses-and-options/where.md) | `WHERE {. {>|==|<|...} ...}` | `MATCH (v:player) WHERE v.name == "Tim Duncan" XOR (v.age < 30 AND v.name == "Yao Ming") OR NOT (v.name == "Yao Ming" OR v.name == "Tim Duncan") RETURN v.name, v.age` | `WHERE`子句可以根据条件过滤输出结果,通常用于`GO`和`LOOKUP`语句,`MATCH`和`WITH`语句。 | +| [YIELD](../3.ngql-guide/8.clauses-and-options/yield.md) | `YIELD [DISTINCT] [AS ] [, [AS ] ...] [WHERE ];` | `GO FROM "player100" OVER follow YIELD dst(edge) AS ID | FETCH PROP ON player $-.ID YIELD player.age AS Age | YIELD AVG($-.Age) as Avg_age, count(*)as Num_friends` | 查找 player100 关注的 player,并计算他们的平均年龄。 | +| [WITH](../3.ngql-guide/8.clauses-and-options/with.md) | `MATCH $expressions WITH {nodes()|labels()|...}` | `MATCH p=(v:player{name:"Tim Duncan"})--() WITH nodes(p) AS n UNWIND n AS n1 RETURN DISTINCT n1` | `WITH`子句可以获取并处理查询前半部分的结果,并将处理结果作为输入传递给查询的后半部分。 | ## 图空间语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ----------------------------------------------------- | ------------------------------------------------------------ | -| [CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md) | `CREATE SPACE [IF NOT EXISTS] ( [partition_num = ,] [replica_factor = ,] vid_type = {FIXED_STRING()\| INT[64]} ) [COMMENT = '']` | `CREATE SPACE my_space_1 (vid_type=FIXED_STRING(30))` | 创建一个新的图空间。 | -| [CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md) | `CREATE SPACE AS ` | `CREATE SPACE my_space_4 as my_space_3` | 克隆现有图空间的Schema | +| [CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md) | `CREATE SPACE [IF NOT EXISTS] ( [partition_num = ,] [replica_factor = ,] vid_type = {FIXED_STRING()| INT[64]} ) [COMMENT = '']` | `CREATE SPACE my_space_1 (vid_type=FIXED_STRING(30))` | 创建一个新的图空间。 | +| [CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md) | `CREATE SPACE AS ` | `CREATE SPACE my_space_4 as my_space_3` | 克隆现有图空间的 Schema | | [USE](../3.ngql-guide/9.space-statements/2.use-space.md) | `USE ` | `USE space1` | 指定一个图空间,或切换到另一个图空间,将其作为后续查询的工作空间。 | -| [SHOW SPACES](../3.ngql-guide/9.space-statements/3.show-spaces.md) | `SHOW SPACES` | `SHOW SPACES` | 列出Nebula Graph示例中的所有图空间。 | +| [SHOW SPACES](../3.ngql-guide/9.space-statements/3.show-spaces.md) | `SHOW SPACES` | `SHOW SPACES` | 列出 Nebula Graph 示例中的所有图空间。 | | [DESCRIBE SPACE](../3.ngql-guide/9.space-statements/4.describe-space.md) | `DESC[RIBE] SPACE ` | `DESCRIBE SPACE basketballplayer` | 显示指定图空间的信息。 | | [DROP SPACE](../3.ngql-guide/9.space-statements/5.drop-space.md) | `DROP SPACE [IF EXISTS] ` | `DROP SPACE basketballplayer` | 删除指定图空间的所有内容。 | - - -## TAG语句 +## TAG 语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [CREATE TAG](../3.ngql-guide/10.tag-statements/1.create-tag.md) | `CREATE TAG [IF NOT EXISTS] ( [NULL \| NOT NULL] [DEFAULT ] [COMMENT ''] [{, [NULL \| NOT NULL] [DEFAULT ] [COMMENT '']} ...] ) [TTL_DURATION = ] [TTL_COL = ] [COMMENT = ''] ` | `CREATE TAG woman(name string, age int, married bool, salary double, create_time timestamp) TTL_DURATION = 100, TTL_COL = "create_time"` | 通过指定名称创建一个Tag。 | -| [DROP TAG](../3.ngql-guide/10.tag-statements/2.drop-tag.md) | `DROP TAG [IF EXISTS] ` | `CREATE TAG test(p1 string, p2 int)` | 删除当前工作空间内所有点上的指定Tag。 | -| [ALTER TAG](../3.ngql-guide/10.tag-statements/3.alter-tag.md) | `ALTER TAG [, alter_definition] ...] [ttl_definition [, ttl_definition] ... ] [COMMENT = '']` | `ALTER TAG t1 ADD (p3 int, p4 string)` | 修改Tag的结构。例如增删属性、修改数据类型,也可以为属性设置、修改[TTL](../3.ngql-guide/8.clauses-and-options/ttl-options.md(Time-To-Live)。 | -| [SHOW TAGS](../3.ngql-guide/10.tag-statements/4.show-tags.md) | `SHOW TAGS` | `SHOW TAGS` | 显示当前图空间内的所有Tag名称。 | -| [DESCRIBE TAG](../3.ngql-guide/10.tag-statements/5.describe-tag.md) | `DESC[RIBE] TAG ` | `DESCRIBE TAG player` | 指定Tag的详细信息,例如字段名称、数据类型等。 | -| [DELETE TAG](../3.ngql-guide/10.tag-statements/6.delete-tag.md) | `DELETE TAG FROM ` | `DELETE TAG test1 FROM "test"` | 删除指定点上的指定Tag。 | - - +| [CREATE TAG](../3.ngql-guide/10.tag-statements/1.create-tag.md) | `CREATE TAG [IF NOT EXISTS] ( [NULL | NOT NULL] [DEFAULT ] [COMMENT ''] [{, [NULL | NOT NULL] [DEFAULT ] [COMMENT '']} ...] ) [TTL_DURATION = ] [TTL_COL = ] [COMMENT = ''] ` | `CREATE TAG woman(name string, age int, married bool, salary double, create_time timestamp) TTL_DURATION = 100, TTL_COL = "create_time"` | 通过指定名称创建一个 Tag。 | +| [DROP TAG](../3.ngql-guide/10.tag-statements/2.drop-tag.md) | `DROP TAG [IF EXISTS] ` | `CREATE TAG test(p1 string, p2 int)` | 删除当前工作空间内所有点上的指定 Tag。 | +| [ALTER TAG](../3.ngql-guide/10.tag-statements/3.alter-tag.md) | `ALTER TAG [, alter_definition] ...] [ttl_definition [, ttl_definition] ... ] [COMMENT = '']` | `ALTER TAG t1 ADD (p3 int, p4 string)` | 修改 Tag 的结构。例如增删属性、修改数据类型,也可以为属性设置、修改 [TTL](../3.ngql-guide/8.clauses-and-options/ttl-options.md)(Time-To-Live)。 | +| [SHOW TAGS](../3.ngql-guide/10.tag-statements/4.show-tags.md) | `SHOW TAGS` | `SHOW TAGS` | 显示当前图空间内的所有 Tag 名称。 | +| [DESCRIBE TAG](../3.ngql-guide/10.tag-statements/5.describe-tag.md) | `DESC[RIBE] TAG ` | `DESCRIBE TAG player` | 指定 Tag 的详细信息,例如字段名称、数据类型等。 | +| [DELETE TAG](../3.ngql-guide/10.tag-statements/6.delete-tag.md) | `DELETE TAG FROM ` | `DELETE TAG test1 FROM "test"` | 删除指定点上的指定 Tag。 | -## Edge type语句 +## Edge type 语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | --------------------------------------------------- | -| [CREATE EDGE](../3.ngql-guide/11.edge-type-statements/1.create-edge.md) | `CREATE EDGE [IF NOT EXISTS] ( [NULL \| NOT NULL] [DEFAULT ] [COMMENT ''] [{, [NULL \| NOT NULL] [DEFAULT ] [COMMENT '']} ...] ) [TTL_DURATION = ] [TTL_COL = ] [COMMENT = ''] ` | `CREATE EDGE e1(p1 string, p2 int, p3 timestamp) TTL_DURATION = 100, TTL_COL = "p2"` | 指定名称创建一个Edge type。 | -| [DROP EDGE](../3.ngql-guide/11.edge-type-statements/2.drop-edge.md) | `DROP EDGE [IF EXISTS] ` | `DROP EDGE e1` | 删除当前工作空间内的指定Edge type。 | -| [ALTER EDGE](../3.ngql-guide/11.edge-type-statements/3.alter-edge.md) | `ALTER EDGE [, alter_definition] ...] [ttl_definition [, ttl_definition] ... ] [COMMENT = '']` | `ALTER EDGE e1 ADD (p3 int, p4 string)` | 修改Edge type的结构。 | -| [SHOW EDGES](../3.ngql-guide/11.edge-type-statements/4.show-edges.md) | `SHOW EDGES` | `SHOW EDGES` | 显示当前图空间内的所有Edge type名称。 | -| [DESCRIBE EDGE](../3.ngql-guide/11.edge-type-statements/5.describe-edge.md) | `DESC[RIBE] EDGE ` | `DESCRIBE EDGE follow` | 指定Edge type的详细信息,例如字段名称、数据类型等。 | - - +| [CREATE EDGE](../3.ngql-guide/11.edge-type-statements/1.create-edge.md) | `CREATE EDGE [IF NOT EXISTS] ( [NULL | NOT NULL] [DEFAULT ] [COMMENT ''] [{, [NULL | NOT NULL] [DEFAULT ] [COMMENT '']} ...] ) [TTL_DURATION = ] [TTL_COL = ] [COMMENT = ''] ` | `CREATE EDGE e1(p1 string, p2 int, p3 timestamp) TTL_DURATION = 100, TTL_COL = "p2"` | 指定名称创建一个 Edge type。 | +| [DROP EDGE](../3.ngql-guide/11.edge-type-statements/2.drop-edge.md) | `DROP EDGE [IF EXISTS] ` | `DROP EDGE e1` | 删除当前工作空间内的指定 Edge type。 | +| [ALTER EDGE](../3.ngql-guide/11.edge-type-statements/3.alter-edge.md) | `ALTER EDGE [, alter_definition] ...] [ttl_definition [, ttl_definition] ... ] [COMMENT = '']` | `ALTER EDGE e1 ADD (p3 int, p4 string)` | 修改 Edge type 的结构。 | +| [SHOW EDGES](../3.ngql-guide/11.edge-type-statements/4.show-edges.md) | `SHOW EDGES` | `SHOW EDGES` | 显示当前图空间内的所有 Edge type 名称。 | +| [DESCRIBE EDGE](../3.ngql-guide/11.edge-type-statements/5.describe-edge.md) | `DESC[RIBE] EDGE ` | `DESCRIBE EDGE follow` | 指定 Edge type 的详细信息,例如字段名称、数据类型等。 | ## 点语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md) | `INSERT VERTEX [IF NOT EXISTS] () [, (), ...] {VALUES \| VALUE} VID: ([, ])` | `INSERT VERTEX t2 (name, age) VALUES "13":("n3", 12), "14":("n4", 8)` | 在Nebula Graph实例的指定图空间中插入一个或多个点。 | +| [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md) | `INSERT VERTEX [IF NOT EXISTS] () [, (), ...] {VALUES | VALUE} VID: ([, ])` | `INSERT VERTEX t2 (name, age) VALUES "13":("n3", 12), "14":("n4", 8)` | 在 Nebula Graph 实例的指定图空间中插入一个或多个点。 | | [DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md) | `DELETE VERTEX [, ...]` | `DELETE VERTEX "team1"` | 删除点,以及点关联的出边和入边。 | -| [UPDATE VERTEX](../3.ngql-guide/12.vertex-statements/2.update-vertex.md) | `UPDATE VERTEX ON SET [WHEN ] [YIELD ]` | `UPDATE VERTEX ON player "player101" SET age = age + 2 ` | 修改点上Tag的属性值。 | +| [UPDATE VERTEX](../3.ngql-guide/12.vertex-statements/2.update-vertex.md) | `UPDATE VERTEX ON SET [WHEN ] [YIELD ]` | `UPDATE VERTEX ON player "player101" SET age = age + 2 ` | 修改点上 Tag 的属性值。 | | [UPSERT VERTEX](../3.ngql-guide/12.vertex-statements/3.upsert-vertex.md) | `UPSERT VERTEX ON SET [WHEN ] [YIELD ]` | `UPSERT VERTEX ON player "player667" SET age = 31` | 结合`UPDATE`和`INSERT`,如果点存在,会修改点的属性值;如果点不存在,会插入新的点。 | - - ## 边语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md) | `INSERT EDGE [IF NOT EXISTS] ( ) {VALUES \| VALUE} -> [@] : ( ) [, -> [@] : ( ), ...]` | `INSERT EDGE e2 (name, age) VALUES "11"->"13":("n1", 1)` | 在Nebula Graph实例的指定图空间中插入一条或多条边。 | +| [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md) | `INSERT EDGE [IF NOT EXISTS] ( ) {VALUES | VALUE} -> [@] : ( ) [, -> [@] : ( ), ...]` | `INSERT EDGE e2 (name, age) VALUES "11"->"13":("n1", 1)` | 在 Nebula Graph 实例的指定图空间中插入一条或多条边。 | | [DELETE EDGE](../3.ngql-guide/12.vertex-statements/3.upsert-vertex.md) | `DELETE EDGE -> [@] [, -> [@] ...]` | `DELETE EDGE serve "player100" -> "team204"@0` | 删除边。一次可以删除一条或多条边。 | -| [UPDATE EDGE](../3.ngql-guide/13.edge-statements/2.update-edge.md) | `UPDATE EDGE ON -> [@] SET [WHEN ] [YIELD ]` | `UPDATE EDGE ON serve "player100" -> "team204"@0 SET start_year = start_year + 1` | 修改边上Edge type的属性。 | +| [UPDATE EDGE](../3.ngql-guide/13.edge-statements/2.update-edge.md) | `UPDATE EDGE ON -> [@] SET [WHEN ] [YIELD ]` | `UPDATE EDGE ON serve "player100" -> "team204"@0 SET start_year = start_year + 1` | 修改边上 Edge type 的属性。 | | [UPSERT EDGE](../3.ngql-guide/12.vertex-statements/3.upsert-vertex.md) | `UPSERT EDGE ON -> [@rank] SET [WHEN ] [YIELD ]` | `UPSERT EDGE on serve "player666" -> "team200"@0 SET end_year = 2021` | 结合`UPDATE`和`INSERT`,如果边存在,会更新边的属性;如果边不存在,会插入新的边。 | - - ## 索引 * 原生索引 @@ -437,13 +406,13 @@ | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------- | ------------------------------------------------------------ | - | [CREATE INDEX](../3.ngql-guide/14.native-index-statements/1.create-native-index.md) | `CREATE {TAG \| EDGE} INDEX [IF NOT EXISTS] ON { \| } ([]) [COMMENT = '']` | `CREATE TAG INDEX player_index on player()` | 对Tag、EdgeType或其属性创建原生索引。 | - | [SHOW CREATE INDEX](../3.ngql-guide/14.native-index-statements/2.1.show-create-index.md) | `SHOW CREATE {TAG \| EDGE} INDEX ` | `show create tag index index_2` | 创建Tag或者Edge type时使用的nGQL语句,其中包含索引的详细信息,例如其关联的属性。 | - | [SHOW INDEXES](../3.ngql-guide/14.native-index-statements/2.show-native-indexes.md) | `SHOW {TAG \| EDGE} INDEXES` | `SHOW TAG INDEXES` | 列出当前图空间内的所有Tag和Edge type(包括属性)的索引。 | - | [DESCRIBE INDEX](../3.ngql-guide/14.native-index-statements/3.describe-native-index.md) | `DESCRIBE {TAG \| EDGE} INDEX ` | `DESCRIBE TAG INDEX player_index_0` | 查看指定索引的信息,包括索引的属性名称(Field)和数据类型(Type)。 | - | [REBUILD INDEX](../3.ngql-guide/14.native-index-statements/4.rebuild-native-index.md) | `REBUILD {TAG \| EDGE} INDEX []` | `REBUILD TAG INDEX single_person_index` | 重建索引。索引功能不会自动对其创建之前已存在的存量数据生效。 | - | [SHOW INDEX STATUS](../3.ngql-guide/14.native-index-statements/5.show-native-index-status.md) | `SHOW {TAG \| EDGE} INDEX STATUS` | `SHOW TAG INDEX STATUS` | 查看索引名称和对应的状态。 | - | [DROP INDEX](../3.ngql-guide/14.native-index-statements/6.drop-native-index.md) | `DROP {TAG \| EDGE} INDEX [IF EXISTS] ` | `DROP TAG INDEX player_index_0` | 删除当前图空间中已存在的索引。 | + | [CREATE INDEX](../3.ngql-guide/14.native-index-statements/1.create-native-index.md) | `CREATE {TAG | EDGE} INDEX [IF NOT EXISTS] ON { | } ([]) [COMMENT = '']` | `CREATE TAG INDEX player_index on player()` | 对 Tag、EdgeType 或其属性创建原生索引。 | + | [SHOW CREATE INDEX](../3.ngql-guide/14.native-index-statements/2.1.show-create-index.md) | `SHOW CREATE {TAG | EDGE} INDEX ` | `show create tag index index_2` | 创建 Tag 或者 Edge type 时使用的 nGQL 语句,其中包含索引的详细信息,例如其关联的属性。 | + | [SHOW INDEXES](../3.ngql-guide/14.native-index-statements/2.show-native-indexes.md) | `SHOW {TAG | EDGE} INDEXES` | `SHOW TAG INDEXES` | 列出当前图空间内的所有 Tag 和 Edge type(包括属性)的索引。 | + | [DESCRIBE INDEX](../3.ngql-guide/14.native-index-statements/3.describe-native-index.md) | `DESCRIBE {TAG | EDGE} INDEX ` | `DESCRIBE TAG INDEX player_index_0` | 查看指定索引的信息,包括索引的属性名称(Field)和数据类型(Type)。 | + | [REBUILD INDEX](../3.ngql-guide/14.native-index-statements/4.rebuild-native-index.md) | `REBUILD {TAG | EDGE} INDEX []` | `REBUILD TAG INDEX single_person_index` | 重建索引。索引功能不会自动对其创建之前已存在的存量数据生效。 | + | [SHOW INDEX STATUS](../3.ngql-guide/14.native-index-statements/5.show-native-index-status.md) | `SHOW {TAG | EDGE} INDEX STATUS` | `SHOW TAG INDEX STATUS` | 查看索引名称和对应的状态。 | + | [DROP INDEX](../3.ngql-guide/14.native-index-statements/6.drop-native-index.md) | `DROP {TAG | EDGE} INDEX [IF EXISTS] ` | `DROP TAG INDEX player_index_0` | 删除当前图空间中已存在的索引。 | @@ -451,34 +420,28 @@ | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | - | `SIGN IN TEXT SERVICE [( [,, ]), (), ...]` | `SIGN IN TEXT SERVICE (127.0.0.1:9200)` | Nebula Graph的全文索引是基于[Elasticsearch](https://en.wikipedia.org/wiki/Elasticsearch)实现,部署Elasticsearch集群之后,可以使用`SIGN IN`语句登录Elasticsearch客户端。 | + | `SIGN IN TEXT SERVICE [( [,, ]), (), ...]` | `SIGN IN TEXT SERVICE (127.0.0.1:9200)` | Nebula Graph 的全文索引是基于 [Elasticsearch](https://en.wikipedia.org/wiki/Elasticsearch) 实现,部署 Elasticsearch 集群之后,可以使用`SIGN IN`语句登录 Elasticsearch 客户端。 | | `SHOW TEXT SEARCH CLIENTS` | `SHOW TEXT SEARCH CLIENTS` | 列出文本搜索客户端。 | | `SIGN OUT TEXT SERVICE` | `SIGN OUT TEXT SERVICE` | 退出所有文本搜索客户端。 | - | `CREATE FULLTEXT {TAG \| EDGE} INDEX ON { \| } ([])` | `CREATE FULLTEXT TAG INDEX nebula_index_1 ON player(name)` | 创建全文索引。 | + | `CREATE FULLTEXT {TAG | EDGE} INDEX ON { | } ([])` | `CREATE FULLTEXT TAG INDEX nebula_index_1 ON player(name)` | 创建全文索引。 | | `SHOW FULLTEXT INDEXES` | `SHOW FULLTEXT INDEXES` | 显示全文索引。 | | `REBUILD FULLTEXT INDEX` | `REBUILD FULLTEXT INDEX` | 重建全文索引。 | | `DROP FULLTEXT INDEX ` | `DROP FULLTEXT INDEX nebula_index_1` | 删除全文索引。 | - | `LOOKUP ON { \| } WHERE [YIELD ]` | `LOOKUP ON player WHERE FUZZY(player.name, "Tim Dunncan", AUTO, OR) YIELD player.name` | 使用查询选项。 | - - + | `LOOKUP ON { | } WHERE [YIELD ]` | `LOOKUP ON player WHERE FUZZY(player.name, "Tim Dunncan", AUTO, OR) YIELD player.name` | 使用查询选项。 | ## 子图和路径 | 类型 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [子图](../3.ngql-guide/16.subgraph-and-path/1.get-subgraph.md) | `GET SUBGRAPH [WITH PROP] [ STEPS] FROM {, ...} [{IN \| OUT \| BOTH} , ...] [YIELD [VERTICES AS ] [,EDGES AS ]] ` | `GET SUBGRAPH 1 STEPS FROM "player100" YIELD VERTICES AS nodes, EDGES AS relationships` | 指定Edge type的起始点可以到达的点和边的信息,返回子图信息。 | -| [路径](../3.ngql-guide/16.subgraph-and-path/2.find-path.md) | `FIND { SHORTEST \| ALL \| NOLOOP } PATH [WITH PROP] FROM TO
OVER [REVERSELY \| BIDIRECT] [] [UPTO STEPS] [\| ORDER BY $-.path] [\| LIMIT ]` | `FIND SHORTEST PATH FROM "player102" TO "team204" OVER *` | 查找指定起始点和目的点之间的路径。返回的路径格式类似于`()-[:@]->( STEPS] FROM {, ...} [{IN | OUT | BOTH} , ...] [YIELD [VERTICES AS ] [,EDGES AS ]] ` | `GET SUBGRAPH 1 STEPS FROM "player100" YIELD VERTICES AS nodes, EDGES AS relationships` | 指定 Edge type 的起始点可以到达的点和边的信息,返回子图信息。 | +| [路径](../3.ngql-guide/16.subgraph-and-path/2.find-path.md) | `FIND { SHORTEST | ALL | NOLOOP } PATH [WITH PROP] FROM TO
OVER [REVERSELY | BIDIRECT] [] [UPTO STEPS] [| ORDER BY $-.path] [| LIMIT ]` | `FIND SHORTEST PATH FROM "player102" TO "team204" OVER *` | 查找指定起始点和目的点之间的路径。返回的路径格式类似于`()-[:@]->(` | `EXPLAIN format="row" SHOW TAGS`
`EXPLAIN format="dot" SHOW TAGS` | 输出nGQL语句的执行计划,但不会执行nGQL语句。 | -| [PROFILE](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md) | `PROFILE [format="row" \| "dot"] ` | `PROFILE format="row" SHOW TAGS`
`EXPLAIN format="dot" SHOW TAGS` | 执行nGQL语句,然后输出执行计划和执行概要。 | - - +| [EXPLAIN](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md) | `EXPLAIN [format="row" | "dot"] ` | `EXPLAIN format="row" SHOW TAGS`
`EXPLAIN format="dot" SHOW TAGS` | 输出 nGQL 语句的执行计划,但不会执行 nGQL 语句。 | +| [PROFILE](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md) | `PROFILE [format="row" | "dot"] ` | `PROFILE format="row" SHOW TAGS`
`EXPLAIN format="dot" SHOW TAGS` | 执行 nGQL 语句,然后输出执行计划和执行概要。 | ## 运维 @@ -486,20 +449,20 @@ | 语法 | 说明 | | :-------------------------------- | :----------------------------------------------------------- | - | `BALANCE DATA` | 启动任务均衡分布Nebula Graph集群里的所有分片。该命令会返回任务ID(`balance_id`)。 | + | `BALANCE DATA` | 启动任务均衡分布 Nebula Graph 集群里的所有分片。该命令会返回任务 ID(`balance_id`)。 | | `BALANCE DATA ` | 显示`BALANCE DATA`任务的状态。 | | `BALANCE DATA STOP` | 停止`BALANCE DATA`任务。 | - | `BALANCE DATA REMOVE ` | 在Nebula Graph集群中扫描并解绑指定的Storage主机。 | - | `BALANCE LEADER` | 在Nebula Graph集群中均衡分布leader。 | + | `BALANCE DATA REMOVE ` | 在 Nebula Graph 集群中扫描并解绑指定的 Storage 主机。 | + | `BALANCE LEADER` | 在 Nebula Graph 集群中均衡分布 leader。 | * [作业管理](../3.ngql-guide/18.operation-and-maintenance-statements/4.job-statements.md) | 语法 | 说明 | | -------------------- | ------------------------------------------------------------ | - | `SUBMIT JOB COMPACT` | 触发RocksDB的长耗时`compact`操作。 | - | `SUBMIT JOB FLUSH` | 将内存中的RocksDB memfile写入硬盘。 | + | `SUBMIT JOB COMPACT` | 触发 RocksDB 的长耗时`compact`操作。 | + | `SUBMIT JOB FLUSH` | 将内存中的 RocksDB memfile 写入硬盘。 | | `SUBMIT JOB STATS` | 启动一个作业,该作业对当前图空间进行统计。作业完成后,用户可以使用`SHOW STATS`语句列出统计结果。 | - | `SHOW JOB ` | 显示当前图空间内指定作业和相关任务的信息。Meta服务将`SUBMIT JOB`请求解析为多个任务,然后分配给进程nebula-storaged。 | + | `SHOW JOB ` | 显示当前图空间内指定作业和相关任务的信息。Meta 服务将`SUBMIT JOB`请求解析为多个任务,然后分配给进程 nebula-storaged。 | | `SHOW JOBS` | 列出当前图空间内所有未过期的作业。 | | `STOP JOB` | 停止当前图空间内未完成的作业。 | | `RECOVER JOB` | 重新执行当前图空间内失败的作业,并返回已恢复的作业数量。 | @@ -509,5 +472,3 @@ | 语法 | 示例 | 说明 | | --------------------------------------------------- | ----------------------------------------------- | -------------------------------------------- | | `KILL QUERY (session=, plan=)` | `KILL QUERY(SESSION=1625553545984255,PLAN=163)` | 在一个会话中执行命令终止另一个会话中的查询。 | - - diff --git a/docs-2.0/20.appendix/0.FAQ.md b/docs-2.0/20.appendix/0.FAQ.md index e1ce24b0649..9d67b34e0d8 100644 --- a/docs-2.0/20.appendix/0.FAQ.md +++ b/docs-2.0/20.appendix/0.FAQ.md @@ -1,29 +1,29 @@ # 常见问题 FAQ -本文列出了使用Nebula Graph {{ nebula.release }} 时可能遇到的常见问题,用户可以使用文档中心或者浏览器的搜索功能查找相应问题。 +本文列出了使用 Nebula Graph {{ nebula.release }} 时可能遇到的常见问题,用户可以使用文档中心或者浏览器的搜索功能查找相应问题。 -如果按照文中的建议无法解决问题,请到[Nebula Graph论坛](https://discuss.nebula-graph.com.cn/)提问或提交[GitHub issue](https://github.com/vesoft-inc/nebula/issues)。 +如果按照文中的建议无法解决问题,请到 [Nebula Graph 论坛](https://discuss.nebula-graph.com.cn/) 提问或提交 [GitHub issue](https://github.com/vesoft-inc/nebula/issues)。 ## 关于本手册 ### 为什么手册示例和系统行为不一致? -Nebula Graph一直在持续开发,功能或操作的行为可能会有变化,如果发现不一致,请提交[issue](https://github.com/vesoft-inc/nebula/issues/new)通知Nebula Graph团队。 +Nebula Graph 一直在持续开发,功能或操作的行为可能会有变化,如果发现不一致,请提交 [issue](https://github.com/vesoft-inc/nebula/issues/new) 通知 Nebula Graph 团队。 !!! note - 如果发现本文档中的错误: + 如果发现本文档中的错误: 1. 用户可以点击页面顶部右上角的"铅笔"图标进入编辑页面。 2. 使用 Markdown 修改文档。完成后点击页面底部的 "Commit changes",这会触发一个 GitHub pull request。 - 3. 完成[CLA签署](../15.contribution/how-to-contribute.md),并且至少2位reviewer审核通过即可合并。 + 3. 完成 [CLA 签署](../15.contribution/how-to-contribute.md),并且至少 2 位 reviewer 审核通过即可合并。 ## 关于历史兼容性 !!! compatibility "`X`版本兼容性" - Nebula Graph {{ nebula.release }} 与 历史版本 (包括 Nebula Graph 1.x 和 2.0-RC) 的数据格式、客户端通信协议均**双向不兼容**。 - 数据格式升级参见[升级 Nebula Graph 历史版本至 v2.0.0](../4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-260.md)。 + Nebula Graph {{ nebula.release }} 与 历史版本 (包括 Nebula Graph 1.x 和 2.0-RC) 的数据格式、客户端通信协议均**双向不兼容**。 + 数据格式升级参见[升级 Nebula Graph 历史版本至当前版本](../4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-latest.md)。 客户端与工具均需要[下载对应版本](../20.appendix/6.eco-tool-version.md)。 !!! compatibility "`Y`版本兼容性" @@ -32,43 +32,42 @@ Nebula Graph一直在持续开发,功能或操作的行为可能会有变化 ## 关于执行 -### 为什么Nebula Graph 2.6.0的返回结果每行之间没有横线分隔了? +### 为什么 Nebula Graph 2.6.0 的返回结果每行之间没有横线分隔了? -这是Nebula Console 2.6.0版本的变动造成的,不是Nebula Graph内核的变更,不影响返回数据本身的内容。 +这是 Nebula Console 2.6.0 版本的变动造成的,不是 Nebula Graph 内核的变更,不影响返回数据本身的内容。 ### 关于悬挂边 悬挂边 (Dangling edge) 是指一条边的起点或者终点在数据库中不存在。 -Nebula Graph {{ nebula.release }} 的数据模型中,允许存在"悬挂边";也没有 openCypher 中的 MERGE 语句。对于悬挂边的保证完全依赖应用层面。详见[INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md), [DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md), [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md), [DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)。 - +Nebula Graph {{ nebula.release }} 的数据模型中,异常情况下可能会存在"悬挂边";也没有 openCypher 中的 MERGE 语句。对于悬挂边的保证完全依赖应用层面。详见 [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md), [DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md), [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md), [DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)。 ### 如何处理错误信息 `[ERROR (-1005)]: Used memory hits the high watermark(0.800000) of total system memory.` -报错原因:Nebula Graph的`system_memory_high_watermark_ratio`参数指定了内存高水位报警机制的触发阈值,默认为`0.8`。系统内存占用率高于该值会触发报警机制,Nebula Graph会停止接受查询。 +报错原因:Nebula Graph 的`system_memory_high_watermark_ratio`参数指定了内存高水位报警机制的触发阈值,默认为`0.8`。系统内存占用率高于该值会触发报警机制,Nebula Graph 会停止接受查询。 解决方案: * 清理系统内存,使其降低到阈值以下。 -* [修改Graph配置](../5.configurations-and-logs/1.configurations/1.configurations.md)。在所有Graph服务器的配置文件中增加`system_memory_high_watermark_ratio`参数,为其设置一个大于`0.8`的值,例如`0.9`。 +* [修改 Graph 配置](../5.configurations-and-logs/1.configurations/1.configurations.md)。在所有 Graph 服务器的配置文件中增加`system_memory_high_watermark_ratio`参数,为其设置一个大于`0.8`的值,例如`0.9`。 !!! note - 仅Graph服务支持`system_memory_high_watermark_ratio`,Storage和Meta服务不支持该参数。 + 仅 Graph 服务支持`system_memory_high_watermark_ratio`,Storage 和 Meta 服务不支持该参数。 ### 如何处理错误信息 `Storage Error E_RPC_FAILURE` -报错原因通常为Graph服务向Storage服务请求了过多的数据,导致Storage服务超时。请尝试以下解决方案: +报错原因通常为 Graph 服务向 Storage 服务请求了过多的数据,导致 Storage 服务超时。请尝试以下解决方案: -* [修改配置文件](../5.configurations-and-logs/1.configurations/3.graph-config.md): 在`nebula-graphd.conf`文件中修改`--storage_client_timeout_ms`参数的值,以增加Storage client的连接超时时间。该值的单位为毫秒(ms)。例如,设置`--storage_client_timeout_ms=60000`。如果`nebula-graphd.conf`文件中未配置该参数,请手动增加。提示:请在配置文件开头添加--local_config=true再重启服务。 +* [修改配置文件](../5.configurations-and-logs/1.configurations/3.graph-config.md):在`nebula-graphd.conf`文件中修改`--storage_client_timeout_ms`参数的值,以增加 Storage client 的连接超时时间。该值的单位为毫秒(ms)。例如,设置`--storage_client_timeout_ms=60000`。如果`nebula-graphd.conf`文件中未配置该参数,请手动增加。提示:请在配置文件开头添加--local_config=true 再重启服务。 * 优化查询语句:减少全库扫描型的查询,无论是否用`LIMIT`限制了返回结果的数量;用 GO 语句改写 MATCH 语句(前者有优化,后者无优化)。 -* 检查Storaged是否发生过 OOM。(`dmesg |grep nebula`)。 -* 为 Storage 服务器提供性能更好的SSD或者内存。 +* 检查 Storaged 是否发生过 OOM。(`dmesg |grep nebula`)。 +* 为 Storage 服务器提供性能更好的 SSD 或者内存。 * 重试请求。 ### 如何处理错误信息 `The leader has changed. Try again later` -已知问题,通常需要重试 1-N 次(N==partition数量)。原因为 meta client 更新leader缓存需要1-2个心跳或者通过错误触发强制更新。 +已知问题,通常需要重试 1-N 次 (N==partition 数量)。原因为 meta client 更新 leader 缓存需要 1-2 个心跳或者通过错误触发强制更新。 ### 返回消息中 `time spent` 的含义是什么? @@ -88,13 +87,13 @@ Got 1 rows (time spent 1235/1934 us) - 第二个数字`1934`表示从客户端角度看所花费的时间,即从客户端发送请求、接收结果,然后在屏幕上显示结果所花费的时间。 -### 可以在`CREATE SPACE`时设置`replica_factor`为偶数(例如设置为2)吗? +### 可以在`CREATE SPACE`时设置`replica_factor`为偶数(例如设置为 2)吗? 不要这样设置。 Storage 服务使用 Raft 协议(多数表决),为保证可用性,要求出故障的副本数量不能达到一半。 -当机器数量为1时,`replica_factor`只能设置为`1`。 +当机器数量为 1 时,`replica_factor`只能设置为`1`。 当机器数量足够时,如果`replica_factor=2`,当其中一个副本故障时,就会导致系统无法正常工作;如果`replica_factor=4`,只能有一个副本可以出现故障,这和`replica_factor=3`是一样。以此类推,所以`replica_factor`设置为奇数即可。 @@ -114,19 +113,19 @@ Storage 服务使用 Raft 协议(多数表决),为保证可用性,要求 * `RETURN` 命令未指定排序方式。 -* 触发了Storage服务中`max_edge_returned_per_vertex`定义的稠密点截断限制。 +* 触发了 Storage 服务中`max_edge_returned_per_vertex`定义的稠密点截断限制。 * 路径的类型不同,导致查询结果可能会不同。 - `GO`语句采用的是`walk`类型,遍历时点和边可以重复。 - - `MATCH`语句兼容openCypher,采用的是`trail`类型,遍历时只有点可以重复,边不可以重复。 + - `MATCH`语句兼容 openCypher,采用的是`trail`类型,遍历时只有点可以重复,边不可以重复。 因路径类型不同导致查询结果不同的示例图和说明如下。 ![路径示例](../images/path1.png) -从点A开始查询距离5跳的点,都会查询到点C(`A->B->C->D->E->C`),查询6跳的点时,`GO`语句会查询到点D(`A->B->C->D->E->C->D`),因为边`C->D`可以重复查询,而`MATCH`语句查询为空,因为边不可以重复。 +从点 A 开始查询距离 5 跳的点,都会查询到点 C(`A->B->C->D->E->C`),查询 6 跳的点时,`GO`语句会查询到点 D(`A->B->C->D->E->C->D`),因为边`C->D`可以重复查询,而`MATCH`语句查询为空,因为边不可以重复。 所以使用`GO`和`MATCH`执行相同语义的查询,可能会出现`MATCH`语句的查询结果比`GO`语句少。 @@ -136,16 +135,16 @@ Storage 服务使用 Raft 协议(多数表决),为保证可用性,要求 大部分情况下,查询语句需要有`YIELD`或`RETURN`,请检查查询语句是否包含。 -### 如何统计每种Tag有多少个点,每个Edge type有多少条边? +### 如何统计每种 Tag 有多少个点,每个 Edge type 有多少条边? -请参见[show-stats](../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)。 +请参见 [show-stats](../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)。 -### 如何获取每种Tag的所有点,或者每种Edge type的所有边? +### 如何获取每种 Tag 的所有点,或者每种 Edge type 的所有边? 1. 建立并重建索引。 ```ngql - > CREATE TAG INDEX i_player ON player(); + > CREATE TAG INDEX IF NOT EXISTS i_player ON player(); > REBUILD TAG INDEX i_player; ``` @@ -156,9 +155,9 @@ Storage 服务使用 Raft 协议(多数表决),为保证可用性,要求 > MATCH (n:player) RETURN n; ``` -更多详情请参见[INDEX](../3.ngql-guide/14.native-index-statements/1.create-native-index.md)、[LOOKUP](../3.ngql-guide/7.general-query-statements/5.lookup.md)和[MATCH](../3.ngql-guide/7.general-query-statements/2.match.md)。 +更多详情请参见 [INDEX](../3.ngql-guide/14.native-index-statements/1.create-native-index.md)、[LOOKUP](../3.ngql-guide/7.general-query-statements/5.lookup.md) 和 [MATCH](../3.ngql-guide/7.general-query-statements/2.match.md)。 -### 如何在不指定Tag/EdgeType的情况下,获取所有的点和边? +### 如何在不指定 Tag/EdgeType 的情况下,获取所有的点和边? nGQL 没有该功能。 @@ -166,50 +165,50 @@ nGQL 没有该功能。 例如执行 `MATCH (n) RETURN (n)`. 会返回错误 `can’t solve the start vids from the sentence`。 -一个办法是使用[Nebula Algorithm](../nebula-algorithm.md). +一个办法是使用 [Nebula Algorithm](../nebula-algorithm.md). -或者指定各Tag/Edge Type,然后再自己通过 `Union` 拼装。 +或者指定各 Tag/Edge Type,然后再自己通过 `Union` 拼装。 ### 如何处理错误信息`can’t solve the start vids from the sentence` -查询引擎需要知道从哪些VID开始图遍历。这些开始图遍历的VID,或者通过用户指定,例如: +查询引擎需要知道从哪些 VID 开始图遍历。这些开始图遍历的 VID,或者通过用户指定,例如: ```ngql > GO FROM ${vids} ... > MATCH (src) WHERE id(src) == ${vids} -# 开始图遍历的VID通过如上办法指定 +# 开始图遍历的 VID 通过如上办法指定 ``` 或者通过一个属性索引来得到,例如: ```ngql -# CREATE TAG INDEX i_player ON player(name(20)); +# CREATE TAG INDEX IF NOT EXISTS i_player ON player(name(20)); # REBUILD TAG INDEX i_player; > LOOKUP ON player WHERE player.name == "abc" | ... YIELD ... > MATCH (src) WHERE src.name == "abc" ... -# 通过点属性name的索引,来得到VID +# 通过点属性 name 的索引,来得到 VID ``` 否则,就会抛出这样一个异常 `can’t solve the start vids from the sentence`。 ### 如何处理错误信息`Wrong vertex id type: 1001` -检查输入的VID类型是否是`create space`设置的`INT64`或`FIXED_STRING(N)`。详情请参见[create space](../3.ngql-guide/9.space-statements/1.create-space.md)。 +检查输入的 VID 类型是否是`create space`设置的`INT64`或`FIXED_STRING(N)`。详情请参见 [create space](../3.ngql-guide/9.space-statements/1.create-space.md)。 ### 如何处理错误信息`The VID must be a 64-bit integer or a string fitting space vertex id length limit.` -检查输入的VID是否超过限制长度。详情请参见[create space](../3.ngql-guide/9.space-statements/1.create-space.md)。 +检查输入的 VID 是否超过限制长度。详情请参见 [create space](../3.ngql-guide/9.space-statements/1.create-space.md)。 ### 如何处理错误信息 `edge conflict` 或 `vertex conflict` -Storage服务在毫秒级时间内多次收到插入或者更新同一点或边的请求时,可能返回该错误。请稍后重试。 +Storage 服务在毫秒级时间内多次收到插入或者更新同一点或边的请求时,可能返回该错误。请稍后重试。 ### 如何处理错误信息 `RPC failure in MetaClient: Connection refused` -报错原因通常为metad服务状态异常,或是metad和graphd服务所在机器网络不通。请尝试以下解决方案: +报错原因通常为 metad 服务状态异常,或是 metad 和 graphd 服务所在机器网络不通。请尝试以下解决方案: -- 在metad所在服务器查看下 metad 服务状态,如果服务状态异常,可以重新启动metad服务。 +- 在 metad 所在服务器查看下 metad 服务状态,如果服务状态异常,可以重新启动 metad 服务。 - 在报错服务器下使用`telnet meta-ip:port`查看网络状态。 @@ -219,17 +218,17 @@ Storage服务在毫秒级时间内多次收到插入或者更新同一点或边 报错原因可能是查询的数据量比较大,storaged 处理超时。请尝试以下解决方法: -- 导入数据时,手动[compaction](../8.service-tuning/compaction.md),加速读的速度。 +- 导入数据时,手动 [compaction](../8.service-tuning/compaction.md),加速读的速度。 -- 增加Graph服务与Storage服务的RPC连接超时时间,在`nebula-storaged.conf`文件里面修改`--storage_client_timeout_ms`参数的值。该值的单位为毫秒(ms),默认值为60000毫秒。 +- 增加 Graph 服务与 Storage 服务的 RPC 连接超时时间,在`nebula-storaged.conf`文件里面修改`--storage_client_timeout_ms`参数的值。该值的单位为毫秒(ms),默认值为 60000 毫秒。 - + ### 如何处理 `nebula-storaged.INFO` 中错误日志 `MetaClient.cpp:65] Heartbeat failed, status:Wrong cluster!` 或者 `nebula-metad.INFO` 含有错误日志`HBProcessor.cpp:54] Reject wrong cluster host "x.x.x.x":9771!` 报错的原因可能是用户修改了 metad 的 ip 或者端口信息,或者 storage 之前加入过其他集群。请尝试以下解决方法: -用户到storage部署的机器所在的安装目录(默认安装目录为 `/usr/local/nebula`)下面将`cluster.id`文件删除,然后重启 storaged 服务。 +用户到 storage 部署的机器所在的安装目录(默认安装目录为 `/usr/local/nebula`)下面将`cluster.id`文件删除,然后重启 storaged 服务。 ### 能不能用中文字符做标识符,比如图空间、Tag、Edge type、属性、索引的名称? @@ -237,7 +236,7 @@ Storage服务在毫秒级时间内多次收到插入或者更新同一点或边 图空间、Tag、Edge type、属性以及索引的名称都需由大小写英文字母、数字或下划线组成,暂不支持使用中文字符。 -同时,上述标识符区分大小写,且不可使用[关键字和保留字](../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md) 。 +同时,上述标识符区分大小写,且不可使用[关键字和保留字](../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。 ### 获取指定点的出度(或者入度)? @@ -258,32 +257,32 @@ nebula > MATCH (s)<-[e]-() WHERE id(s) == "given" RETURN count(e); #入度 查询时提示`Schema not exist`,请确认: -- Schema中是否存在该Tag或Edge type。 +- Schema 中是否存在该 Tag 或 Edge type。 -- Tag或Edge type的名称是否为关键字,如果是关键字,请使用反引号(\`)将它们括起来。详情请参见[关键字](../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。 +- Tag 或 Edge type 的名称是否为关键字,如果是关键字,请使用反引号(\`)将它们括起来。详情请参见[关键字](../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。 ## 关于运维 ### 日志文件过大时如何回收日志? -Nebula Graph 的日志默认在 `/usr/local/nebula/logs/` 下, 正常INFO级别日志文件为 `nebula-graphd.INFO, nebula-storaged.INFO, nebula-metad.INFO`,报警和错误级别后缀为 `.WARNING` 和 `.ERROR`。 +Nebula Graph 的日志默认在 `/usr/local/nebula/logs/` 下,正常 INFO 级别日志文件为 `nebula-graphd.INFO, nebula-storaged.INFO, nebula-metad.INFO`,报警和错误级别后缀为 `.WARNING` 和 `.ERROR`。 -Nebula Graph使用 [glog](https://github.com/google/glog) 打印日志。glog 没有日志回收的功能,用户可以使用 crontab 设置定期任务回收日志文件,详情请参见[Glog should delete old log files automatically](https://github.com/google/glog/issues/423)。 +Nebula Graph 使用 [glog](https://github.com/google/glog) 打印日志。glog 没有日志回收的功能,用户可以使用 crontab 设置定期任务回收日志文件,详情请参见 [Glog should delete old log files automatically](https://github.com/google/glog/issues/423)。 -### 如何查看Nebula Graph版本 +### 如何查看 Nebula Graph 版本 -服务运行时: `nebula-console` 中执行命令 `SHOW HOSTS META`,详见[SHOW HOSTS](../3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md) +服务运行时:`nebula-console` 中执行命令 `SHOW HOSTS META`,详见 [SHOW HOSTS](../3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md) -服务未运行时: 在安装路径的`bin`目录内,执行`./ --version`命令,可以查看到version和GitHub上的commit ID,例如: +服务未运行时:在安装路径的`bin`目录内,执行`./ --version`命令,可以查看到 version 和 GitHub 上的 commit ID,例如: ```bash $ ./nebula-graphd --version nebula-graphd version 2.5.0, Git: c397299c, Build Time: Aug 19 2021 11:20:18 ``` -- Docker Compose部署 +- Docker Compose 部署 - 查看Docker Compose部署的Nebula Graph版本,方式和编译安装类似,只是要先进入容器内部,示例命令如下: + 查看 Docker Compose 部署的 Nebula Graph 版本,方式和编译安装类似,只是要先进入容器内部,示例命令如下: ```bash docker exec -it nebula-docker-compose_graphd_1 bash @@ -291,13 +290,13 @@ nebula-graphd version 2.5.0, Git: c397299c, Build Time: Aug 19 2021 11:20:18 ./nebula-graphd --version ``` -- RPM/DEB包安装 +- RPM/DEB 包安装 执行`rpm -qa |grep nebula`即可查看版本。 ### 如何扩缩容 -用户可以使用 Dashboard(企业版),在可视化页面对 graphd 和 storaged 进行快速扩缩容,详情参见 [集群操作-扩缩容](../nebula-dashboard-ent/4.cluster-operator/4.manage.md)。 +用户可以使用 Dashboard(企业版),在可视化页面对 graphd 和 storaged 进行快速扩缩容,详情参见[集群操作-扩缩容](../nebula-dashboard-ent/4.cluster-operator/4.manage.md)。 Nebula Graph {{ nebula.release }} 未提供运维命令以实现自动扩缩容,参考以下步骤: @@ -305,19 +304,19 @@ Nebula Graph {{ nebula.release }} 未提供运维命令以实现自动扩缩容 !!! note - 用户可以使用[脚本工具](https://github.com/vesoft-inc/nebula/blob/master/scripts/meta-transfer-tools.sh)迁移meta服务,但是需要自行修改Graph服务和Storage服务的配置文件中的Meta设置。 + 用户可以使用[脚本工具](https://github.com/vesoft-inc/nebula/blob/master/scripts/meta-transfer-tools.sh) 迁移 meta 服务,但是需要自行修改 Graph 服务和 Storage 服务的配置文件中的 Meta 设置。 -- graphd 的缩容: 将该graphd 的 ip 从 client 的代码中移除,关闭该 graphd 进程。 +- graphd 的缩容: 将该 graphd 的 ip 从 client 的代码中移除,关闭该 graphd 进程。 - graphd 的扩容: 在新机器上准备 graphd 二进制文件和配置文件,在配置文件中修改或增加已在运行的 metad 地址,启动 graphd 进程。 -- storaged 的缩容:(副本数都必须大于1),参考[缩容命令](../8.service-tuning/load-balance.md#storage_1)。完成后关闭 storaged 进程。 +- storaged 的缩容:(副本数都必须大于 1),参考[缩容命令](../8.service-tuning/load-balance.md#storage_1)。完成后关闭 storaged 进程。 -- storaged 的扩容:(副本数都必须大于1) 在新机器上准备 storaged 二进制文件和配置文件,在配置文件中修改或增加已在运行的 metad 地址,启动 storaged 进程。 +- storaged 的扩容:(副本数都必须大于 1) 在新机器上准备 storaged 二进制文件和配置文件,在配置文件中修改或增加已在运行的 metad 地址,启动 storaged 进程。 -storaged扩缩容之后,还需要运行[Balance Data 和 Balance Leader 命令](../8.service-tuning/load-balance.md)。 +storaged 扩缩容之后,还需要运行 [Balance Data 和 Balance Leader 命令](../8.service-tuning/load-balance.md)。 -### 修改Host名称后,旧的Host一直显示 `OFFLINE` 怎么办? +### 修改 Host 名称后,旧的 Host 一直显示 `OFFLINE` 怎么办? `OFFLINE` 状态的 Host 将在一天后自动删除。 @@ -325,7 +324,7 @@ storaged扩缩容之后,还需要运行[Balance Data 和 Balance Leader 命令 ### 防火墙中需要开放哪些端口 -如果没有修改过[配置文件](../5.configurations-and-logs/1.configurations/1.configurations.md)中预设的端口,请在防火墙中开放如下端口: +如果没有修改过[配置文件](../5.configurations-and-logs/1.configurations/1.configurations.md) 中预设的端口,请在防火墙中开放如下端口: |服务类型|端口| |-|-| @@ -339,7 +338,7 @@ storaged扩缩容之后,还需要运行[Balance Data 和 Balance Leader 命令 ### 如何测试端口是否已开放 -用户可以使用如下telnet命令检查端口状态: +用户可以使用如下 telnet 命令检查端口状态: ```bash telnet @@ -347,7 +346,7 @@ telnet !!! Note - 如果无法使用telnet命令,请先检查主机中是否安装并启动了telnet。 + 如果无法使用 telnet 命令,请先检查主机中是否安装并启动了 telnet。 示例: diff --git a/docs-2.0/20.appendix/6.eco-tool-version.md b/docs-2.0/20.appendix/6.eco-tool-version.md index 190c1da7185..149c5c5a07a 100644 --- a/docs-2.0/20.appendix/6.eco-tool-version.md +++ b/docs-2.0/20.appendix/6.eco-tool-version.md @@ -4,9 +4,9 @@ !!! compatibility - 内核版本号命名规则为 `X.Y.Z`,表示`大版本X`,`中版本Y`,`小版本Z`。对于客户端的升级要求为: + 内核版本号命名规则为 `X.Y.Z`,表示`大版本 X`,`中版本 Y`,`小版本 Z`。对于客户端的升级要求为: - - 内核从`X.Y.Z1`升级成`X.Y.Z2`: 表示内核完全前向兼容,通常用于bugfix,建议尽快升级内核小版本。此时客户端可以**不升级**; + - 内核从`X.Y.Z1`升级成`X.Y.Z2`: 表示内核完全前向兼容,通常用于 bugfix,建议尽快升级内核小版本。此时客户端可以**不升级**; - 内核从`X.Y1.*`升级成`X.Y2.*`: 表示存在 API、语法、返回值部分不兼容,通常用于增加功能、提升性能、代码优化等。需要客户端相应升级至`X.Y2.*`; @@ -14,37 +14,45 @@ - 默认内核及客户端都不支持降级:不可从`X.Y.Z2`降级成`X.Y.Z1`; - - 一个`Y`版本的发布周期大约为6个月,其维护与支持周期为6个月; + - 一个`Y`版本的发布周期大约为 6 个月,其维护与支持周期为 6 个月; - 年初版本通常命名为`X.0.0`, 年中版本命名为`X.5.0`。 - - 文件命名中含有`RC`表示仅用于预览的非正式版本(`Release Candidate`),其维护周期仅至下个RC或者正式版本发布,其客户端、数据兼容性等均无保证。 + - 文件命名中含有`RC`表示仅用于预览的非正式版本 (`Release Candidate`),其维护周期仅至下个 RC 或者正式版本发布,其客户端、数据兼容性等均无保证。 - 文件命名中含有`nightly`、`SNAPSHOT`或者日期的为日常开发版本,无质量保证和维护周期。 !!! compatibility - 1.x版本的生态工具完全不支持在Nebula Graph 2.x版本中使用。 + 1.x 版本的生态工具完全不支持在 Nebula Graph 2.x 版本中使用。 ## Nebula Graph Studio -Nebula Graph Studio(简称 Studio)是一款可以通过Web访问的图数据库可视化工具,搭配Nebula Graph DBMS使用,提供构图、数据导入、编写nGQL查询、图探索等一站式服务。详情请参见[什么是Nebula Graph Studio](../nebula-studio/about-studio/st-ug-what-is-graph-studio.md)。 +Nebula Graph Studio(简称 Studio)是一款可以通过 Web 访问的图数据库可视化工具,搭配 Nebula Graph DBMS 使用,提供构图、数据导入、编写 nGQL 查询、图探索等一站式服务。详情请参见[什么是 Nebula Graph Studio](../nebula-studio/about-studio/st-ug-what-is-graph-studio.md)。 !!! Note Studio 版本发布节奏独立于 Nebula Graph 内核,其命名方式也不参照内核命名规则,两者兼容对应关系如下表。 -|Nebula Graph版本|Studio版本(commit id)| +|Nebula Graph 版本|Studio 版本(commit id)| |:---|:---| -| {{ nebula.release }} | {{studio.base300}}(9e2a120)| +| {{ nebula.release }} | {{studio.release}}(3754219)| ## Nebula Dashboard(社区版) -Nebula Dashboard(简称Dashboard)是一款用于监控Nebula Graph集群中机器和服务状态的可视化工具。详情参见[什么是Nebula Dashboard](../nebula-dashboard/1.what-is-dashboard.md)。 +Nebula Dashboard(简称 Dashboard)是一款用于监控 Nebula Graph 集群中机器和服务状态的可视化工具。详情参见[什么是 Nebula Dashboard](../nebula-dashboard/1.what-is-dashboard.md)。 -|Nebula Graph版本|Dashboard版本(commit id)| +|Nebula Graph 版本|Dashboard 版本(commit id)| |:---|:---| -| {{ nebula.release }} | {{dashboard.release}}(49ab1bc) | +| {{ nebula.release }} | {{dashboard.release}}(a610013) | + +## Nebula Dashboard(企业版) + +Nebula Dashboard(简称 Dashboard)是一款用于监控和管理 Nebula Graph 多集群中机器和服务状态的可视化工具,支持在可视化界面进行集群创建、集群导入、数据平衡、扩容缩容等操作。详情参见[什么是 Nebula Dashboard](../nebula-dashboard-ent/1.what-is-dashboard-ent.md)。 + +|Nebula Graph 版本|Dashboard 企业版本(commit id)| +|:---|:---| +| {{ nebula.release }} | {{dashboard_ent.release}}(3474c78) | ## Nebula Dashboard(企业版) @@ -56,91 +64,91 @@ Nebula Dashboard(简称Dashboard)是一款用于监控和管理Nebula Graph ## Nebula Explorer -Nebula Explorer(简称Explorer)是一款可以通过Web访问的图探索可视化工具,搭配Nebula Graph内核使用,用于与图数据进行可视化交互。即使没有图数据操作经验,用户也可以快速成为图专家。详情参见[什么是Nebula Explorer](../nebula-explorer/about-explorer/ex-ug-what-is-explorer.md)。 +Nebula Explorer(简称 Explorer)是一款可以通过 Web 访问的图探索可视化工具,搭配 Nebula Graph 内核使用,用于与图数据进行可视化交互。即使没有图数据操作经验,用户也可以快速成为图专家。详情参见[什么是 Nebula Explorer](../nebula-explorer/about-explorer/ex-ug-what-is-explorer.md)。 -|Nebula Graph版本|Explorer版本(commit id)| +|Nebula Graph 版本|Explorer 版本(commit id)| |:---|:---| -| {{ nebula.release }} | {{explorer.base100}}(3b82142) | +| {{ nebula.release }} | {{explorer.release}}(3acdd02) | ## Nebula Exchange -Nebula Exchange(简称Exchange)是一款Apache Spark™应用,用于在分布式环境中将集群中的数据批量迁移到Nebula Graph中,能支持多种不同格式的批式数据和流式数据的迁移。详情请参见[什么是Nebula Exchange](../nebula-exchange/about-exchange/ex-ug-what-is-exchange.md)。 +Nebula Exchange(简称 Exchange)是一款 Apache Spark™ 应用,用于在分布式环境中将集群中的数据批量迁移到 Nebula Graph 中,能支持多种不同格式的批式数据和流式数据的迁移。详情请参见[什么是 Nebula Exchange](../nebula-exchange/about-exchange/ex-ug-what-is-exchange.md)。 -|Nebula Graph版本|Exchange版本(commit id)| -|:---|:---| -| {{ nebula.release }} | {{exchange.release}}(cb83202) | +|Nebula Graph 版本|Exchange 社区版版本(commit id)|Exchange 企业版版本(commit id)| +|:---|:---|:--| +| {{ nebula.release }} | {{exchange.release}}(e6d8601) |{{exchange_ent.release}}(9c54c97) | ## Nebula Operator -Nebula Operator(简称Operator)是用于在Kubernetes系统上自动化部署和运维Nebula Graph集群的工具。依托于Kubernetes扩展机制,Nebula Graph将其运维领域的知识全面注入至Kubernetes系统中,让Nebula Graph成为真正的云原生图数据库。详情请参考[什么是Nebula Operator](../nebula-operator/1.introduction-to-nebula-operator.md)。 +Nebula Operator(简称 Operator)是用于在 Kubernetes 系统上自动化部署和运维 Nebula Graph 集群的工具。依托于 Kubernetes 扩展机制,Nebula Graph 将其运维领域的知识全面注入至 Kubernetes 系统中,让 Nebula Graph 成为真正的云原生图数据库。详情请参考[什么是 Nebula Operator](../nebula-operator/1.introduction-to-nebula-operator.md)。 -|Nebula Graph版本|Operator版本(commit id)| +|Nebula Graph 版本|Operator 版本(commit id)| |:---|:---| | {{ nebula.release }} | {{operator.release}}(ba88e28) | ## Nebula Importer -Nebula Importer(简称Importer)是一款Nebula Graph的CSV文件导入工具。Importer可以读取本地的CSV文件,然后导入数据至Nebula Graph图数据库中。详情请参见[什么是Nebula Importer](../nebula-importer/use-importer.md)。 +Nebula Importer(简称 Importer)是一款 Nebula Graph 的 CSV 文件导入工具。Importer 可以读取本地的 CSV 文件,然后导入数据至 Nebula Graph 图数据库中。详情请参见[什么是 Nebula Importer](../nebula-importer/use-importer.md)。 -|Nebula Graph版本|[Importer](https://github.com/vesoft-inc/nebula-importer/tree/{{importer.branch}})版本(commit id)| +|Nebula Graph 版本|[Importer](https://github.com/vesoft-inc/nebula-importer/tree/{{importer.branch}}) 版本(commit id)| |:---|:---| | {{ nebula.release }} | {{importer.release}}(43234f3) | ## Nebula Spark Connector -Nebula Spark Connector是一个Spark连接器,提供通过Spark标准形式读写Nebula Graph数据的能力。Nebula Spark Connector由Reader和Writer两部分组成。详情请参见[什么是Nebula Spark Connector](../nebula-spark-connector.md)。 +Nebula Spark Connector 是一个 Spark 连接器,提供通过 Spark 标准形式读写 Nebula Graph 数据的能力。Nebula Spark Connector 由 Reader 和 Writer 两部分组成。详情请参见[什么是 Nebula Spark Connector](../nebula-spark-connector.md)。 -|Nebula Graph版本|Spark Connector版本(commit id)| +|Nebula Graph 版本|Spark Connector 版本(commit id)| |:---|:---| -| {{ nebula.release }} | {{sparkconnector.release}}(2c61ca5) | +| {{ nebula.release }} | {{sparkconnector.release}}(aac22e1) | ## Nebula Flink Connector -Nebula Flink Connector是一款帮助Flink用户快速访问Nebula Graph的连接器,支持从Nebula Graph图数据库中读取数据,或者将其他外部数据源读取的数据写入Nebula Graph图数据库。详情请参见[什么是Nebula Flink Connector](../nebula-flink-connector.md)。 +Nebula Flink Connector 是一款帮助 Flink 用户快速访问 Nebula Graph 的连接器,支持从 Nebula Graph 图数据库中读取数据,或者将其他外部数据源读取的数据写入 Nebula Graph 图数据库。详情请参见[什么是 Nebula Flink Connector](../nebula-flink-connector.md)。 -|Nebula Graph版本|Flink Connector版本(commit id)| +|Nebula Graph 版本|Flink Connector 版本(commit id)| |:---|:---| -| {{ nebula.release }} | {{flinkconnector.release}}(49b8f3d) | +| {{ nebula.release }} | {{flinkconnector.release}}(79bd8d4) | ## Nebula Algorithm -Nebula Algorithm(简称Algorithm)是一款基于[GraphX](https://spark.apache.org/graphx/)的Spark应用程序,通过提交Spark任务的形式使用完整的算法工具对Nebula Graph数据库中的数据执行图计算,也可以通过编程形式调用lib库下的算法针对DataFrame执行图计算。详情请参见[什么是Nebula Algorithm](../nebula-algorithm.md)。 +Nebula Algorithm(简称 Algorithm)是一款基于 [GraphX](https://spark.apache.org/graphx/) 的 Spark 应用程序,通过提交 Spark 任务的形式使用完整的算法工具对 Nebula Graph 数据库中的数据执行图计算,也可以通过编程形式调用 lib 库下的算法针对 DataFrame 执行图计算。详情请参见[什么是 Nebula Algorithm](../nebula-algorithm.md)。 -|Nebula Graph版本|Algorithm版本(commit id)| +|Nebula Graph 版本|Algorithm 版本(commit id)| |:---|:---| | {{ nebula.release }} | {{algorithm.release}}(2c61ca5) | ## Nebula Console -Nebula Console是Nebula Graph的原生CLI客户端。如何使用请参见[连接Nebula Graph](../2.quick-start/3.connect-to-nebula-graph.md)。 +Nebula Console 是 Nebula Graph 的原生 CLI 客户端。如何使用请参见[连接 Nebula Graph](../2.quick-start/3.connect-to-nebula-graph.md)。 -|Nebula Graph版本|Console版本(commit id)| +|Nebula Graph 版本|Console 版本(commit id)| |:---|:---| | {{ nebula.release }} | {{console.release}}(0834198) | ## Nebula Docker Compose -Docker Compose可以快速部署Nebula Graph集群。如何使用请参见[Docker Compose部署Nebula Graph](../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +Docker Compose 可以快速部署 Nebula Graph 集群。如何使用请参见 [Docker Compose 部署 Nebula Graph](../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 -|Nebula Graph版本|Docker Compose版本(commit id)| +|Nebula Graph 版本|Docker Compose 版本(commit id)| |:---|:---| | {{ nebula.release }} | {{dockercompose.release}}(a6e9d78) | ## Nebula Bench -[Nebula Bench](https://github.com/vesoft-inc/nebula-bench) 用于测试Nebula Graph的基线性能数据,使用LDBC v0.3.3的标准数据集。 +[Nebula Bench](https://github.com/vesoft-inc/nebula-bench) 用于测试 Nebula Graph 的基线性能数据,使用 LDBC v0.3.3 的标准数据集。 -|Nebula Graph版本|Nebula Bench版本(commit id)| +|Nebula Graph 版本|Nebula Bench 版本(commit id)| |:---|:---| | {{ nebula.release }} | {{bench.release}}(661f871) | @@ -150,12 +158,12 @@ Docker Compose可以快速部署Nebula Graph集群。如何使用请参见[Docke 选择与内核版本相同`X.Y.*`的最新版本。 -|Nebula Graph版本| 语言(commit id) | +|Nebula Graph 版本| 语言(commit id) | |:---| :--- | | {{ nebula.release }}| [C++](https://github.com/vesoft-inc/nebula-cpp/tree/{{cpp.branch}})(00e2625) | | {{ nebula.release }}| [Go](https://github.com/vesoft-inc/nebula-go/tree/{{go.branch}})(02eb246) | -| {{ nebula.release }}| [Python](https://github.com/vesoft-inc/nebula-python/tree/{{python.branch}})(6e467a9) | -| {{ nebula.release }}| [Java](https://github.com/vesoft-inc/nebula-java/tree/{{java.branch}})(8e171e4) | +| {{ nebula.release }}| [Python](https://github.com/vesoft-inc/nebula-python/tree/{{python.branch}})(f9e8b11) | +| {{ nebula.release }}| [Java](https://github.com/vesoft-inc/nebula-java/tree/{{java.branch}})(064f3a4) | ## 未发布 diff --git a/docs-2.0/20.appendix/mind-map.md b/docs-2.0/20.appendix/mind-map.md index 6ffd967fa3a..4d7b535020b 100644 --- a/docs-2.0/20.appendix/mind-map.md +++ b/docs-2.0/20.appendix/mind-map.md @@ -1,9 +1,9 @@ # 思维导图 -以下给出 Nebula Graph 结构框架的思维导图,用户可以 [点击](https://www.mubucm.com/doc/34QEdbrFRwZ) 并查看大图。 +以下给出 Nebula Graph 结构框架的思维导图,用户可以[点击](https://www.mubucm.com/doc/34QEdbrFRwZ) 并查看大图。 ![nebula graph](../20.appendix/Unknown-2.png) -以下给出 nGQL 的思维导图,用户可以 [点击](https://www.mubucm.com/doc/3heEUeLwbMZ) 并查看大图。 +以下给出 nGQL 的思维导图,用户可以[点击](https://www.mubucm.com/doc/3heEUeLwbMZ) 并查看大图。 ![nebula nGQL](../20.appendix/Unknown-3.png) diff --git a/docs-2.0/20.appendix/releasenote.md b/docs-2.0/20.appendix/releasenote.md index af95cee79a1..4cacf092f23 100644 --- a/docs-2.0/20.appendix/releasenote.md +++ b/docs-2.0/20.appendix/releasenote.md @@ -1,57 +1,7 @@ # Nebula Graph {{ nebula.release }} release notes -## Feature - -- 新增TOSS功能。[#2525](https://github.com/vesoft-inc/nebula/pull/2525) -- 新增Group&Zone功能。[#181](https://github.com/vesoft-inc/nebula-storage/pull/181) -- 新增Geo Spatial功能。[#2954](https://github.com/vesoft-inc/nebula/pull/2954)、[#2979](https://github.com/vesoft-inc/nebula/pull/2979)、[#3043](https://github.com/vesoft-inc/nebula/pull/3043) -- 新增传输加密功能。[#2584](https://github.com/vesoft-inc/nebula/pull/2584) -- 新增服务端返回JSON格式的查询结果。[#2824](https://github.com/vesoft-inc/nebula/pull/2824) -- 新增图空间的meta克隆。[#2763](https://github.com/vesoft-inc/nebula/pull/2763) -- 新增LOOKUP中使用IN表达式。[#2906](https://github.com/vesoft-inc/nebula/pull/2906) -- 集成Breakpad。[#2536](https://github.com/vesoft-inc/nebula/pull/2536) -- 新增将metad的本地文件夹复制到远程。 [#2532](https://github.com/vesoft-inc/nebula/pull/2532) -- 新增DELETE TAG。[#2520](https://github.com/vesoft-inc/nebula/pull/2520) -- 新增concat函数。 [#2540](https://github.com/vesoft-inc/nebula/pull/2540) -- 新增SHOW META LEADER。[#2542](https://github.com/vesoft-inc/nebula/pull/2542) - -## Enhancement - -- 优化indexscan的Limit下推计算。[#2905](https://github.com/vesoft-inc/nebula/pull/2905)、[#2823](https://github.com/vesoft-inc/nebula/pull/2823)、[#2796](https://github.com/vesoft-inc/nebula/pull/2796) -- 优化GO语句每步采样和Limit下推计算。[#2904](https://github.com/vesoft-inc/nebula/pull/2904)、[#2853](https://github.com/vesoft-inc/nebula/pull/2853)、[#2831](https://github.com/vesoft-inc/nebula/pull/2831) -- 优化YIELD语句的格式。[#2555](https://github.com/vesoft-inc/nebula/pull/2555)、[#2572](https://github.com/vesoft-inc/nebula/pull/2572)、[#2779](https://github.com/vesoft-inc/nebula/pull/2779)、[#2895](https://github.com/vesoft-inc/nebula/pull/2895)、[#2944](https://github.com/vesoft-inc/nebula/pull/2944) -- 默认开启prefix bloom filter以提升性能。[#2860](https://github.com/vesoft-inc/nebula/pull/2860) -- 支持服务端验证客户端版本,可配套使用的客户端版本才允许连接(客户端版本从2.6.0开始)。[#2965](https://github.com/vesoft-inc/nebula/pull/2965) -- 优化流量控制。[#2557](https://github.com/vesoft-inc/nebula/pull/2557) -- SHOW JOBS只显示本SPACE的JOB。[#2872](https://github.com/vesoft-inc/nebula/pull/2872) -- 为除GUEST之外的所有角色授予作业权限。[#2928](https://github.com/vesoft-inc/nebula/pull/2928) -- 优化内存水位检测。[#2885](https://github.com/vesoft-inc/nebula/pull/2885) -- 支持Storage的慢查询终止。[#2534](https://github.com/vesoft-inc/nebula/pull/2534) - -## Bug fix - -- 修复`raftpart::reset`时清理部分RocksDB数据的问题。[#2522](https://github.com/vesoft-inc/nebula/pull/2522) -- 修复了插入不匹配的日期时间类型的问题。[#2527](https://github.com/vesoft-inc/nebula/pull/2527) -- 修复了设置毫秒失败但微秒有效的问题。[#2781](https://github.com/vesoft-inc/nebula/pull/2781) -- 修复了批量插入过多数据(百万行)时Meta服务崩溃的问题。[#2813](https://github.com/vesoft-inc/nebula/pull/2813) -- 修复了当图空间中不存在边Schema时获取边信息导致崩溃的问题。[#2571](https://github.com/vesoft-inc/nebula/pull/2571) -- 修复了属性数据类型为 `FIXED_STRING` 时 GO WHERE 子句表达式解析错误。[#2762](https://github.com/vesoft-inc/nebula/pull/2762) -- 修复了FIND ALL PATH查询不到的错误。 [#2773](https://github.com/vesoft-inc/nebula/pull/2773) -- 修复了没有配置角色的用户却有查找SPACE的角色权限问题。[#2778](https://github.com/vesoft-inc/nebula/pull/2778) -- 修复了CASE表达式错误。 [#2819](https://github.com/vesoft-inc/nebula/pull/2819) -- 修复了使用time函数时死循环问题。[#2820](https://github.com/vesoft-inc/nebula/pull/2820) -- 修复了当节点被shutdown后,JOB仍显示为运行中的问题。[#2843](https://github.com/vesoft-inc/nebula/pull/2843) -- 修复了在多个副本的情况下,`Insert`语句可能导致副本之间属性值不一致的问题。 [#2862](https://github.com/vesoft-inc/nebula/pull/2862) -- 修复了USE后提交作业时图空间不对的问题。 [#3010](https://github.com/vesoft-inc/nebula/pull/3010) -- 修复了当列不为空时获取thrift结构属性出错的问题。[#3012](https://github.com/vesoft-inc/nebula/pull/3012) -- 修复了Meta服务未同步,graphd也能运行的问题。 [#3069](https://github.com/vesoft-inc/nebula/pull/3069) -- 修复了使用FIND PATH WITH PROP时,悬挂边会返回空顶点的问题。 [#3008](https://github.com/vesoft-inc/nebula/pull/3008) -- 修复了YIELD DISTINCT map类型时的崩溃问题。 [#3051](https://github.com/vesoft-inc/nebula/pull/3051) -- 修复了设置错误的IP或者HOST时服务仍然可以启动的问题。 [#3057](https://github.com/vesoft-inc/nebula/pull/3057) -- 修复了在一个语句中更改相同属性的错误。[#3036](https://github.com/vesoft-inc/nebula/pull/3036) -- 修复了在边上多步过滤无效的问题。[#3144](https://github.com/vesoft-inc/nebula/pull/3144) +TODO ## 历史版本 [历史版本](https://nebula-graph.com.cn/tags/release-note/) - diff --git a/docs-2.0/20.appendix/write-tools.md b/docs-2.0/20.appendix/write-tools.md index f6054e7684d..80d3712a7c4 100644 --- a/docs-2.0/20.appendix/write-tools.md +++ b/docs-2.0/20.appendix/write-tools.md @@ -1,15 +1,14 @@ # 导入工具选择 -有多种方式可以写入Nebula Graph {{ nebula.release }}: +有多种方式可以写入 Nebula Graph {{ nebula.release }}: -- 使用 [命令行 -f 的方式](../2.quick-start/3.connect-to-nebula-graph.md)导入: 可以导入少量准备好的nGQL文件,适合少量手工测试数据准备; -- 使用 [studio 导入](../nebula-studio/quick-start/st-ug-import-data.md): 可以用过浏览器导入本机多个 csv 文件,单个文件不超过 100 MB,格式有限制; -- 使用 [importer 导入](../nebula-importer/use-importer.md): 导入单机多个 csv 文件,大小没有限制,格式灵活; -- 使用 [Exchange 导入](../nebula-exchange/about-exchange/ex-ug-what-is-exchange.md): 从 Neo4j, Hive, MySQL等多种源分布式导入,需要有 Spark 集群; -- 使用 [Spark-connector](../nebula-spark-connector.md)/[Flink-connector](../nebula-flink-connector.md) 导入:有相应组件(Spark/Flink),撰写少量代码; +- 使用[命令行 -f 的方式](../2.quick-start/3.connect-to-nebula-graph.md)导入:可以导入少量准备好的 nGQL 文件,适合少量手工测试数据准备; +- 使用 [studio 导入](../nebula-studio/quick-start/st-ug-import-data.md):可以用过浏览器导入本机多个 csv 文件,单个文件不超过 100 MB,格式有限制; +- 使用 [importer 导入](../nebula-importer/use-importer.md):导入单机多个 csv 文件,大小没有限制,格式灵活; +- 使用 [Exchange 导入](../nebula-exchange/about-exchange/ex-ug-what-is-exchange.md):从 Neo4j, Hive, MySQL 等多种源分布式导入,需要有 Spark 集群; +- 使用 [Spark-connector](../nebula-spark-connector.md)/[Flink-connector](../nebula-flink-connector.md) 导入:有相应组件 (Spark/Flink),撰写少量代码; - 使用 [C++/GO/Java/Python SDK](../20.appendix/6.eco-tool-version.md):编写程序的方式导入,需要有一定编程和调优能力。 下图给出了几种方式的定位: ![image](../images/write-choice.png) - diff --git a/docs-2.0/3.ngql-guide/1.nGQL-overview/1.overview.md b/docs-2.0/3.ngql-guide/1.nGQL-overview/1.overview.md index 5316a4604a1..4ea2605b33b 100644 --- a/docs-2.0/3.ngql-guide/1.nGQL-overview/1.overview.md +++ b/docs-2.0/3.ngql-guide/1.nGQL-overview/1.overview.md @@ -1,10 +1,10 @@ -# 什么是nGQL +# 什么是 nGQL -nGQL(Nebula Graph Query Language)是Nebula Graph使用的的声明式图查询语言,支持灵活高效的[图模式](3.graph-patterns.md),而且nGQL是为开发和运维人员设计的类SQL查询语言,易于学习。 +nGQL(Nebula Graph Query Language)是 Nebula Graph 使用的的声明式图查询语言,支持灵活高效的[图模式](3.graph-patterns.md),而且 nGQL 是为开发和运维人员设计的类 SQL 查询语言,易于学习。 -nGQL是一个进行中的项目,会持续发布新特性和优化,因此可能会出现语法和实际操作不一致的问题,如果遇到此类问题,请提交[issue](https://github.com/vesoft-inc/nebula/issues)通知Nebula Graph团队。Nebula Graph 2.0及更新版本正在支持[openCypher 9](https://www.opencypher.org/resources)。 +nGQL 是一个进行中的项目,会持续发布新特性和优化,因此可能会出现语法和实际操作不一致的问题,如果遇到此类问题,请提交 [issue](https://github.com/vesoft-inc/nebula/issues) 通知 Nebula Graph 团队。Nebula Graph 2.0 及更新版本正在支持 [openCypher 9](https://www.opencypher.org/resources)。 -## nGQL可以做什么 +## nGQL 可以做什么 - 支持图遍历 @@ -20,15 +20,15 @@ nGQL是一个进行中的项目,会持续发布新特性和优化,因此可 - 支持索引 -- 支持大部分openCypher 9图查询语法(不支持修改和控制语法) +- 支持大部分 openCypher 9 图查询语法(不支持修改和控制语法) ## 示例数据 Basketballplayer -用户可以下载Nebula Graph示例数据[basketballplayer文件](https://docs.nebula-graph.io/2.0/basketballplayer-2.X.ngql),然后使用[Nebula Graph Console](../../2.quick-start/3.connect-to-nebula-graph.md),使用选项`-f`执行脚本。 +用户可以下载 Nebula Graph 示例数据 [basketballplayer 文件](https://docs.nebula-graph.io/2.0/basketballplayer-2.X.ngql),然后使用 [Nebula Graph Console](../../2.quick-start/3.connect-to-nebula-graph.md),使用选项`-f`执行脚本。 ## 占位标识符和占位符值 -Nebula Graph查询语言nGQL参照以下标准设计: +Nebula Graph 查询语言 nGQL 参照以下标准设计: - (Draft) ISO/IEC JTC1 N14279 SC 32 - Database_Languages - GQL @@ -49,7 +49,7 @@ Nebula Graph查询语言nGQL参照以下标准设计: | \| | 所有可选的元素。 | | ... | 可以重复多次。 | -例如创建点或边的nGQL语法: +例如创建点或边的 nGQL 语法: ```ngql CREATE {TAG | EDGE} { | }( @@ -59,10 +59,10 @@ CREATE {TAG | EDGE} { | }( 示例语句: ```ngql -nebula> CREATE TAG player(name string, age int); +nebula> CREATE TAG IF NOT EXISTS player(name string, age int); ``` -## 关于openCypher兼容性 +## 关于 openCypher 兼容性 ### 原生 nGQL 和 openCypher 的关系 @@ -78,7 +78,7 @@ nebula> CREATE TAG player(name string, age int); 不要在同一个复合语句中,同时使用`原生 nGQL 语句`和`openCypher 兼容语句`,其行为是未定义的。 -### nGQL 完全兼容 openCypher 9吗? +### nGQL 完全兼容 openCypher 9 吗? 不。 @@ -86,37 +86,37 @@ nebula> CREATE TAG player(name string, age int); nGQL 设计目标为兼容部分 DQL(match)。不计划兼容任何 DDL,DML,DCL。 - 在[Nebula Graph Issues](https://github.com/vesoft-inc/nebula/issues?q=is%3Aissue+is%3Aopen+label%3Aincompatible)中已经列出已知的多处不兼容项。如果发现这种类型的新问题,请提交问题并附带`incompatible`标签。在本文搜索"compatibility"或者“兼容性”查看具体不兼容细节。 + 在 [Nebula Graph Issues](https://github.com/vesoft-inc/nebula/issues?q=is%3Aissue+is%3Aopen+label%3Aincompatible) 中已经列出已知的多处不兼容项。如果发现这种类型的新问题,请提交问题并附带`incompatible`标签。在本文搜索"compatibility"或者“兼容性”查看具体不兼容细节。 -### nGQL 和 openCypher 9的 主要差异有哪些? +### nGQL 和 openCypher 9 的 主要差异有哪些? |类别| openCypher 9 | nGQL | | :--- | :--- |:--- | -|Schema| 弱Schema | 强Schema | +|Schema| 弱 Schema | 强 Schema | |相等运算符| `=` | `==` | |数学求幂| `^` | 使用`pow(x, y)`替代`^`。 | -|边Rank| 无此概念 | 用`@rank`设置。 | +|边 Rank| 无此概念 | 用`@rank`设置。 | |语句|-|不支持 openCypher 9 的所有 DML 语句(如`CREATE`、`MERGE`等),不支持所有的 DCL, 和支持部分 `MATCH` 语法和函数(不支持`OPTIONAL MATCH`,不支持多`MATCH`,不支持 `WHERE` 中使用图 pattern)。 | |语句文本换行 | 换行符 | `\` + 换行符 | -|Label与Tag是不同的概念| Label用于寻找点(点的索引)。 | Tag用于定义点的一种类型及相应的属性,无索引功能。 | +|Label 与 Tag 是不同的概念| Label 用于寻找点(点的索引)。 | Tag 用于定义点的一种类型及相应的属性,无索引功能。 | | 预编译与参数化查询 | 支持 | 不支持 | !!! compatibility - 请注意[openCypher 9](http://www.opencypher.org/)和[Cypher](https://neo4j.com/developer/cypher/)在语法和许可上有不同: + 请注意 [openCypher 9](http://www.opencypher.org/) 和 [Cypher](https://neo4j.com/developer/cypher/) 在语法和许可上有不同: - 1. Cypher要求所有Cypher语句必须“显式地在一个事务中”执行,而openCypher没有这样的要求。另外,nGQL **没有**事务及隔离性。 + 1. Cypher 要求所有 Cypher 语句必须“显式地在一个事务中”执行,而 openCypher 没有这样的要求。另外,nGQL **没有**事务及隔离性。 2. Cypher 企业版功能有多种的约束(constraints),包括 Unique node property constraints、Node property existence constraints、Relationship property existence constraints、Node key constraints。 OpenCypher 标准中没有约束。 而 nGQL 是强 Schema 系统,前述的约束大多通过 Schema 定义可实现(包括 NOT NULL),唯一不能支持的功能是“属性值唯一性”(UNIQUE constraint)。 3. Cypher 有 APoC,openCypher 9 没有 APoC。Cypher 有 Blot 协议支持要求, openCypher 9 没有。 -### 哪里可以找到更多nGQL的示例? +### 哪里可以找到更多 nGQL 的示例? -用户可以在Nebula Graph GitHub的[features](https://github.com/vesoft-inc/nebula/tree/master/tests/tck/features)目录内查看超过2500条nGQL示例。 +用户可以在 Nebula Graph GitHub 的 [features](https://github.com/vesoft-inc/nebula/tree/master/tests/tck/features) 目录内查看超过 2500 条 nGQL 示例。 -features目录内包含很多.features格式的文件,每个文件都记录了使用nGQL的场景和示例。例如: +features 目录内包含很多。features 格式的文件,每个文件都记录了使用 nGQL 的场景和示例。例如: ```text Feature: Basic match @@ -178,21 +178,21 @@ Feature: Comparison of where clause |`Background`|描述当前文档的背景信息。| |`Given`|描述执行示例语句的前提条件。| |`Scenario`|描述具体场景。如果场景之前有`@skip`标识,表示这个场景下示例语句可能无法正常工作,请不要在生产环境中使用该示例语句。| -|`When`|描述要执行的nGQL示例语句。可以是`executing query`或`profiling query`。| -|`Then`|描述执行`When`内语句的预期返回结果。如果返回结果和文档不同,请提交[issue](https://github.com/vesoft-inc/nebula/issues)通知Nebula Graph团队。| +|`When`|描述要执行的 nGQL 示例语句。可以是`executing query`或`profiling query`。| +|`Then`|描述执行`When`内语句的预期返回结果。如果返回结果和文档不同,请提交 [issue](https://github.com/vesoft-inc/nebula/issues) 通知 Nebula Graph 团队。| |`And`|描述执行`When`内语句的副作用或执行计划。| | `@skip` | 跳过这个示例。通常表示测试代码还没有准备好。 | 欢迎[增加更多 tck case](https://github.com/vesoft-inc/nebula/tree/master/tests),在 CI/CD 中自动回归所使用的语句。 -### 是否支持TinkerPop Gremlin? +### 是否支持 TinkerPop Gremlin? 不支持。也没有计划。 -### 是否支持 W3C 的RDF(SPARQL) 或 GraphQL 等? +### 是否支持 W3C 的 RDF(SPARQL) 或 GraphQL 等? 不支持。也没有计划。 -Nebula Graph的数据模型是属性图,是一个强Schema系统,不支持RDF标准。 +Nebula Graph 的数据模型是属性图,是一个强 Schema 系统,不支持 RDF 标准。 nGQL 也不支持 SPARQL 和 GraphQL。 diff --git a/docs-2.0/3.ngql-guide/1.nGQL-overview/3.graph-patterns.md b/docs-2.0/3.ngql-guide/1.nGQL-overview/3.graph-patterns.md index 2ca32a0769a..2686ced70a1 100644 --- a/docs-2.0/3.ngql-guide/1.nGQL-overview/3.graph-patterns.md +++ b/docs-2.0/3.ngql-guide/1.nGQL-overview/3.graph-patterns.md @@ -36,31 +36,31 @@ (a)-[]->()<-[]-(c) ``` -## Tag模式 +## Tag 模式 !!! Note - nGQL中的`Tag`概念与openCypher中的`Label`有一些不同。例如,必须创建一个`Tag`之后才能使用它,而且`Tag`还定义了属性的类型。 + nGQL 中的`Tag`概念与 openCypher 中的`Label`有一些不同。例如,必须创建一个`Tag`之后才能使用它,而且`Tag`还定义了属性的类型。 -模式除了简单地描述图中的点之外,还可以描述点的Tag。例如: +模式除了简单地描述图中的点之外,还可以描述点的 Tag。例如: ```ngql (a:User)-[]->(b) ``` -模式也可以描述有多个Tag的点,例如: +模式也可以描述有多个 Tag 的点,例如: ```ngql (a:User:Admin)-[]->(b) ``` -!!! compatibility "openCypher兼容性" +!!! compatibility "openCypher 兼容性" - nGQL中的`MATCH`语句不支持用`(a:User:Admin)`匹配多个标签。如需匹配多标签可使用过滤条件,如`WHERE "User" IN tags(n) AND "Admin" IN tags(n)`。 + nGQL 中的`MATCH`语句不支持用`(a:User:Admin)`匹配多个标签。如需匹配多标签可使用过滤条件,如`WHERE "User" IN tags(n) AND "Admin" IN tags(n)`。 ## 属性模式 -点和边是图的基本结构。nGQL在这两种结构上都可以增加属性,方便实现更丰富的模型。 +点和边是图的基本结构。nGQL 在这两种结构上都可以增加属性,方便实现更丰富的模型。 在模式中,属性的表示方式为:用花括号括起一些键值对,用英文逗号分隔。例如一个点有两个属性: @@ -90,13 +90,13 @@ (a)-[r]->(b) ``` -和点上的Tag一样,边也可以有类型。描述边的类型,例如: +和点上的 Tag 一样,边也可以有类型。描述边的类型,例如: ```ngql (a)-[r:REL_TYPE]->(b) ``` -和点上的Tag不同,一条边只能有一种Edge type。但是如果我们想描述多个可选Edge type,可以用管道符号(|)将可选值分开,例如: +和点上的 Tag 不同,一条边只能有一种 Edge type。但是如果我们想描述多个可选 Edge type,可以用管道符号(|)将可选值分开,例如: ```ngql (a)-[r:TYPE1|TYPE2]->(b) @@ -116,7 +116,7 @@ (a)-[*2]->(b) ``` -该模式描述了3点2边组成的图,它们都在一条路径上(长度为2),等价于: +该模式描述了 3 点 2 边组成的图,它们都在一条路径上(长度为 2),等价于: ```ngql (a)-[]->()-[]->(b) @@ -128,9 +128,9 @@ (a)-[*3..5]->(b) ``` -`*3..5`表示最小长度为3,最大长度为5。 +`*3..5`表示最小长度为 3,最大长度为 5。 -该模式描述了4点3边、5点4边或6点5边组成的图。 +该模式描述了 4 点 3 边、5 点 4 边或 6 点 5 边组成的图。 也可以忽略最小长度,只指定最大长度,例如: @@ -144,10 +144,10 @@ ## 路径变量 -一系列连接的点和边称为`路径`。nGQL允许使用变量来命名路径,例如: +一系列连接的点和边称为`路径`。nGQL 允许使用变量来命名路径,例如: ```ngql p = (a)-[*3..5]->(b) ``` -可以在MATCH语句中使用路径变量。 +可以在 MATCH 语句中使用路径变量。 diff --git a/docs-2.0/3.ngql-guide/1.nGQL-overview/comments.md b/docs-2.0/3.ngql-guide/1.nGQL-overview/comments.md index 6575c5de436..a15b88ef3ea 100644 --- a/docs-2.0/3.ngql-guide/1.nGQL-overview/comments.md +++ b/docs-2.0/3.ngql-guide/1.nGQL-overview/comments.md @@ -1,11 +1,11 @@ # 注释 -本文介绍nGQL中的注释方式。 +本文介绍 nGQL 中的注释方式。 ## 历史版本兼容性 -* Nebula Graph 1.x支持四种注释方式: `#`、`--`、`//`、`/* */`。 -* Nebula Graph 2.x中,`--`不再是注释符。 +* Nebula Graph 1.x 支持四种注释方式:`#`、`--`、`//`、`/* */`。 +* Nebula Graph 2.x 中,`--`不再是注释符。 ## Examples @@ -20,15 +20,15 @@ nebula> RETURN 11 + \ */ 12; ``` -nGQL语句中的反斜线(\)代表换行。 +nGQL 语句中的反斜线(\)代表换行。 -## OpenCypher兼容性 +## OpenCypher 兼容性 -* 在nGQL中,用户必须在行末使用反斜线(\)来换行,即使是在使用`/* */`符号的多行注释内。 -* 在openCypher中不需要使用反斜线换行。 +* 在 nGQL 中,用户必须在行末使用反斜线(\)来换行,即使是在使用`/* */`符号的多行注释内。 +* 在 openCypher 中不需要使用反斜线换行。 ```openCypher -/* openCypher风格: +/* openCypher 风格: 这条注释 延续了不止 一行 */ @@ -37,7 +37,7 @@ RETURN n; ``` ```ngql -/* 原生nGQL风格: \ +/* 原生 nGQL 风格: \ 这条注释 \ 延续了不止 \ 一行 */ \ diff --git a/docs-2.0/3.ngql-guide/1.nGQL-overview/identifier-case-sensitivity.md b/docs-2.0/3.ngql-guide/1.nGQL-overview/identifier-case-sensitivity.md index f9b016febd9..dac38545c36 100644 --- a/docs-2.0/3.ngql-guide/1.nGQL-overview/identifier-case-sensitivity.md +++ b/docs-2.0/3.ngql-guide/1.nGQL-overview/identifier-case-sensitivity.md @@ -5,7 +5,7 @@ 以下语句会出现错误,因为`my_space`和`MY_SPACE`是两个不同的图空间。 ```ngql -nebula> CREATE SPACE my_space (vid_type=FIXED_STRING(30)); +nebula> CREATE SPACE IF NOT EXISTS my_space (vid_type=FIXED_STRING(30)); nebula> use MY_SPACE; [ERROR (-8)]: SpaceNotFound: ``` diff --git a/docs-2.0/3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md b/docs-2.0/3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md index 964a72fb5df..5936bb1b663 100644 --- a/docs-2.0/3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md +++ b/docs-2.0/3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md @@ -1,8 +1,8 @@ # 关键字 -关键字在nGQL中有重要意义,分为保留关键字和非保留关键字。 +关键字在 nGQL 中有重要意义,分为保留关键字和非保留关键字。 -非保留关键字作为标识符时可以不使用引号。保留关键字作为标识符时,需要用反引号(\`)将它们括起来,例如\`AND\`。 +非保留关键字作为标识符时可以不使用引号。保留关键字作为标识符时,需要用反引号(\`)将它们括起来,例如 \`AND\`。 !!! Note diff --git a/docs-2.0/3.ngql-guide/1.nGQL-overview/ngql-style-guide.md b/docs-2.0/3.ngql-guide/1.nGQL-overview/ngql-style-guide.md index b55e7e1ebf4..c42589f3bae 100644 --- a/docs-2.0/3.ngql-guide/1.nGQL-overview/ngql-style-guide.md +++ b/docs-2.0/3.ngql-guide/1.nGQL-overview/ngql-style-guide.md @@ -1,10 +1,10 @@ -# nGQL风格指南 +# nGQL 风格指南 -nGQL没有严格的构建格式要求,但根据恰当而统一的风格创建nGQL语句有利于提高可读性、避免歧义。在同一组织或项目中使用相同的nGQL风格有利于降低维护成本,规避因格式混乱或误解造成的问题。本文为写作nGQL语句提供了风格参考。 +nGQL 没有严格的构建格式要求,但根据恰当而统一的风格创建 nGQL 语句有利于提高可读性、避免歧义。在同一组织或项目中使用相同的 nGQL 风格有利于降低维护成本,规避因格式混乱或误解造成的问题。本文为写作 nGQL 语句提供了风格参考。 !!! compatibility - nGQL 风格与[Cypher Style Guide](https://s3.amazonaws.com/artifacts.opencypher.org/M15/docs/style-guide.pdf)不同。 + nGQL 风格与 [Cypher Style Guide](https://s3.amazonaws.com/artifacts.opencypher.org/M15/docs/style-guide.pdf) 不同。 ## 换行 @@ -44,7 +44,7 @@ nGQL没有严格的构建格式要求,但根据恰当而统一的风格创建n YIELD properties($^).name AS FriendOf, properties($$).name AS Team; ``` -3. 子句长度超过80个字符时,在合适的位置换行。 +3. 子句长度超过 80 个字符时,在合适的位置换行。 不推荐: @@ -65,13 +65,13 @@ nGQL没有严格的构建格式要求,但根据恰当而统一的风格创建n !!! note - 即使子句不超过80个字符,如需换行后有助于理解,也可将子句再次分行。 + 即使子句不超过 80 个字符,如需换行后有助于理解,也可将子句再次分行。 ## 标识符命名 -在nGQL语句中,关键字、标点符号、空格以外的字符内容都是标识符。推荐的标识符命名方式如下。 +在 nGQL 语句中,关键字、标点符号、空格以外的字符内容都是标识符。推荐的标识符命名方式如下。 -1. 使用单数名词命名Tag,用原型动词或动词短语构成Edge type。 +1. 使用单数名词命名 Tag,用原型动词或动词短语构成 Edge type。 不推荐: @@ -111,7 +111,7 @@ nGQL没有严格的构建格式要求,但根据恰当而统一的风格创建n go from "player100" over Follow ``` - 推荐: + 推荐: ```ngql GO FROM "player100" OVER follow @@ -119,7 +119,7 @@ nGQL没有严格的构建格式要求,但根据恰当而统一的风格创建n ## Pattern -1. 分行写Pattern时,在表示边的箭头右侧换行,而不是左侧。 +1. 分行写 Pattern 时,在表示边的箭头右侧换行,而不是左侧。 不推荐: @@ -187,7 +187,7 @@ nGQL没有严格的构建格式要求,但根据恰当而统一的风格创建n !!! note - 字符串中需要嵌套单引号或双引号时,用反斜线(\)转义。例如: + 字符串中需要嵌套单引号或双引号时,用反斜线(\)转义。例如: ```ngql RETURN "\"Nebula Graph is amazing,\" the user says."; @@ -197,7 +197,7 @@ nGQL没有严格的构建格式要求,但根据恰当而统一的风格创建n ## 结束语句 -1. 用英文分号(;)结束nGQL语句。 +1. 用英文分号(;)结束 nGQL 语句。 不推荐: diff --git a/docs-2.0/3.ngql-guide/10.tag-statements/1.create-tag.md b/docs-2.0/3.ngql-guide/10.tag-statements/1.create-tag.md index 4a92d30590c..2295bfef21d 100644 --- a/docs-2.0/3.ngql-guide/10.tag-statements/1.create-tag.md +++ b/docs-2.0/3.ngql-guide/10.tag-statements/1.create-tag.md @@ -1,21 +1,21 @@ # CREATE TAG -`CREATE TAG`语句可以通过指定名称创建一个Tag。 +`CREATE TAG`语句可以通过指定名称创建一个 Tag。 -## OpenCypher兼容性 +## OpenCypher 兼容性 -nGQL中的Tag和openCypher中的Label相似,但又有所不同,例如它们的创建方式。 +nGQL 中的 Tag 和 openCypher 中的 Label 相似,但又有所不同,例如它们的创建方式。 -* openCypher中的Label需要在`CREATE`语句中与点一起创建。 -* nGQL中的Tag需要使用`CREATE TAG`语句独立创建。Tag更像是MySQL中的表。 +* openCypher 中的 Label 需要在`CREATE`语句中与点一起创建。 +* nGQL 中的 Tag 需要使用`CREATE TAG`语句独立创建。Tag 更像是 MySQL 中的表。 ## 前提条件 -执行`CREATE TAG`语句需要当前登录的用户拥有指定图空间的[创建Tag权限](../../7.data-security/1.authentication/3.role-list.md),否则会报错。 +执行`CREATE TAG`语句需要当前登录的用户拥有指定图空间的[创建 Tag 权限](../../7.data-security/1.authentication/3.role-list.md),否则会报错。 ## 语法 -创建Tag前,需要先用`USE`语句指定工作空间。 +创建 Tag 前,需要先用`USE`语句指定工作空间。 ```ngql CREATE TAG [IF NOT EXISTS] @@ -30,41 +30,41 @@ CREATE TAG [IF NOT EXISTS] |参数|说明| |:---|:---| -|`IF NOT EXISTS`|检测待创建的Tag是否存在,只有不存在时,才会创建Tag。仅检测Tag的名称,不会检测具体属性。| -|``|每个图空间内的Tag必须是唯一的。Tag名称设置后无法修改。Tag名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。| -|``|属性名称。每个Tag中的属性名称必须唯一。属性的命名规则与Tag相同。| +|`IF NOT EXISTS`|检测待创建的 Tag 是否存在,只有不存在时,才会创建 Tag。仅检测 Tag 的名称,不会检测具体属性。| +|``|每个图空间内的 Tag 必须是唯一的。Tag 名称设置后无法修改。Tag 名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。| +|``|属性名称。每个 Tag 中的属性名称必须唯一。属性的命名规则与 Tag 相同。| |``|属性的数据类型,目前支持[数值](../3.data-types/1.numeric.md)、[布尔](../3.data-types/2.boolean.md)、[字符串](../3.data-types/3.string.md)以及[日期与时间](../3.data-types/4.date-and-time.md)。| |`NULL \| NOT NULL`|指定属性值是否支持为`NULL`。默认值为`NULL`。| -|`DEFAULT`|指定属性的默认值。默认值可以是一个文字值或Nebula Graph支持的表达式。如果插入点时没有指定某个属性的值,则使用默认值。| -|`COMMENT`|对单个属性或Tag的描述。最大为256字节。默认无描述。| +|`DEFAULT`|指定属性的默认值。默认值可以是一个文字值或 Nebula Graph 支持的表达式。如果插入点时没有指定某个属性的值,则使用默认值。| +|`COMMENT`|对单个属性或 Tag 的描述。最大为 256 字节。默认无描述。| |`TTL_DURATION`|指定属性存活时间。超时的属性将会过期。属性值和时间戳差值之和如果小于当前时间戳,属性就会过期。默认值为`0`,表示属性永不过期。| -|`TTL_COL`|指定要设置存活时间的属性。属性的数据类型必须是`int`或者`timestamp`。一个Tag只能指定一个字段为`TTL_COL`。更多TTL的信息请参见[TTL](../8.clauses-and-options/ttl-options.md)。| +|`TTL_COL`|指定要设置存活时间的属性。属性的数据类型必须是`int`或者`timestamp`。一个 Tag 只能指定一个字段为`TTL_COL`。更多 TTL 的信息请参见 [TTL](../8.clauses-and-options/ttl-options.md)。| ## 示例 ```ngql -nebula> CREATE TAG player(name string, age int); +nebula> CREATE TAG IF NOT EXISTS player(name string, age int); -# 创建没有属性的Tag。 -nebula> CREATE TAG no_property();  +# 创建没有属性的 Tag。 +nebula> CREATE TAG IF NOT EXISTS no_property();  -# 创建包含默认值的Tag。 -nebula> CREATE TAG player_with_default(name string, age int DEFAULT 20); +# 创建包含默认值的 Tag。 +nebula> CREATE TAG IF NOT EXISTS player_with_default(name string, age int DEFAULT 20); -# 对字段create_time设置TTL为100秒。 -nebula> CREATE TAG woman(name string, age int, \ +# 对字段 create_time 设置 TTL 为 100 秒。 +nebula> CREATE TAG IF NOT EXISTS woman(name string, age int, \ married bool, salary double, create_time timestamp) \ TTL_DURATION = 100, TTL_COL = "create_time"; ``` -## 创建Tag说明 +## 创建 Tag 说明 -尝试使用新创建的Tag可能会失败,因为创建是异步实现的。 +尝试使用新创建的 Tag 可能会失败,因为创建是异步实现的。 -Nebula Graph将在下一个心跳周期内完成Tag的创建,为了确保创建成功,可以使用如下方法之一: +Nebula Graph 将在下一个心跳周期内完成 Tag 的创建,为了确保创建成功,可以使用如下方法之一: -- 在[`SHOW TAGS`](4.show-tags.md)语句的结果中查找新的Tag,如果找不到,请等待几秒重试。 +- 在 [`SHOW TAGS`](4.show-tags.md) 语句的结果中查找新的 Tag,如果找不到,请等待几秒重试。 -- 等待两个心跳周期,例如20秒。 +- 等待两个心跳周期,例如 20 秒。 如果需要修改心跳间隔,请为[所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)修改参数`heartbeat_interval_secs`。 diff --git a/docs-2.0/3.ngql-guide/10.tag-statements/2.drop-tag.md b/docs-2.0/3.ngql-guide/10.tag-statements/2.drop-tag.md index 7b590341e09..824038b1599 100644 --- a/docs-2.0/3.ngql-guide/10.tag-statements/2.drop-tag.md +++ b/docs-2.0/3.ngql-guide/10.tag-statements/2.drop-tag.md @@ -1,20 +1,20 @@ # DROP TAG -`DROP TAG`语句可以删除当前工作空间内所有点上的指定Tag。 +`DROP TAG`语句可以删除当前工作空间内所有点上的指定 Tag。 -点可以有一个或多个Tag。 +点可以有一个或多个 Tag。 -- 如果某个点只有一个Tag,删除这个Tag后,用户就**无法访问**这个点,下次Compaction操作时会删除该点,但点上的边仍然存在。 +- 如果某个点只有一个 Tag,删除这个 Tag 后,用户就**无法访问**这个点,下次 Compaction 操作时会删除该点,但点上的边仍然存在。 -- 如果某个点有多个Tag,删除其中一个Tag,仍然可以访问这个点,但是**无法访问**已删除Tag所定义的所有属性。 +- 如果某个点有多个 Tag,删除其中一个 Tag,仍然可以访问这个点,但是**无法访问**已删除 Tag 所定义的所有属性。 -删除Tag操作仅删除Schema数据,硬盘上的文件或目录不会立刻删除,而是在下一次Compaction操作时删除。 +删除 Tag 操作仅删除 Schema 数据,硬盘上的文件或目录不会立刻删除,而是在下一次 Compaction 操作时删除。 ## 前提条件 - 登录的用户必须拥有对应权限才能执行`DROP TAG`语句。详情请参见[内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。 -- 确保Tag不包含任何索引,否则`DROP TAG`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见[drop index](../14.native-index-statements/6.drop-native-index.md)。 +- 确保 Tag 不包含任何索引,否则`DROP TAG`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见 [drop index](../14.native-index-statements/6.drop-native-index.md)。 ## 语法 @@ -22,13 +22,13 @@ DROP TAG [IF EXISTS] ; ``` -- `IF EXISTS`:检测待删除的Tag是否存在,只有存在时,才会删除Tag。 +- `IF EXISTS`:检测待删除的 Tag 是否存在,只有存在时,才会删除 Tag。 -- `tag_name`:指定要删除的Tag名称。一次只能删除一个Tag。 +- `tag_name`:指定要删除的 Tag 名称。一次只能删除一个 Tag。 ## 示例 ```ngql -nebula> CREATE TAG test(p1 string, p2 int); +nebula> CREATE TAG IF NOT EXISTS test(p1 string, p2 int); nebula> DROP TAG test; ``` diff --git a/docs-2.0/3.ngql-guide/10.tag-statements/3.alter-tag.md b/docs-2.0/3.ngql-guide/10.tag-statements/3.alter-tag.md index 424c989cab5..7cb673ba2c6 100644 --- a/docs-2.0/3.ngql-guide/10.tag-statements/3.alter-tag.md +++ b/docs-2.0/3.ngql-guide/10.tag-statements/3.alter-tag.md @@ -1,12 +1,12 @@ # ALTER TAG -`ALTER TAG`语句可以修改Tag的结构。例如增删属性、修改数据类型,也可以为属性设置、修改[TTL](../8.clauses-and-options/ttl-options.md)(Time-To-Live)。 +`ALTER TAG`语句可以修改 Tag 的结构。例如增删属性、修改数据类型,也可以为属性设置、修改 [TTL](../8.clauses-and-options/ttl-options.md)(Time-To-Live)。 ## 前提条件 - 登录的用户必须拥有对应权限才能执行`ALTER TAG`语句。详情请参见[内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。 -- 确保要修改的属性不包含索引,否则`ALTER TAG`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见[drop index](../14.native-index-statements/6.drop-native-index.md)。 +- 确保要修改的属性不包含索引,否则`ALTER TAG`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见 [drop index](../14.native-index-statements/6.drop-native-index.md)。 ## 语法 @@ -25,27 +25,27 @@ ttl_definition: TTL_DURATION = ttl_duration, TTL_COL = prop_name ``` -- `tag_name`:指定要修改的Tag名称。一次只能修改一个Tag。请确保要修改的Tag在当前工作空间中存在,否则会报错。 +- `tag_name`:指定要修改的 Tag 名称。一次只能修改一个 Tag。请确保要修改的 Tag 在当前工作空间中存在,否则会报错。 - 可以在一个`ALTER TAG`语句中使用多个`ADD`、`DROP`和`CHANGE`子句,子句之间用英文逗号(,)分隔。 ## 示例 ```ngql -nebula> CREATE TAG t1 (p1 string, p2 int); +nebula> CREATE TAG IF NOT EXISTS t1 (p1 string, p2 int); nebula> ALTER TAG t1 ADD (p3 int, p4 string); nebula> ALTER TAG t1 TTL_DURATION = 2, TTL_COL = "p2"; nebula> ALTER TAG t1 COMMENT = 'test1'; ``` -## 修改Tag说明 +## 修改 Tag 说明 -尝试使用刚修改的Tag可能会失败,因为修改是异步实现的。 +尝试使用刚修改的 Tag 可能会失败,因为修改是异步实现的。 -Nebula Graph将在下一个心跳周期内完成Tag的修改,为了确保修改成功,可以使用如下方法之一: +Nebula Graph 将在下一个心跳周期内完成 Tag 的修改,为了确保修改成功,可以使用如下方法之一: -- 在[`DESCRIBE TAG`](5.describe-tag.md)语句的结果中查看Tag信息,确认修改成功。如果没有修改成功,请等待几秒重试。 +- 在 [`DESCRIBE TAG`](5.describe-tag.md) 语句的结果中查看 Tag 信息,确认修改成功。如果没有修改成功,请等待几秒重试。 -- 等待两个心跳周期,例如20秒。 +- 等待两个心跳周期,例如 20 秒。 如果需要修改心跳间隔,请为[所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)修改参数`heartbeat_interval_secs`。 diff --git a/docs-2.0/3.ngql-guide/10.tag-statements/4.show-tags.md b/docs-2.0/3.ngql-guide/10.tag-statements/4.show-tags.md index 64eb0921d0f..c131833511f 100644 --- a/docs-2.0/3.ngql-guide/10.tag-statements/4.show-tags.md +++ b/docs-2.0/3.ngql-guide/10.tag-statements/4.show-tags.md @@ -1,6 +1,6 @@ # SHOW TAGS -`SHOW TAGS`语句显示当前图空间内的所有Tag名称。 +`SHOW TAGS`语句显示当前图空间内的所有 Tag 名称。 执行`SHOW TAGS`语句不需要任何权限,但是返回结果由登录的用户[权限](../../7.data-security/1.authentication/3.role-list.md)决定。 diff --git a/docs-2.0/3.ngql-guide/10.tag-statements/5.describe-tag.md b/docs-2.0/3.ngql-guide/10.tag-statements/5.describe-tag.md index c514b76c6d1..8a7c1893472 100644 --- a/docs-2.0/3.ngql-guide/10.tag-statements/5.describe-tag.md +++ b/docs-2.0/3.ngql-guide/10.tag-statements/5.describe-tag.md @@ -1,6 +1,6 @@ # DESCRIBE TAG -`DESCRIBE TAG`显示指定Tag的详细信息,例如字段名称、数据类型等。 +`DESCRIBE TAG`显示指定 Tag 的详细信息,例如字段名称、数据类型等。 ## 前提条件 diff --git a/docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md b/docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md index ede5aad5df0..546ab020a2d 100644 --- a/docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md +++ b/docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md @@ -1,12 +1,12 @@ # DELETE TAG -`DELETE TAG`语句可以删除指定点上的指定Tag。 +`DELETE TAG`语句可以删除指定点上的指定 Tag。 -点可以有一个或多个Tag。 +点可以有一个或多个 Tag。 -- 如果某个点只有一个Tag,删除这个点上的Tag后,用户就**无法访问**这个点,下次Compaction操作时会删除该点,但点上的边仍然存在。 +- 如果某个点只有一个 Tag,删除这个点上的 Tag 后,用户就**无法访问**这个点,下次 Compaction 操作时会删除该点,但点上的边仍然存在。 -- 如果某个点有多个Tag,删除其中一个Tag,仍然可以访问这个点,但是**无法访问**这个点上已删除Tag所定义的所有属性。 +- 如果某个点有多个 Tag,删除其中一个 Tag,仍然可以访问这个点,但是**无法访问**这个点上已删除 Tag 所定义的所有属性。 ## 前提条件 @@ -18,15 +18,15 @@ DELETE TAG FROM ; ``` -- `tag_name_list`:指定Tag名称。多个Tag用英文逗号(,)分隔,也可以用`*`表示所有Tag。 +- `tag_name_list`:指定 Tag 名称。多个 Tag 用英文逗号(,)分隔,也可以用`*`表示所有 Tag。 -- `VID`:指定要删除Tag的点ID。 +- `VID`:指定要删除 Tag 的点 ID。 ## 示例 ```ngql -nebula> CREATE TAG test1(p1 string, p2 int); -nebula> CREATE TAG test2(p3 string, p4 int); +nebula> CREATE TAG IF NOT EXISTS test1(p1 string, p2 int); +nebula> CREATE TAG IF NOT EXISTS test2(p3 string, p4 int); nebula> INSERT VERTEX test1(p1, p2),test2(p3, p4) VALUES "test":("123", 1, "456", 2); nebula> FETCH PROP ON * "test"; +------------------------------------------------------------+ @@ -48,10 +48,8 @@ nebula> FETCH PROP ON * "test"; +-----------+ | vertices_ | +-----------+ -+-----------+ ``` - !!! Compatibility * 在 openCypher 中,可以使用 `REMOVE v:LABEL` 语句来移除该点 `v` 的 `LABEL`。 diff --git a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md b/docs-2.0/3.ngql-guide/10.tag-statements/improve-query-by-tag-index.md similarity index 53% rename from docs-2.0/8.service-tuning/improve-query-by-tag-index.md rename to docs-2.0/3.ngql-guide/10.tag-statements/improve-query-by-tag-index.md index f64ecc07d82..9ad2c1c1fdd 100644 --- a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md +++ b/docs-2.0/3.ngql-guide/10.tag-statements/improve-query-by-tag-index.md @@ -1,23 +1,23 @@ # 增加和删除标签 -在openCypher中,有增加标签(`SET label`)和移除标签(`REMOVE label`)的功能,可以用于加速查询或者标记过程。 +在 openCypher 中,有增加标签(`SET label`)和移除标签(`REMOVE label`)的功能,可以用于加速查询或者标记过程。 -在Nebula Graph中,可以通过Tag变相实现相同操作,创建Tag并将Tag插入到已有的点上,就可以根据Tag名称快速查找点,也可以通过`DELETE TAG`删除某些点上不再需要的Tag。 +在 Nebula Graph 中,可以通过 Tag 变相实现相同操作,创建 Tag 并将 Tag 插入到已有的点上,就可以根据 Tag 名称快速查找点,也可以通过`DELETE TAG`删除某些点上不再需要的 Tag。 !!! caution - 请确保点上已经有另一个Tag,否则删除点上最后一个Tag时,会导致点也被删除。 + 请确保点上已经有另一个 Tag,否则删除点上最后一个 Tag 时,会导致点也被删除。 ## 示例 -例如在basketballplayer数据集中,部分篮球运动员同时也是球队股东,可以为股东Tag`shareholder`创建索引,方便快速查找。如果不再是股东,可以通过`DELETE TAG`语句删除相应运动员的股东Tag。 +例如在 basketballplayer 数据集中,部分篮球运动员同时也是球队股东,可以为股东 Tag`shareholder`创建索引,方便快速查找。如果不再是股东,可以通过`DELETE TAG`语句删除相应运动员的股东 Tag。 ```ngql -//创建股东Tag和索引 -nebula> CREATE TAG shareholder(); -nebula> CREATE TAG INDEX shareholder_tag on shareholder(); +//创建股东 Tag 和索引 +nebula> CREATE TAG IF NOT EXISTS shareholder(); +nebula> CREATE TAG INDEX IF NOT EXISTS shareholder_tag on shareholder(); -//为点添加Tag +//为点添加 Tag nebula> INSERT VERTEX shareholder() VALUES "player100":(); nebula> INSERT VERTEX shareholder() VALUES "player101":(); @@ -37,7 +37,7 @@ nebula> LOOKUP ON shareholder; | "player101" | +-------------+ -//如果player100不再是股东 +//如果 player100 不再是股东 nebula> DELETE TAG shareholder FROM "player100"; nebula> LOOKUP ON shareholder; +-------------+ diff --git a/docs-2.0/3.ngql-guide/11.edge-type-statements/1.create-edge.md b/docs-2.0/3.ngql-guide/11.edge-type-statements/1.create-edge.md index 3ba88807761..a966ad87df7 100644 --- a/docs-2.0/3.ngql-guide/11.edge-type-statements/1.create-edge.md +++ b/docs-2.0/3.ngql-guide/11.edge-type-statements/1.create-edge.md @@ -1,21 +1,21 @@ # CREATE EDGE -`CREATE EDGE`语句可以通过指定名称创建一个Edge type。 +`CREATE EDGE`语句可以通过指定名称创建一个 Edge type。 -## OpenCypher兼容性 +## OpenCypher 兼容性 -nGQL中的Edge type和openCypher中的关系类型相似,但又有所不同,例如它们的创建方式。 +nGQL 中的 Edge type 和 openCypher 中的关系类型相似,但又有所不同,例如它们的创建方式。 -* openCypher中的关系类型需要在`CREATE`语句中与点一起创建。 -* nGQL中的Edge type需要使用`CREATE EDGE`语句独立创建。Edge type更像是MySQL中的表。 +* openCypher 中的关系类型需要在`CREATE`语句中与点一起创建。 +* nGQL 中的 Edge type 需要使用`CREATE EDGE`语句独立创建。Edge type 更像是 MySQL 中的表。 ## 前提条件 -执行`CREATE EDGE`语句需要当前登录的用户拥有指定图空间的[创建Edge type权限](../../7.data-security/1.authentication/3.role-list.md),否则会报错。 +执行`CREATE EDGE`语句需要当前登录的用户拥有指定图空间的[创建 Edge type 权限](../../7.data-security/1.authentication/3.role-list.md),否则会报错。 ## 语法 -创建Edge type前,需要先用`USE`语句指定工作空间。 +创建 Edge type 前,需要先用`USE`语句指定工作空间。 ```ngql CREATE EDGE [IF NOT EXISTS] @@ -30,28 +30,28 @@ CREATE EDGE [IF NOT EXISTS] |参数|说明| |:---|:---| -|`IF NOT EXISTS`|检测待创建的Edge type是否存在,只有不存在时,才会创建Edge type。仅检测Edge type的名称,不会检测具体属性。| -|``|每个图空间内的Edge type必须是唯一的。Edge type名称设置后无法修改。Edge type名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。| -|``|属性名称。每个Edge type中的属性名称必须唯一。属性的命名规则与Edge type相同。| +|`IF NOT EXISTS`|检测待创建的 Edge type 是否存在,只有不存在时,才会创建 Edge type。仅检测 Edge type 的名称,不会检测具体属性。| +|``|每个图空间内的 Edge type 必须是唯一的。Edge type 名称设置后无法修改。Edge type 名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。| +|``|属性名称。每个 Edge type 中的属性名称必须唯一。属性的命名规则与 Edge type 相同。| |``|属性的数据类型,目前支持[数值](../3.data-types/1.numeric.md)、[布尔](../3.data-types/2.boolean.md)、[字符串](../3.data-types/3.string.md)以及[日期与时间](../3.data-types/4.date-and-time.md)。| |`NULL \| NOT NULL`|指定属性值是否支持为`NULL`。默认值为`NULL`。| -|`DEFAULT`|指定属性的默认值。默认值可以是一个文字值或Nebula Graph支持的表达式。如果插入边时没有指定某个属性的值,则使用默认值。| -|`COMMENT`|对单个属性或Edge type的描述。最大为256字节。默认无描述。| +|`DEFAULT`|指定属性的默认值。默认值可以是一个文字值或 Nebula Graph 支持的表达式。如果插入边时没有指定某个属性的值,则使用默认值。| +|`COMMENT`|对单个属性或 Edge type 的描述。最大为 256 字节。默认无描述。| |`TTL_DURATION`|指定属性存活时间。超时的属性将会过期。属性值和时间戳差值之和如果小于当前时间戳,属性就会过期。默认值为`0`,表示属性永不过期。| -|`TTL_COL`|指定要设置存活时间的属性。属性的数据类型必须是`int`或者`timestamp`。一个Edge type只能指定一个字段为`TTL_COL`。更多TTL的信息请参见[TTL](../8.clauses-and-options/ttl-options.md)。| +|`TTL_COL`|指定要设置存活时间的属性。属性的数据类型必须是`int`或者`timestamp`。一个 Edge type 只能指定一个字段为`TTL_COL`。更多 TTL 的信息请参见 [TTL](../8.clauses-and-options/ttl-options.md)。| ### 示例 ```ngql -nebula> CREATE EDGE follow(degree int); +nebula> CREATE EDGE IF NOT EXISTS follow(degree int); -# 创建没有属性的Edge type。 -nebula> CREATE EDGE no_property(); +# 创建没有属性的 Edge type。 +nebula> CREATE EDGE IF NOT EXISTS no_property(); -# 创建包含默认值的Edge type。 -nebula> CREATE EDGE follow_with_default(degree int DEFAULT 20); +# 创建包含默认值的 Edge type。 +nebula> CREATE EDGE IF NOT EXISTS follow_with_default(degree int DEFAULT 20); -# 对字段p2设置TTL为100秒。 -nebula> CREATE EDGE e1(p1 string, p2 int, p3 timestamp) \ +# 对字段 p2 设置 TTL 为 100 秒。 +nebula> CREATE EDGE IF NOT EXISTS e1(p1 string, p2 int, p3 timestamp) \ TTL_DURATION = 100, TTL_COL = "p2"; ``` diff --git a/docs-2.0/3.ngql-guide/11.edge-type-statements/2.drop-edge.md b/docs-2.0/3.ngql-guide/11.edge-type-statements/2.drop-edge.md index b9d7009d7a2..8fe1814ae99 100644 --- a/docs-2.0/3.ngql-guide/11.edge-type-statements/2.drop-edge.md +++ b/docs-2.0/3.ngql-guide/11.edge-type-statements/2.drop-edge.md @@ -1,16 +1,16 @@ # DROP EDGE -`DROP EDGE`语句可以删除当前工作空间内的指定Edge type。 +`DROP EDGE`语句可以删除当前工作空间内的指定 Edge type。 -一个边只能有一个Edge type,删除这个Edge type后,用户就**无法访问**这个边,下次Compaction操作时会删除该边。 +一个边只能有一个 Edge type,删除这个 Edge type 后,用户就**无法访问**这个边,下次 Compaction 操作时会删除该边。 -删除Edge type操作仅删除Schema数据,硬盘上的文件或目录不会立刻删除,而是在下一次Compaction操作时删除。 +删除 Edge type 操作仅删除 Schema 数据,硬盘上的文件或目录不会立刻删除,而是在下一次 Compaction 操作时删除。 ## 前提条件 - 登录的用户必须拥有对应权限才能执行`DROP EDGE`语句。详情请参见[内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。 -- 确保Edge type不包含任何索引,否则`DROP EDGE`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见[drop index](../14.native-index-statements/6.drop-native-index.md)。 +- 确保 Edge type 不包含任何索引,否则`DROP EDGE`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见 [drop index](../14.native-index-statements/6.drop-native-index.md)。 ## 语法 @@ -18,13 +18,13 @@ DROP EDGE [IF EXISTS] ``` -- `IF EXISTS`:检测待删除的Edge type是否存在,只有存在时,才会删除Edge type。 +- `IF EXISTS`:检测待删除的 Edge type 是否存在,只有存在时,才会删除 Edge type。 -- `edge_type_name`:指定要删除的Edge type名称。一次只能删除一个Edge type。 +- `edge_type_name`:指定要删除的 Edge type 名称。一次只能删除一个 Edge type。 ## 示例 ```ngql -nebula> CREATE EDGE e1(p1 string, p2 int); +nebula> CREATE EDGE IF NOT EXISTS e1(p1 string, p2 int); nebula> DROP EDGE e1; ``` diff --git a/docs-2.0/3.ngql-guide/11.edge-type-statements/3.alter-edge.md b/docs-2.0/3.ngql-guide/11.edge-type-statements/3.alter-edge.md index b75f928b7c9..e7575eee34a 100644 --- a/docs-2.0/3.ngql-guide/11.edge-type-statements/3.alter-edge.md +++ b/docs-2.0/3.ngql-guide/11.edge-type-statements/3.alter-edge.md @@ -1,12 +1,12 @@ # ALTER EDGE -`ALTER EDGE`语句可以修改Edge type的结构。例如增删属性、修改数据类型,也可以为属性设置、修改[TTL](../8.clauses-and-options/ttl-options.md)(Time-To-Live)。 +`ALTER EDGE`语句可以修改 Edge type 的结构。例如增删属性、修改数据类型,也可以为属性设置、修改 [TTL](../8.clauses-and-options/ttl-options.md)(Time-To-Live)。 ## 前提条件 - 登录的用户必须拥有对应权限才能执行`ALTER EDGE`语句。详情请参见[内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。 -- 确保要修改的属性不包含索引,否则`ALTER EDGE`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见[drop index](../14.native-index-statements/6.drop-native-index.md)。 +- 确保要修改的属性不包含索引,否则`ALTER EDGE`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见 [drop index](../14.native-index-statements/6.drop-native-index.md)。 ## 语法 @@ -25,27 +25,27 @@ ttl_definition: TTL_DURATION = ttl_duration, TTL_COL = prop_name ``` -- `edge_type_name`:指定要修改的Edge type名称。一次只能修改一个Edge type。请确保要修改的Edge type在当前工作空间中存在,否则会报错。 +- `edge_type_name`:指定要修改的 Edge type 名称。一次只能修改一个 Edge type。请确保要修改的 Edge type 在当前工作空间中存在,否则会报错。 - 可以在一个`ALTER EDGE`语句中使用多个`ADD`、`DROP`和`CHANGE`子句,子句之间用英文逗号(,)分隔。 ## 示例 ```ngql -nebula> CREATE EDGE e1(p1 string, p2 int); +nebula> CREATE EDGE IF NOT EXISTS e1(p1 string, p2 int); nebula> ALTER EDGE e1 ADD (p3 int, p4 string); nebula> ALTER EDGE e1 TTL_DURATION = 2, TTL_COL = "p2"; nebula> ALTER EDGE e1 COMMENT = 'edge1'; ``` -## 修改Edge type说明 +## 修改 Edge type 说明 -尝试使用刚修改的Edge type可能会失败,因为修改是异步实现的。 +尝试使用刚修改的 Edge type 可能会失败,因为修改是异步实现的。 -Nebula Graph将在下一个心跳周期内完成Edge type的修改,为了确保修改成功,可以使用如下方法之一: +Nebula Graph 将在下一个心跳周期内完成 Edge type 的修改,为了确保修改成功,可以使用如下方法之一: -- 在[`DESCRIBE EDGE`](5.describe-edge.md)语句的结果中查看Edge type信息,确认修改成功。如果没有修改成功,请等待几秒重试。 +- 在 [`DESCRIBE EDGE`](5.describe-edge.md) 语句的结果中查看 Edge type 信息,确认修改成功。如果没有修改成功,请等待几秒重试。 -- 等待两个心跳周期,例如20秒。 +- 等待两个心跳周期,例如 20 秒。 如果需要修改心跳间隔,请为[所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)修改参数`heartbeat_interval_secs`。 \ No newline at end of file diff --git a/docs-2.0/3.ngql-guide/11.edge-type-statements/4.show-edges.md b/docs-2.0/3.ngql-guide/11.edge-type-statements/4.show-edges.md index a99e3cb24af..421ca46dce3 100644 --- a/docs-2.0/3.ngql-guide/11.edge-type-statements/4.show-edges.md +++ b/docs-2.0/3.ngql-guide/11.edge-type-statements/4.show-edges.md @@ -1,8 +1,8 @@ # SHOW EDGES -`SHOW EDGES`语句显示当前图空间内的所有Edge type名称。 +`SHOW EDGES`语句显示当前图空间内的所有 Edge type 名称。 -执行`SHOW EDGES`语句不需要任何权限,但是返回结果由登录的用户[权限](../../7.data-security/1.authentication/3.role-list.md)决定。 +执行`SHOW EDGES`语句不需要任何权限,但是返回结果由登录的用户[权限](../../7.data-security/1.authentication/3.role-list.md) 决定。 ## 语法 diff --git a/docs-2.0/3.ngql-guide/11.edge-type-statements/5.describe-edge.md b/docs-2.0/3.ngql-guide/11.edge-type-statements/5.describe-edge.md index 8f84436695c..e9826571268 100644 --- a/docs-2.0/3.ngql-guide/11.edge-type-statements/5.describe-edge.md +++ b/docs-2.0/3.ngql-guide/11.edge-type-statements/5.describe-edge.md @@ -1,6 +1,6 @@ # DESCRIBE EDGE -`DESCRIBE EDGE`显示指定Edge type的详细信息,例如字段名称、数据类型等。 +`DESCRIBE EDGE`显示指定 Edge type 的详细信息,例如字段名称、数据类型等。 ## 前提条件 diff --git a/docs-2.0/3.ngql-guide/12.vertex-statements/1.insert-vertex.md b/docs-2.0/3.ngql-guide/12.vertex-statements/1.insert-vertex.md index 6557c47dd6e..b6ad732c324 100644 --- a/docs-2.0/3.ngql-guide/12.vertex-statements/1.insert-vertex.md +++ b/docs-2.0/3.ngql-guide/12.vertex-statements/1.insert-vertex.md @@ -1,6 +1,6 @@ # INSERT VERTEX -`INSERT VERTEX`语句可以在Nebula Graph实例的指定图空间中插入一个或多个点。 +`INSERT VERTEX`语句可以在 Nebula Graph 实例的指定图空间中插入一个或多个点。 ## 前提条件 @@ -19,28 +19,28 @@ prop_value_list: [prop_value [, prop_value] ...] ``` -- `IF NOT EXISTS`:用户可以使用`IF NOT EXISTS`关键字检测待插入的VID是否存在,只有不存在时,才会插入,如果已经存在,不会进行修改。 +- `IF NOT EXISTS`:用户可以使用`IF NOT EXISTS`关键字检测待插入的 VID 是否存在,只有不存在时,才会插入,如果已经存在,不会进行修改。 !!! Note - `IF NOT EXISTS` 仅检测 VID + Tag 的值是否相同,不会检测属性值。 - `IF NOT EXISTS` 会先读取一次数据是否存在,因此对性能会有明显影响。 -- `tag_name`:点关联的Tag(点类型)。Tag必须提前创建,详情请参见[CREATE TAG](../10.tag-statements/1.create-tag.md)。 +- `tag_name`:点关联的 Tag(点类型)。Tag 必须提前创建,详情请参见 [CREATE TAG](../10.tag-statements/1.create-tag.md)。 - `prop_name_list`:需要设置的属性名称列表。 -- `VID`:点ID。在Nebula Graph 2.0中支持字符串和整数,需要在创建图空间时设置,详情请参见[CREATE SPACE](../9.space-statements/1.create-space.md)。 +- `VID`:点 ID。在 Nebula Graph 2.0 中支持字符串和整数,需要在创建图空间时设置,详情请参见 [CREATE SPACE](../9.space-statements/1.create-space.md)。 -- `prop_value_list`:根据`prop_name_list`填写属性值。如果属性值和Tag中的数据类型不匹配,会返回错误。如果没有填写属性值,而Tag中对应的属性设置为`NOT NULL`,也会返回错误。详情请参见[CREATE TAG](../10.tag-statements/1.create-tag.md)。 +- `prop_value_list`:根据`prop_name_list`填写属性值。如果属性值和 Tag 中的数据类型不匹配,会返回错误。如果没有填写属性值,而 Tag 中对应的属性设置为`NOT NULL`,也会返回错误。详情请参见 [CREATE TAG](../10.tag-statements/1.create-tag.md)。 !!! caution - `INSERT VERTEX`与openCypher中`CREATE`的语意不同: + `INSERT VERTEX`与 openCypher 中`CREATE`的语意不同: - - `INSERT VERTEX`语意更接近于NoSQL(key-value)方式的INSERT语意,或者SQL中的`UPSERT` (`UPDATE` or `INSERT`)。 + - `INSERT VERTEX`语意更接近于 NoSQL(key-value) 方式的 INSERT 语意,或者 SQL 中的`UPSERT` (`UPDATE` or `INSERT`)。 - 相同`VID`和`TAG`的情况下,如果没有使用`IF NOT EXISTS`,新写入的数据会覆盖旧数据,不存在时会新写入。 - - 相同`VID`但不同`TAG`的情况下,不同TAG对应的记录不会相互覆盖,不存在会新写入。 + - 相同`VID`但不同`TAG`的情况下,不同 TAG 对应的记录不会相互覆盖,不存在会新写入。 参考以下示例。 @@ -48,26 +48,26 @@ prop_value_list: ```ngql # 插入不包含属性的点。 -nebula> CREATE TAG t1(); +nebula> CREATE TAG IF NOT EXISTS t1(); nebula> INSERT VERTEX t1() VALUE "10":(); ``` ```ngql -nebula> CREATE TAG t2 (name string, age int); +nebula> CREATE TAG IF NOT EXISTS t2 (name string, age int); nebula> INSERT VERTEX t2 (name, age) VALUES "11":("n1", 12); -# 创建失败,因为"a13"不是int类型。 +# 创建失败,因为"a13"不是 int 类型。 nebula> INSERT VERTEX t2 (name, age) VALUES "12":("n1", "a13"); -# 一次插入2个点。 +# 一次插入 2 个点。 nebula> INSERT VERTEX t2 (name, age) VALUES "13":("n3", 12), "14":("n4", 8); ``` ```ngql -nebula> CREATE TAG t3(p1 int); -nebula> CREATE TAG t4(p2 string); +nebula> CREATE TAG IF NOT EXISTS t3(p1 int); +nebula> CREATE TAG IF NOT EXISTS t4(p2 string); -# 一次插入两个Tag的属性到同一个点。 +# 一次插入两个 Tag 的属性到同一个点。 nebula> INSERT VERTEX t3 (p1), t4(p2) VALUES "21": (321, "hello"); ``` @@ -87,14 +87,14 @@ nebula> FETCH PROP ON t2 "11"; ``` ```ngql -nebula> CREATE TAG t5(p1 fixed_string(5) NOT NULL, p2 int, p3 int DEFAULT NULL); +nebula> CREATE TAG IF NOT EXISTS t5(p1 fixed_string(5) NOT NULL, p2 int, p3 int DEFAULT NULL); nebula> INSERT VERTEX t5(p1, p2, p3) VALUES "001":("Abe", 2, 3); -# 插入失败,因为属性p1不能为NULL。 +# 插入失败,因为属性 p1 不能为 NULL。 nebula> INSERT VERTEX t5(p1, p2, p3) VALUES "002":(NULL, 4, 5); [ERROR (-1005)]: Storage Error: The not null field cannot be null. -# 属性p3为默认值NULL。 +# 属性 p3 为默认值 NULL。 nebula> INSERT VERTEX t5(p1, p2) VALUES "003":("cd", 5); nebula> FETCH PROP ON t5 "003"; +--------------------------------------------+ @@ -103,7 +103,7 @@ nebula> FETCH PROP ON t5 "003"; | ("003" :t5{p1: "cd", p2: 5, p3: __NULL__}) | +--------------------------------------------+ -# 属性p1最大长度为5,因此会被截断。 +# 属性 p1 最大长度为 5,因此会被截断。 nebula> INSERT VERTEX t5(p1, p2) VALUES "004":("shalalalala", 4); nebula> FETCH PROP on t5 "004"; +-----------------------------------------------+ @@ -116,9 +116,9 @@ nebula> FETCH PROP on t5 "004"; 使用`IF NOT EXISTS`插入已存在的点时,不会进行修改。 ```ngql -# 插入点1。 +# 插入点 1。 nebula> INSERT VERTEX t2 (name, age) VALUES "1":("n2", 13); -# 使用IF NOT EXISTS修改点1,因为点1已存在,不会进行修改。 +# 使用 IF NOT EXISTS 修改点 1,因为点 1 已存在,不会进行修改。 nebula> INSERT VERTEX IF NOT EXISTS t2 (name, age) VALUES "1":("n3", 14); nebula> FETCH PROP ON t2 "1"; +--------------------------------+ diff --git a/docs-2.0/3.ngql-guide/12.vertex-statements/2.update-vertex.md b/docs-2.0/3.ngql-guide/12.vertex-statements/2.update-vertex.md index 60fb6201087..a5ed3c14471 100644 --- a/docs-2.0/3.ngql-guide/12.vertex-statements/2.update-vertex.md +++ b/docs-2.0/3.ngql-guide/12.vertex-statements/2.update-vertex.md @@ -1,12 +1,12 @@ # UPDATE VERTEX -`UPDATE VERTEX`语句可以修改点上Tag的属性值。 +`UPDATE VERTEX`语句可以修改点上 Tag 的属性值。 -Nebula Graph支持CAS(compare and set)操作。 +Nebula Graph 支持 CAS(compare and set)操作。 !!! note - 一次只能修改一个Tag。 + 一次只能修改一个 Tag。 ## 语法 @@ -19,8 +19,8 @@ SET | 参数 | 是否必须 | 说明 | 示例 | |-|-|-|-| -| `ON ` | 是 | 指定点的Tag。要修改的属性必须在这个Tag内。 | `ON player` | -| `` | 是 | 指定要修改的点ID。 | `"player100"` | +| `ON ` | 是 | 指定点的 Tag。要修改的属性必须在这个 Tag 内。 | `ON player` | +| `` | 是 | 指定要修改的点 ID。 | `"player100"` | | `SET ` | 是 | 指定如何修改属性值。 | `SET age = age +1` | | `WHEN ` | 否 | 指定过滤条件。如果``结果为`false`,`SET`子句不会生效。| `WHEN name == "Tim"` | |`YIELD `| 否 | 指定语句的输出格式。 | `YIELD name AS Name` | @@ -36,7 +36,7 @@ nebula> FETCH PROP ON player "player101"; | ("player101" :player{age: 36, name: "Tony Parker"}) | +-----------------------------------------------------+ -// 修改属性age的值,并返回name和新的age。 +// 修改属性 age 的值,并返回 name 和新的 age。 nebula> UPDATE VERTEX ON player "player101" \ SET age = age + 2 \ WHEN name == "Tony Parker" \ diff --git a/docs-2.0/3.ngql-guide/12.vertex-statements/3.upsert-vertex.md b/docs-2.0/3.ngql-guide/12.vertex-statements/3.upsert-vertex.md index e939bb3a7f9..05951c2e86a 100644 --- a/docs-2.0/3.ngql-guide/12.vertex-statements/3.upsert-vertex.md +++ b/docs-2.0/3.ngql-guide/12.vertex-statements/3.upsert-vertex.md @@ -4,7 +4,7 @@ !!! note - `UPSERT VERTEX`一次只能修改一个Tag。 + `UPSERT VERTEX`一次只能修改一个 Tag。 `UPSERT VERTEX`性能远低于`INSERT`,因为`UPSERT`是一组分片级别的读取、修改、写入操作。 @@ -23,8 +23,8 @@ SET | 参数 | 是否必须 | 说明 | 示例 | |-|-|-|-| -| `ON ` | 是 | 指定点的Tag。要修改的属性必须在这个Tag内。 | `ON player` | -| `` | 是 | 指定要修改或插入的点ID。 | `"player100"` | +| `ON ` | 是 | 指定点的 Tag。要修改的属性必须在这个 Tag 内。 | `ON player` | +| `` | 是 | 指定要修改或插入的点 ID。 | `"player100"` | | `SET ` | 是 | 指定如何修改属性值。 | `SET age = age +1` | | `WHEN ` | 否 | 指定过滤条件。 | `WHEN name == "Tim"` | |`YIELD `| 否 | 指定语句的输出格式。 | `YIELD name AS Name` | @@ -39,7 +39,7 @@ SET 例如: -- 要插入的点包含基于Tag`player`的属性`name`和`age`。 +- 要插入的点包含基于 Tag`player`的属性`name`和`age`。 - `SET`子句指定`age=30`。 @@ -55,12 +55,11 @@ SET 示例如下: ```ngql -// 查看三个点是否存在,结果“Empty set”表示顶点不存在。 +// 查看三个点是否存在,结果 “Empty set” 表示顶点不存在。 nebula> FETCH PROP ON * "player666", "player667", "player668"; +-----------+ | vertices_ | +-----------+ -+-----------+ Empty set nebula> UPSERT VERTEX ON player "player666" \ @@ -105,7 +104,7 @@ nebula> UPSERT VERTEX ON player "player668" \ 上面最后一个示例中,因为`age`没有默认值,插入点时,`age`默认值为`NULL`,执行`age = age + 1`后仍为`NULL`。如果`age`有默认值,则`age = age + 1`可以正常执行,例如: ```ngql -nebula> CREATE TAG player_with_default(name string, age int DEFAULT 20); +nebula> CREATE TAG IF NOT EXISTS player_with_default(name string, age int DEFAULT 20); Execution succeeded nebula> UPSERT VERTEX ON player_with_default "player101" \ diff --git a/docs-2.0/3.ngql-guide/12.vertex-statements/4.delete-vertex.md b/docs-2.0/3.ngql-guide/12.vertex-statements/4.delete-vertex.md index 647b0e53f63..b831f804618 100644 --- a/docs-2.0/3.ngql-guide/12.vertex-statements/4.delete-vertex.md +++ b/docs-2.0/3.ngql-guide/12.vertex-statements/4.delete-vertex.md @@ -8,7 +8,7 @@ - `DELETE VERTEX`是直接删除点和关联的边。 - - `DELETE TAG`是删除指定点上的指定Tag。当点上只有一个Tag时,执行`DELETE TAG`会删除点,但是不会删除关联的边。 + - `DELETE TAG`是删除指定点上的指定 Tag。当点上只有一个 Tag 时,执行`DELETE TAG`会删除点,但是不会删除关联的边。 ## 语法 diff --git a/docs-2.0/3.ngql-guide/13.edge-statements/1.insert-edge.md b/docs-2.0/3.ngql-guide/13.edge-statements/1.insert-edge.md index 90781798d96..ea99dbff116 100644 --- a/docs-2.0/3.ngql-guide/13.edge-statements/1.insert-edge.md +++ b/docs-2.0/3.ngql-guide/13.edge-statements/1.insert-edge.md @@ -1,8 +1,8 @@ # INSERT EDGE -`INSERT EDGE`语句可以在Nebula Graph实例的指定图空间中插入一条或多条边。边是有方向的,从起始点(src_vid)到目的点(dst_vid)。 +`INSERT EDGE`语句可以在 Nebula Graph 实例的指定图空间中插入一条或多条边。边是有方向的,从起始点(src_vid)到目的点(dst_vid)。 -`INSERT EDGE`的执行方式为覆盖式插入。如果已有Edge type、起点、终点、rank都相同的边,则**覆盖**原边。 +`INSERT EDGE`的执行方式为覆盖式插入。如果已有 Edge type、起点、终点、rank 都相同的边,则**覆盖**原边。 ## 语法 @@ -22,45 +22,45 @@ INSERT EDGE [IF NOT EXISTS] ( ) {VALUES | VALUE} !!! Note - - `IF NOT EXISTS` 仅检测<边的类型、起始点、目的点和rank>是否存在,不会检测属性值是否重合。 + - `IF NOT EXISTS` 仅检测<边的类型、起始点、目的点和 rank>是否存在,不会检测属性值是否重合。 - `IF NOT EXISTS` 会先读取一次数据是否存在,因此对性能会有明显影响。 -- ``:边关联的Edge type,只能指定一个Edge type。Edge type必须提前创建,详情请参见[CREATE EDGE](../11.edge-type-statements/1.create-edge.md)。 +- ``:边关联的 Edge type,只能指定一个 Edge type。Edge type 必须提前创建,详情请参见 [CREATE EDGE](../11.edge-type-statements/1.create-edge.md)。 - ``:需要设置的属性名称列表。 -- `src_vid`:起始点ID,表示边的起点。 +- `src_vid`:起始点 ID,表示边的起点。 -- `dst_vid`:目的点ID,表示边的终点。 +- `dst_vid`:目的点 ID,表示边的终点。 -- `rank`:可选项。边的rank值。默认值为`0`。rank值可以用来区分Edge type、起始点、目的点都相同的边。 +- `rank`:可选项。边的 rank 值。默认值为`0`。rank 值可以用来区分 Edge type、起始点、目的点都相同的边。 - !!! compatibility "openCypher兼容性" + !!! compatibility "openCypher 兼容性" - openCypher中没有rank的概念。 + openCypher 中没有 rank 的概念。 -- ``:根据`prop_name_list`填写属性值。如果属性值和Edge type中的数据类型不匹配,会返回错误。如果没有填写属性值,而Edge type中对应的属性设置为`NOT NULL`,也会返回错误。详情请参见[CREATE EDGE](../11.edge-type-statements/1.create-edge.md)。 +- ``:根据`prop_name_list`填写属性值。如果属性值和 Edge type 中的数据类型不匹配,会返回错误。如果没有填写属性值,而 Edge type 中对应的属性设置为`NOT NULL`,也会返回错误。详情请参见 [CREATE EDGE](../11.edge-type-statements/1.create-edge.md)。 ## 示例 ```ngql # 插入不包含属性的边。 -nebula> CREATE EDGE e1(); +nebula> CREATE EDGE IF NOT EXISTS e1(); nebula> INSERT EDGE e1 () VALUES "10"->"11":(); -# 插入rank为1的边。 +# 插入 rank 为 1 的边。 nebula> INSERT EDGE e1 () VALUES "10"->"11"@1:(); ``` ```ngql -nebula> CREATE EDGE e2 (name string, age int); +nebula> CREATE EDGE IF NOT EXISTS e2 (name string, age int); nebula> INSERT EDGE e2 (name, age) VALUES "11"->"13":("n1", 1); -# 一次插入2条边。 +# 一次插入 2 条边。 nebula> INSERT EDGE e2 (name, age) VALUES \ "12"->"13":("n1", 1), "13"->"14":("n2", 2); -# 创建失败,因为"a13"不是int类型。 +# 创建失败,因为"a13"不是 int 类型。 nebula> INSERT EDGE e2 (name, age) VALUES "11"->"13":("n1", "a13"); ``` @@ -84,7 +84,7 @@ nebula> FETCH PROP ON e2 "11"->"13"; ```ngql # 插入边。 nebula> INSERT EDGE e2 (name, age) VALUES "14"->"15"@1:("n1", 12); -# 使用IF NOT EXISTS修改边,因为边已存在,不会进行修改。 +# 使用 IF NOT EXISTS 修改边,因为边已存在,不会进行修改。 nebula> INSERT EDGE IF NOT EXISTS e2 (name, age) VALUES "14"->"15"@1:("n2", 13); nebula> FETCH PROP ON e2 "14"->"15"@1; +-------------------------------------------+ @@ -96,7 +96,7 @@ nebula> FETCH PROP ON e2 "14"->"15"@1; !!! Note - * Nebula Graph {{ nebula.release }} 允许存在悬挂边(Dangling edge)。因此可以在起点或者终点存在前,先写边;此时就可以通过 `._src`或`._dst`获取到(尚未写入的)点VID(不建议这样使用)。 + * Nebula Graph {{ nebula.release }} 允许存在悬挂边(Dangling edge)。因此可以在起点或者终点存在前,先写边;此时就可以通过 `._src`或`._dst`获取到(尚未写入的)点 VID(不建议这样使用)。 * 目前还不能保证操作的原子性,如果失败请重试,否则会发生部分写入。此时读取该数据的行为是未定义的。 * 并发写入同一条边会报`edge conflict`错误,可稍后重试。 - * `边的INSERT速度`大约是点的INSERT速度一半。原因是INSERT边会对应storaged的两个INSERT,`INSERT点`对应storaged的一个INSERT。 + * `边的 INSERT 速度`大约是点的 INSERT 速度一半。原因是 INSERT 边会对应 storaged 的两个 INSERT,`INSERT 点`对应 storaged 的一个 INSERT。 diff --git a/docs-2.0/3.ngql-guide/13.edge-statements/2.update-edge.md b/docs-2.0/3.ngql-guide/13.edge-statements/2.update-edge.md index 57883c71702..19755728ae3 100644 --- a/docs-2.0/3.ngql-guide/13.edge-statements/2.update-edge.md +++ b/docs-2.0/3.ngql-guide/13.edge-statements/2.update-edge.md @@ -1,8 +1,8 @@ # UPDATE EDGE -`UPDATE EDGE`语句可以修改边上Edge type的属性。 +`UPDATE EDGE`语句可以修改边上 Edge type 的属性。 -Nebula Graph支持CAS(compare and swap)操作。 +Nebula Graph 支持 CAS(compare and swap)操作。 ## 语法 @@ -16,10 +16,10 @@ SET | 参数 | 是否必须 | 说明 | 示例 | |-|-|-|-| -| `ON ` | 是 | 指定Edge type。要修改的属性必须在这个Edge type内。 | `ON serve` | -| `` | 是 | 指定边的起始点ID。 | `"player100"` | -| `` | 是 | 指定边的目的点ID。 | `"team204"` | -| `` | 否 | 指定边的rank值。 | `10` | +| `ON ` | 是 | 指定 Edge type。要修改的属性必须在这个 Edge type 内。 | `ON serve` | +| `` | 是 | 指定边的起始点 ID。 | `"player100"` | +| `` | 是 | 指定边的目的点 ID。 | `"team204"` | +| `` | 否 | 指定边的 rank 值。 | `10` | | `SET ` | 是 | 指定如何修改属性值。 | `SET start_year = start_year +1` | | `WHEN ` | 否 | 指定过滤条件。如果``结果为`false`,`SET`子句不会生效。 | `WHEN end_year < 2010` | |`YIELD `| 否 | 指定语句的输出格式。 | `YIELD start_year AS Start_Year` | @@ -27,7 +27,7 @@ SET ## 示例 ```ngql -// 用GO语句查看边的属性值。 +// 用 GO 语句查看边的属性值。 nebula> GO FROM "player100" \ OVER serve \ YIELD properties(edge).start_year, properties(edge).end_year; @@ -37,7 +37,7 @@ nebula> GO FROM "player100" \ | 1997 | 2016 | +------------------+----------------+ -// 修改属性start_year的值,并返回end_year和新的start_year。 +// 修改属性 start_year 的值,并返回 end_year 和新的 start_year。 nebula> UPDATE EDGE ON serve "player100" -> "team204"@0 \ SET start_year = start_year + 1 \ diff --git a/docs-2.0/3.ngql-guide/13.edge-statements/3.upsert-edge.md b/docs-2.0/3.ngql-guide/13.edge-statements/3.upsert-edge.md index 3d6ca6e7428..e3ae15a3831 100644 --- a/docs-2.0/3.ngql-guide/13.edge-statements/3.upsert-edge.md +++ b/docs-2.0/3.ngql-guide/13.edge-statements/3.upsert-edge.md @@ -20,10 +20,10 @@ SET | 参数 | 是否必须 | 说明 | 示例 | |-|-|-|-| -| `ON ` | 是 | 指定Edge type。要修改的属性必须在这个Edge type内。 | `ON serve` | -| `` | 是 | 指定边的起始点ID。 | `"player100"` | -| `` | 是 | 指定边的目的点ID。 | `"team204"` | -| `` | 否 | 指定边的rank值。 | `10` | +| `ON ` | 是 | 指定 Edge type。要修改的属性必须在这个 Edge type 内。 | `ON serve` | +| `` | 是 | 指定边的起始点 ID。 | `"player100"` | +| `` | 是 | 指定边的目的点 ID。 | `"team204"` | +| `` | 否 | 指定边的 rank 值。 | `10` | | `SET ` | 是 | 指定如何修改属性值。| `SET start_year = start_year +1` | | `WHEN ` | 否 | 指定过滤条件。 | `WHEN end_year < 2010` | |`YIELD `|否| 指定语句的输出格式。 | `YIELD start_year AS Start_Year` | @@ -38,7 +38,7 @@ SET 例如: -- 要插入的边包含基于Edge type`serve`的属性`start_year`和`end_year`。 +- 要插入的边包含基于 Edge type`serve`的属性`start_year`和`end_year`。 - `SET`子句指定`end_year = 2021`。 @@ -54,7 +54,7 @@ SET 示例如下: ```ngql -// 查看如下三个点是否有serve类型的出边,结果“Empty set”表示没有serve类型的出边。 +// 查看如下三个点是否有 serve 类型的出边,结果 “Empty set” 表示没有 serve 类型的出边。 nebula> GO FROM "player666", "player667", "player668" \ OVER serve \ YIELD properties(edge).start_year, properties(edge).end_year; @@ -106,7 +106,7 @@ nebula> UPSERT EDGE on serve \ 上面最后一个示例中,因为`end_year`没有默认值,插入边时,`end_year`默认值为`NULL`,执行`end_year = end_year + 1`后仍为`NULL`。如果`end_year`有默认值,则`end_year = end_year + 1`可以正常执行,例如: ```ngql -nebula> CREATE EDGE serve_with_default(start_year int, end_year int DEFAULT 2010); +nebula> CREATE EDGE IF NOT EXISTS serve_with_default(start_year int, end_year int DEFAULT 2010); Execution succeeded nebula> UPSERT EDGE on serve_with_default \ @@ -156,7 +156,6 @@ nebula> MATCH (v:player{name:"Ben Simmons"})-[e:serve]-(v2) \ | [:serve "player149"->"team219" @0 {end_year: 2020, start_year: 2016}] | +-----------------------------------------------------------------------+ - nebula> UPSERT EDGE on serve \ "player149" -> "team219" \ SET end_year = end_year + 1 \ diff --git a/docs-2.0/3.ngql-guide/13.edge-statements/4.delete-edge.md b/docs-2.0/3.ngql-guide/13.edge-statements/4.delete-edge.md index 15106d6150b..aa3764a3d41 100644 --- a/docs-2.0/3.ngql-guide/13.edge-statements/4.delete-edge.md +++ b/docs-2.0/3.ngql-guide/13.edge-statements/4.delete-edge.md @@ -2,7 +2,7 @@ `DELETE EDGE`语句可以删除边。一次可以删除一条或多条边。用户可以结合管道符一起使用,详情请参见[管道符](../5.operators/4.pipe.md)。 -如果需要删除一个点的所有出边,请删除这个点。详情请参见[DELETE VERTEX](../12.vertex-statements/4.delete-vertex.md)。 +如果需要删除一个点的所有出边,请删除这个点。详情请参见 [DELETE VERTEX](../12.vertex-statements/4.delete-vertex.md)。 !!! Note diff --git a/docs-2.0/3.ngql-guide/14.native-index-statements/1.create-native-index.md b/docs-2.0/3.ngql-guide/14.native-index-statements/1.create-native-index.md index 268172fabda..94cd1d72d53 100644 --- a/docs-2.0/3.ngql-guide/14.native-index-statements/1.create-native-index.md +++ b/docs-2.0/3.ngql-guide/14.native-index-statements/1.create-native-index.md @@ -2,7 +2,7 @@ ## 前提条件 -创建索引之前,请确保相关的Tag或Edge type已经创建。如何创建Tag和Edge type,请参见[CREATE TAG](../10.tag-statements/1.create-tag.md)和[CREATE EDGE](../11.edge-type-statements/1.create-edge.md)。 +创建索引之前,请确保相关的 Tag 或 Edge type 已经创建。如何创建 Tag 和 Edge type,请参见 [CREATE TAG](../10.tag-statements/1.create-tag.md) 和 [CREATE EDGE](../11.edge-type-statements/1.create-edge.md)。 如何创建全文索引,请参见[部署全文索引](../../4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md)。 @@ -10,13 +10,13 @@ 索引的概念和使用限制都较为复杂。索引配合`LOOKUP`和`MATCH`语句使用。 -`CREATE INDEX`语句用于对Tag、EdgeType或其属性创建原生索引。通常分别称为“Tag索引”、“Edge type索引”和“属性索引”。 +`CREATE INDEX`语句用于对 Tag、EdgeType 或其属性创建原生索引。通常分别称为“Tag 索引”、“Edge type 索引”和“属性索引”。 -- Tag索引和Edge type索引应用于和Tag、Edge type自身相关的查询,例如用`LOOKUP`查找有Tag `player`的所有点。 +- Tag 索引和 Edge type 索引应用于和 Tag、Edge type 自身相关的查询,例如用`LOOKUP`查找有 Tag `player`的所有点。 - “属性索引”应用于基于属性的查询,例如基于属性`age`找到`age == 19`的所有的点。 -如果已经为Tag `T`的属性`A`建立过属性索引`i_TA`,索引之间的可替代关系如下(Edge type索引同理): +如果已经为 Tag `T`的属性`A`建立过属性索引`i_TA`,索引之间的可替代关系如下(Edge type 索引同理): - 查询引擎可以使用`i_TA`来替代`i_T`。 @@ -26,27 +26,27 @@ !!! compatibility "历史版本兼容性" - 在此前的版本中,`LOOKUP`语句中的Tag或Edge type索引不可替代属性索引用于属性查找。 + 在此前的版本中,`LOOKUP`语句中的 Tag 或 Edge type 索引不可替代属性索引用于属性查找。 使用替代索引进行查询虽然能获得相同的结果,但查询性能会根据选择的索引有所区别。 !!! caution - 不要任意在生产环境中使用索引,除非很清楚使用索引对业务的影响。索引会导致写性能下降90%甚至更多。 + 不要任意在生产环境中使用索引,除非很清楚使用索引对业务的影响。索引会导致写性能下降 90%甚至更多。 索引并不用于查询加速。只用于:根据属性定位到点或边,或者统计点边数量。 - 长索引会降低Storage服务的扫描性能,以及占用更多内存。建议将索引长度设置为和要被索引的最长字符串相同。索引长度最长为255,超过部分会被截断。 + 长索引会降低 Storage 服务的扫描性能,以及占用更多内存。建议将索引长度设置为和要被索引的最长字符串相同。索引长度最长为 255,超过部分会被截断。 如果必须使用索引,通常按照如下步骤: -1. 初次导入数据至Nebula Graph。 +1. 初次导入数据至 Nebula Graph。 2. 创建索引。 3. [重建索引](4.rebuild-native-index.md)。 -4. 使用[LOOKUP](../7.general-query-statements/5.lookup.md)或[MATCH](../7.general-query-statements/2.match.md)语句查询数据。不需要(也无法)指定使用哪个索引,Nebula Graph会自动计算。 +4. 使用 [LOOKUP](../7.general-query-statements/5.lookup.md) 或 [MATCH](../7.general-query-statements/2.match.md) 语句查询数据。不需要(也无法)指定使用哪个索引,Nebula Graph 会自动计算。 !!! Note @@ -54,11 +54,11 @@ 日常增量写入时保持 `--disable_auto_compaction = false`。 - 新创建的索引并不会立刻生效。创建新的索引并尝试立刻使用(例如`LOOKUP`或者`REBUILD INDEX`)通常会失败(报错`can't find xxx in the space`)。因为创建步骤是异步实现的,Nebula Graph要在下一个心跳周期才能完成索引的创建。可以使用如下方法之一: + 新创建的索引并不会立刻生效。创建新的索引并尝试立刻使用(例如`LOOKUP`或者`REBUILD INDEX`) 通常会失败(报错`can't find xxx in the space`)。因为创建步骤是异步实现的,Nebula Graph 要在下一个心跳周期才能完成索引的创建。可以使用如下方法之一: - - 在[`SHOW TAG/EDGE INDEXES`](2.show-native-indexes.md)语句的结果中查找到新的索引。或者, + - 在 [`SHOW TAG/EDGE INDEXES`](2.show-native-indexes.md) 语句的结果中查找到新的索引。或者, - - 等待两个心跳周期,例如20秒。如果需要修改心跳间隔,请为[所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)修改参数`heartbeat_interval_secs`。 + - 等待两个心跳周期,例如 20 秒。如果需要修改心跳间隔,请为[所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)修改参数`heartbeat_interval_secs`。 !!! danger @@ -75,11 +75,11 @@ CREATE {TAG | EDGE} INDEX [IF NOT EXISTS] ON { | `|索引名。索引名在一个图空间中必须是唯一的。推荐的命名方式为`i_tagName_propName`。索引名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。| -|` \| `|指定索引关联的Tag或Edge名称。| -|``|为**变长**字符串属性创建索引时,必须用`prop_name(length)`指定索引长度;为Tag或Edge type本身创建索引时,忽略``。| -|`COMMENT`|索引的描述。最大为256字节。默认无描述。| +|` \| `|指定索引关联的 Tag 或 Edge 名称。| +|``|为**变长**字符串属性创建索引时,必须用`prop_name(length)`指定索引长度;为 Tag 或 Edge type 本身创建索引时,忽略``。| +|`COMMENT`|索引的描述。最大为 256 字节。默认无描述。| -## 创建Tag/Edge type索引 +## 创建 Tag/Edge type 索引 ```ngql nebula> CREATE TAG INDEX player_index on player(); @@ -89,41 +89,41 @@ nebula> CREATE TAG INDEX player_index on player(); nebula> CREATE EDGE INDEX follow_index on follow(); ``` -为Tag或Edge type创建索引后,用户可以使用 `LOOKUP` 语句查找`带有该Tag的`所有点的VID,或者`所有该类型的边`的`对应起始点VID、目的点VID、以及rank`。详情请参见[LOOKUP](../7.general-query-statements/5.lookup.md)。 +为 Tag 或 Edge type 创建索引后,用户可以使用 `LOOKUP` 语句查找`带有该 Tag 的`所有点的 VID,或者`所有该类型的边`的`对应起始点 VID、目的点 VID、以及 rank`。详情请参见 [LOOKUP](../7.general-query-statements/5.lookup.md)。 ## 创建单属性索引 ```ngql -nebula> CREATE TAG INDEX player_index_0 on player(name(10)); +nebula> CREATE TAG INDEX IF NOT EXISTS player_index_0 on player(name(10)); ``` -上述示例是为所有包含Tag`player`的点创建属性`name`的索引,索引长度为10。即只使用属性`name`的前10个字符来创建索引。 +上述示例是为所有包含 Tag`player`的点创建属性`name`的索引,索引长度为 10。即只使用属性`name`的前 10 个字符来创建索引。 ```ngql # 变长字符串需要指定索引长度。 -nebula> CREATE TAG var_string(p1 string); -nebula> CREATE TAG INDEX var ON var_string(p1(10)); +nebula> CREATE TAG IF NOT EXISTS var_string(p1 string); +nebula> CREATE TAG INDEX IF NOT EXISTS var ON var_string(p1(10)); # 定长字符串不需要指定索引长度。 -nebula> CREATE TAG fix_string(p1 FIXED_STRING(10)); -nebula> CREATE TAG INDEX fix ON fix_string(p1); +nebula> CREATE TAG IF NOT EXISTS fix_string(p1 FIXED_STRING(10)); +nebula> CREATE TAG INDEX IF NOT EXISTS fix ON fix_string(p1); ``` ```ngql -nebula> CREATE EDGE INDEX follow_index_0 on follow(degree); +nebula> CREATE EDGE INDEX IF NOT EXISTS follow_index_0 on follow(degree); ``` ## 创建复合属性索引 -`复合属性索引`用于查找一个Tag(或者Edge type)中的多个属性(的组合)。 +`复合属性索引`用于查找一个 Tag(或者 Edge type) 中的多个属性(的组合)。 ```ngql -nebula> CREATE TAG INDEX player_index_1 on player(name(10), age); +nebula> CREATE TAG INDEX IF NOT EXISTS player_index_1 on player(name(10), age); ``` !!! caution - 不支持跨Tag或Edge type创建复合索引。 + 不支持跨 Tag 或 Edge type 创建复合索引。 !!! note @@ -138,10 +138,10 @@ nebula> CREATE TAG INDEX player_index_1 on player(name(10), age); 请参见下方示例。 ```ngql - # 为标签t的前三个属性创建复合属性索引。 + # 为标签 t 的前三个属性创建复合属性索引。 nebula> CREATE TAG INDEX example_index ON TAG t(p1, p2, p3); - # 注意:无法匹配到索引,因为不是从p1开始,会返回找不到有效索引的报错。 + # 注意:无法匹配到索引,因为不是从 p1 开始,会返回找不到有效索引的报错。 nebula> MATCH (v:t) WHERE t.p2 == 2 and t.p3 == 3; # 注意:无法匹配到索引,但是退化为全表扫描进行查询。 @@ -149,9 +149,9 @@ nebula> CREATE TAG INDEX player_index_1 on player(name(10), age); # 可以匹配到索引。 nebula> MATCH (v:t) WHERE t.p1 == 1; - # 可以匹配到索引,因为p1和p2是连续的。 + # 可以匹配到索引,因为 p1 和 p2 是连续的。 nebula> MATCH (v:t) WHERE t.p1 == 1 and t.p2 == 2; - # 可以匹配到索引,因为p1、p2、p3是连续的。 + # 可以匹配到索引,因为 p1、p2、p3 是连续的。 nebula> MATCH (v:t) WHERE t.p1 == 1 and t.p2 == 2 and t.p3 == 3; ``` --> diff --git a/docs-2.0/3.ngql-guide/14.native-index-statements/2.1.show-create-index.md b/docs-2.0/3.ngql-guide/14.native-index-statements/2.1.show-create-index.md index 0df901dd55e..24e425b5943 100644 --- a/docs-2.0/3.ngql-guide/14.native-index-statements/2.1.show-create-index.md +++ b/docs-2.0/3.ngql-guide/14.native-index-statements/2.1.show-create-index.md @@ -1,6 +1,6 @@ # SHOW CREATE INDEX -`SHOW CREATE INDEX`展示创建Tag或者Edge type时使用的nGQL语句,其中包含索引的详细信息,例如其关联的属性。 +`SHOW CREATE INDEX`展示创建 Tag 或者 Edge type 时使用的 nGQL 语句,其中包含索引的详细信息,例如其关联的属性。 ## 语法 @@ -10,7 +10,7 @@ SHOW CREATE {TAG | EDGE} INDEX ; ## 示例 -用户可以先运行`SHOW TAG INDEXES`查看有哪些Tag索引,然后用`SHOW CREATE TAG INDEX`查看指定索引的创建信息。 +用户可以先运行`SHOW TAG INDEXES`查看有哪些 Tag 索引,然后用`SHOW CREATE TAG INDEX`查看指定索引的创建信息。 ```ngql nebula> SHOW TAG INDEXES; @@ -31,7 +31,7 @@ nebula> SHOW CREATE TAG INDEX player_index_1; +------------------+--------------------------------------------------+ ``` -Edge type索引可以用类似的方法查询: +Edge type 索引可以用类似的方法查询: ```ngql nebula> SHOW EDGE INDEXES; @@ -52,4 +52,4 @@ nebula> SHOW CREATE EDGE INDEX follow_index; !!! Compatibility "历史版本兼容性" - Nebula Graph 2.0.1中, `SHOW TAG/EDGE INDEXES` 语句仅返回 `Names`。 + Nebula Graph 2.0.1 中, `SHOW TAG/EDGE INDEXES` 语句仅返回 `Names`。 diff --git a/docs-2.0/3.ngql-guide/14.native-index-statements/2.show-native-indexes.md b/docs-2.0/3.ngql-guide/14.native-index-statements/2.show-native-indexes.md index a2734488b8c..51b5532a084 100644 --- a/docs-2.0/3.ngql-guide/14.native-index-statements/2.show-native-indexes.md +++ b/docs-2.0/3.ngql-guide/14.native-index-statements/2.show-native-indexes.md @@ -1,6 +1,6 @@ # SHOW INDEXES -`SHOW INDEXES`语句可以列出当前图空间内的所有Tag和Edge type(包括属性)的索引。 +`SHOW INDEXES`语句可以列出当前图空间内的所有 Tag 和 Edge type(包括属性)的索引。 ## 语法 @@ -29,7 +29,6 @@ nebula> SHOW EDGE INDEXES; +----------------+----------+---------+ ``` - !!! Compatibility "历史版本兼容性" - Nebula Graph 2.0.1中, `SHOW TAG/EDGE INDEXES` 语句仅返回 `Names`。 + Nebula Graph 2.0.1 中, `SHOW TAG/EDGE INDEXES` 语句仅返回 `Names`。 diff --git a/docs-2.0/3.ngql-guide/14.native-index-statements/4.rebuild-native-index.md b/docs-2.0/3.ngql-guide/14.native-index-statements/4.rebuild-native-index.md index c3ab680e806..8c84071a170 100644 --- a/docs-2.0/3.ngql-guide/14.native-index-statements/4.rebuild-native-index.md +++ b/docs-2.0/3.ngql-guide/14.native-index-statements/4.rebuild-native-index.md @@ -6,7 +6,7 @@ 重建索引期间,所有查询都会跳过索引并执行顺序扫描,返回结果可能不一致。 -请在创建索引后,选择合适的时间为存量数据重建索引。使用索引的详情请参见[CREATE INDEX](1.create-native-index.md)。 +请在创建索引后,选择合适的时间为存量数据重建索引。使用索引的详情请参见 [CREATE INDEX](1.create-native-index.md)。 ## 语法 @@ -19,15 +19,15 @@ REBUILD {TAG | EDGE} INDEX []; - 可以一次重建多个索引,索引名称之间用英文逗号(,)分隔。如果没有指定索引名称,将会重建所有索引。 -- 重建完成后,用户可以使用命令`SHOW {TAG | EDGE} INDEX STATUS`检查索引是否重建完成。详情请参见[SHOW INDEX STATUS](5.show-native-index-status.md)。 +- 重建完成后,用户可以使用命令`SHOW {TAG | EDGE} INDEX STATUS`检查索引是否重建完成。详情请参见 [SHOW INDEX STATUS](5.show-native-index-status.md)。 ## 示例 ```ngql -nebula> CREATE TAG person(name string, age int, gender string, email string); -nebula> CREATE TAG INDEX single_person_index ON person(name(10)); +nebula> CREATE TAG IF NOT EXISTS person(name string, age int, gender string, email string); +nebula> CREATE TAG INDEX IF NOT EXISTS single_person_index ON person(name(10)); -# 重建索引,返回任务ID。 +# 重建索引,返回任务 ID。 nebula> REBUILD TAG INDEX single_person_index; +------------+ | New Job Id | @@ -43,7 +43,7 @@ nebula> SHOW TAG INDEX STATUS; | "single_person_index" | "FINISHED" | +-----------------------+--------------+ -# 也可以使用SHOW JOB 查看重建索引的任务状态。 +# 也可以使用 SHOW JOB 查看重建索引的任务状态。 nebula> SHOW JOB 31; +----------------+---------------------+------------+-------------------------+-------------------------+ | Job Id(TaskId) | Command(Dest) | Status | Start Time | Stop Time | @@ -55,8 +55,8 @@ nebula> SHOW JOB 31; +----------------+---------------------+------------+-------------------------+-------------------------+ ``` -Nebula Graph创建一个任务去重建索引,因此可以根据返回的任务ID,通过`SHOW JOB `语句查看任务状态。详情请参见[SHOW JOB](../18.operation-and-maintenance-statements/4.job-statements/#show_job)。 +Nebula Graph 创建一个任务去重建索引,因此可以根据返回的任务 ID,通过`SHOW JOB `语句查看任务状态。详情请参见 [SHOW JOB](../18.operation-and-maintenance-statements/4.job-statements/#show_job)。 ## 历史版本兼容性 -在Nebula Graph 2.0中,不需要也不支持选项`OFFLINE`。 +在 Nebula Graph 2.0 中,不需要也不支持选项`OFFLINE`。 diff --git a/docs-2.0/3.ngql-guide/14.native-index-statements/5.show-native-index-status.md b/docs-2.0/3.ngql-guide/14.native-index-statements/5.show-native-index-status.md index 1d8efc17449..99a1fedfd51 100644 --- a/docs-2.0/3.ngql-guide/14.native-index-statements/5.show-native-index-status.md +++ b/docs-2.0/3.ngql-guide/14.native-index-statements/5.show-native-index-status.md @@ -13,7 +13,7 @@ !!! Note - 如何创建索引请参见[CREATE INDEX](1.create-native-index.md)。 + 如何创建索引请参见 [CREATE INDEX](1.create-native-index.md)。 ## 语法 diff --git a/docs-2.0/3.ngql-guide/14.native-index-statements/README.md b/docs-2.0/3.ngql-guide/14.native-index-statements/README.md index f6a45491e74..8ead9a9e9d8 100644 --- a/docs-2.0/3.ngql-guide/14.native-index-statements/README.md +++ b/docs-2.0/3.ngql-guide/14.native-index-statements/README.md @@ -1,16 +1,16 @@ # 索引介绍 -Nebula Graph支持两种类型索引:原生索引和全文索引。 +Nebula Graph 支持两种类型索引:原生索引和全文索引。 ## 原生索引 原生索引可以基于指定的属性查询数据,有如下特点: -- 包括Tag索引和Edge type索引。 +- 包括 Tag 索引和 Edge type 索引。 - 必须手动重建索引(`REBUILD INDEX`)。 -- 支持创建同一个Tag或Edge type的多个属性的索引(复合索引),但是不能跨Tag或Edge type。 +- 支持创建同一个 Tag 或 Edge type 的多个属性的索引(复合索引),但是不能跨 Tag 或 Edge type。 ### 原生索引操作 @@ -38,7 +38,7 @@ Nebula Graph支持两种类型索引:原生索引和全文索引。 - 只允许创建一个属性的索引。 -- 只能创建指定长度(不超过256字节)字符串的索引。 +- 只能创建指定长度(不超过 256 字节)字符串的索引。 - 不支持逻辑操作,例如`AND`、`OR`、`NOT`。 @@ -48,15 +48,15 @@ Nebula Graph支持两种类型索引:原生索引和全文索引。 ### 全文索引操作 -在对全文索引执行任何操作之前,请确保已经部署全文索引。详情请参见[部署全文索引](../../4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md)和[部署listener](../../4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md)。 +在对全文索引执行任何操作之前,请确保已经部署全文索引。详情请参见[部署全文索引](../../4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md) 和[部署 listener](../../4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md)。 -部署完成后,Elasticsearch集群上会自动创建全文索引。不支持重建或修改全文索引。如果需要删除全文索引,请在Elasticsearch集群上手动删除。 +部署完成后,Elasticsearch 集群上会自动创建全文索引。不支持重建或修改全文索引。如果需要删除全文索引,请在 Elasticsearch 集群上手动删除。 使用全文索引请参见[使用全文索引查询](../15.full-text-index-statements/1.search-with-text-based-index.md)。 -## NULL值说明 +## NULL 值说明 -不支持对值为NULL的属性创建索引。 +不支持对值为 NULL 的属性创建索引。 ## 范围查询 diff --git a/docs-2.0/3.ngql-guide/15.full-text-index-statements/1.search-with-text-based-index.md b/docs-2.0/3.ngql-guide/15.full-text-index-statements/1.search-with-text-based-index.md index 3cacc705196..0ffb449f8b2 100644 --- a/docs-2.0/3.ngql-guide/15.full-text-index-statements/1.search-with-text-based-index.md +++ b/docs-2.0/3.ngql-guide/15.full-text-index-statements/1.search-with-text-based-index.md @@ -6,7 +6,7 @@ ## 前提条件 -请确保已经部署全文索引。详情请参见[部署全文索引](../../4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md)和[部署listener](../../4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md)。 +请确保已经部署全文索引。详情请参见[部署全文索引](../../4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md)和[部署 listener](../../4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md)。 ## 注意事项 @@ -62,9 +62,9 @@ LOOKUP ON { | } WHERE [YIELD ]; - FUZZY(schema_name.prop_name, fuzzy_string, fuzziness, operator, row_limit, timeout) - - `fuzziness`:可选项。允许匹配的最大编辑距离。默认值为`AUTO`。查看其他可选值和更多信息,请参见[Elasticsearch官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/common-options.html#fuzziness)。 + - `fuzziness`:可选项。允许匹配的最大编辑距离。默认值为`AUTO`。查看其他可选值和更多信息,请参见 [Elasticsearch 官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/common-options.html#fuzziness)。 - - `operator`:可选项。解释文本的布尔逻辑。可选值为`OR`(默认)和`and`。 + - `operator`:可选项。解释文本的布尔逻辑。可选值为`OR`(默认)和`and`。 - `row_limit`:可选项。指定要返回的行数。默认值为`100`。 @@ -74,7 +74,7 @@ LOOKUP ON { | } WHERE [YIELD ]; ```ngql //创建图空间。 -nebula> CREATE SPACE basketballplayer (partition_num=3,replica_factor=1, vid_type=fixed_string(30)); +nebula> CREATE SPACE IF NOT EXISTS basketballplayer (partition_num=3,replica_factor=1, vid_type=fixed_string(30)); //登录文本搜索客户端。 nebula> SIGN IN TEXT SERVICE (127.0.0.1:9200); @@ -82,19 +82,19 @@ nebula> SIGN IN TEXT SERVICE (127.0.0.1:9200); //切换图空间。 nebula> USE basketballplayer; -//添加listener到Nebula Graph集群。 +//添加 listener 到 Nebula Graph 集群。 nebula> ADD LISTENER ELASTICSEARCH 192.168.8.5:9789; -//创建Tag。 -nebula> CREATE TAG player(name string, age int); +//创建 Tag。 +nebula> CREATE TAG IF NOT EXISTS player(name string, age int); //创建原生索引。 -nebula> CREATE TAG INDEX name ON player(name(20)); +nebula> CREATE TAG INDEX IF NOT EXISTS name ON player(name(20)); //重建原生索引。 nebula> REBUILD TAG INDEX; -//创建全文索引,索引名称需要以nebula开头。 +//创建全文索引,索引名称需要以 nebula 开头。 nebula> CREATE FULLTEXT TAG INDEX nebula_index_1 ON player(name); //重建全文索引。 diff --git a/docs-2.0/3.ngql-guide/16.subgraph-and-path/1.get-subgraph.md b/docs-2.0/3.ngql-guide/16.subgraph-and-path/1.get-subgraph.md index 072c8a9246a..f55c0832814 100644 --- a/docs-2.0/3.ngql-guide/16.subgraph-and-path/1.get-subgraph.md +++ b/docs-2.0/3.ngql-guide/16.subgraph-and-path/1.get-subgraph.md @@ -1,6 +1,6 @@ # GET SUBGRAPH -`GET SUBGRAPH`语句检索指定Edge type的起始点可以到达的点和边的信息,返回子图信息。 +`GET SUBGRAPH`语句检索指定 Edge type 的起始点可以到达的点和边的信息,返回子图信息。 ## 语法 @@ -12,11 +12,11 @@ GET SUBGRAPH [WITH PROP] [ STEPS] FROM {, ...} - `WITH PROP`:展示属性。不添加本参数则隐藏属性。 -- `step_count`:指定从起始点开始的跳数,返回从0到`step_count`跳的子图。必须是非负整数。默认值为1。 +- `step_count`:指定从起始点开始的跳数,返回从 0 到`step_count`跳的子图。必须是非负整数。默认值为 1。 -- `vid`:指定起始点ID。 +- `vid`:指定起始点 ID。 -- `edge_type`:指定Edge type。可以用`IN`、`OUT`和`BOTH`来指定起始点上该Edge type的方向。默认为`BOTH`。 +- `edge_type`:指定 Edge type。可以用`IN`、`OUT`和`BOTH`来指定起始点上该 Edge type 的方向。默认为`BOTH`。 - `YIELD`:定义需要返回的输出。可以仅返回点或边。必须设置别名。不使用`YIELD`定义输出结果时,默认返回`_vertices`和`_edges`。 @@ -33,12 +33,12 @@ GET SUBGRAPH [WITH PROP] [ STEPS] FROM {, ...} 插入测试数据: ```ngql -nebula> CREATE SPACE subgraph(partition_num=15, replica_factor=1, vid_type=fixed_string(30)); +nebula> CREATE SPACE IF NOT EXISTS subgraph(partition_num=15, replica_factor=1, vid_type=fixed_string(30)); nebula> USE subgraph; -nebula> CREATE TAG player(name string, age int); -nebula> CREATE TAG team(name string); -nebula> CREATE EDGE follow(degree int); -nebula> CREATE EDGE serve(start_year int, end_year int); +nebula> CREATE TAG IF NOT EXISTS player(name string, age int); +nebula> CREATE TAG IF NOT EXISTS team(name string); +nebula> CREATE EDGE IF NOT EXISTS follow(degree int); +nebula> CREATE EDGE IF NOT EXISTS serve(start_year int, end_year int); nebula> INSERT VERTEX player(name, age) VALUES "player100":("Tim Duncan", 42); nebula> INSERT VERTEX player(name, age) VALUES "player101":("Tony Parker", 36); nebula> INSERT VERTEX player(name, age) VALUES "player102":("LaMarcus Aldridge", 33); @@ -49,7 +49,7 @@ nebula> INSERT EDGE follow(degree) VALUES "player102" -> "player100":(75); nebula> INSERT EDGE serve(start_year, end_year) VALUES "player101" -> "team204":(1999, 2018),"player102" -> "team203":(2006, 2015); ``` -- 查询从点`player101`开始、0~1跳、所有Edge type的子图。 +- 查询从点`player101`开始、0~1 跳、所有 Edge type 的子图。 ```ngql nebula> GET SUBGRAPH 1 STEPS FROM "player101" YIELD VERTICES AS nodes, EDGES AS relationships; @@ -65,7 +65,7 @@ nebula> INSERT EDGE serve(start_year, end_year) VALUES "player101" -> "team204": ![GET SUBGRAPH FROM "player101"](subgraph-1.png) -- 查询从点`player101`开始、0~1跳、`follow`类型的入边的子图。 +- 查询从点`player101`开始、0~1 跳、`follow`类型的入边的子图。 ```ngql nebula> GET SUBGRAPH 1 STEPS FROM "player101" IN follow YIELD VERTICES AS nodes, EDGES AS relationships; @@ -79,7 +79,7 @@ nebula> INSERT EDGE serve(start_year, end_year) VALUES "player101" -> "team204": 因为`player101`没有`follow`类型的入边。所以仅返回点`player101`。 -- 查询从点`player101`开始、0~1跳、`serve`类型的出边的子图,同时展示边的属性。 +- 查询从点`player101`开始、0~1 跳、`serve`类型的出边的子图,同时展示边的属性。 ```ngql nebula> GET SUBGRAPH WITH PROP 1 STEPS FROM "player101" OUT serve YIELD VERTICES AS nodes, EDGES AS relationships; @@ -107,7 +107,7 @@ nebula> INSERT EDGE serve(start_year, end_year) VALUES "player101" -> "team204": - 用`GET SUBGRAPH 1 STEPS FROM "A" IN follow;`查询的满足结果的路径是`B->A`,在满足结果的点上额外查询一跳,即`A->B`。 -如果只是查询满足条件的路径或点,建议使用[MATCH](../7.general-query-statements/2.match.md)或[GO](../7.general-query-statements/3.go.md)语句。例如: +如果只是查询满足条件的路径或点,建议使用 [MATCH](../7.general-query-statements/2.match.md) 或 [GO](../7.general-query-statements/3.go.md) 语句。例如: ```ngql nebula> match p= (v:player) -- (v2) where id(v)=="A" return p; diff --git a/docs-2.0/3.ngql-guide/16.subgraph-and-path/2.find-path.md b/docs-2.0/3.ngql-guide/16.subgraph-and-path/2.find-path.md index 076c1d14ea5..2ad7f7bd0e2 100644 --- a/docs-2.0/3.ngql-guide/16.subgraph-and-path/2.find-path.md +++ b/docs-2.0/3.ngql-guide/16.subgraph-and-path/2.find-path.md @@ -20,9 +20,9 @@ OVER [REVERSELY | BIDIRECT] [] [UPTO STEPS] [ - `WITH PROP`:展示点和边的属性。不添加本参数则隐藏属性。 -- ``:点ID列表。多个点用英文逗号(,)分隔。支持`$-`和`$var`。 +- ``:点 ID 列表。多个点用英文逗号(,)分隔。支持`$-`和`$var`。 -- ``:Edge type列表。多个Edge type用英文逗号(,)分隔。`*`表示所有Edge type。 +- ``:Edge type 列表。多个 Edge type 用英文逗号(,)分隔。`*`表示所有 Edge type。 - `REVERSELY | BIDIRECT`:`REVERSELY`表示反向,`BIDIRECT`表示双向。 @@ -96,7 +96,7 @@ nebula> FIND NOLOOP PATH FROM "player100" TO "team204" OVER *; ## FAQ -### 是否支持WHERE子句,以实现图遍历过程中的条件过滤? +### 是否支持 WHERE 子句,以实现图遍历过程中的条件过滤? 支持使用`WHERE`子句过滤,但目前只能过滤边属性,如示例中的`FIND ALL PATH FROM "player100" TO "team204" OVER * WHERE follow.degree is EMPTY or follow.degree >=0;`。 diff --git a/docs-2.0/3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md b/docs-2.0/3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md index ab4930e8223..a9287513acb 100644 --- a/docs-2.0/3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md +++ b/docs-2.0/3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md @@ -1,16 +1,16 @@ -# EXPLAIN和PROFILE +# EXPLAIN 和 PROFILE -`EXPLAIN`语句输出nGQL语句的执行计划,但不会执行nGQL语句。 +`EXPLAIN`语句输出 nGQL 语句的执行计划,但不会执行 nGQL 语句。 -`PROFILE`语句执行nGQL语句,然后输出执行计划和执行概要。用户可以根据执行计划和执行概要优化查询性能。 +`PROFILE`语句执行 nGQL 语句,然后输出执行计划和执行概要。用户可以根据执行计划和执行概要优化查询性能。 ## 执行计划 -执行计划由Nebula Graph查询引擎中的执行计划器决定。 +执行计划由 Nebula Graph 查询引擎中的执行计划器决定。 -执行计划器将解析后的nGQL语句处理为`action`。`action`是最小的执行单元。典型的`action`包括获取指定点的所有邻居、获取边的属性、根据条件过滤点或边等。每个`action`都被分配给一个`operator`。 +执行计划器将解析后的 nGQL 语句处理为`action`。`action`是最小的执行单元。典型的`action`包括获取指定点的所有邻居、获取边的属性、根据条件过滤点或边等。每个`action`都被分配给一个`operator`。 -例如`SHOW TAGS`语句分为两个`action`,`operator`为`Start`和`ShowTags`。更复杂的`GO`语句可能会被处理成10个以上的`action`。 +例如`SHOW TAGS`语句分为两个`action`,`operator`为`Start`和`ShowTags`。更复杂的`GO`语句可能会被处理成 10 个以上的`action`。 ## 语法 @@ -78,19 +78,19 @@ |参数|说明| |:---|:---| -|`id`|`operator`的ID。| +|`id`|`operator`的 ID。| |`name`|`operator`的名称。| -|`dependencies`|当前`operator`所依赖的`operator`的ID。| +|`dependencies`|当前`operator`所依赖的`operator`的 ID。| |`profiling data`|执行概要文件内容。 `ver`表示`operator`的版本;`rows`表示`operator`输出结果的行数;`execTime`表示执行`action`的时间;`totalTime`表示执行`action`的时间、系统调度时间、排队时间的总和。| |`operator info`|`operator`的详细信息。| ## `dot`格式 -`dot`格式将返回DOT语言的信息,然后用户可以使用Graphviz生成计划图。 +`dot`格式将返回 DOT 语言的信息,然后用户可以使用 Graphviz 生成计划图。 !!! Note - Graphviz是一款开源可视化图工具,可以绘制DOT语言脚本描述的图。Graphviz提供一个在线工具,可以预览DOT语言文件,并将它们导出为SVG或JSON等其他格式。详情请参见[Graphviz Online](https://dreampuf.github.io/GraphvizOnline/)。 + Graphviz 是一款开源可视化图工具,可以绘制 DOT 语言脚本描述的图。Graphviz 提供一个在线工具,可以预览 DOT 语言文件,并将它们导出为 SVG 或 JSON 等其他格式。详情请参见 [Graphviz Online](https://dreampuf.github.io/GraphvizOnline/)。 ```ngql nebula> EXPLAIN format="dot" SHOW TAGS; @@ -108,6 +108,6 @@ Execution Plan --------------------------------------------------------------------------------------------------------------------------------------------- ------------- ``` -将上述示例的DOT语言转换为Graphviz图,如下所示。 +将上述示例的 DOT 语言转换为 Graphviz 图,如下所示。 ![Graphviz graph of EXPLAIN SHOW TAGS](https://docs-cdn.nebula-graph.com.cn/docs-2.0/3.ngql-guide/16.query-tuning-statements/explain-show-tags.png) diff --git a/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/.1.configs-syntax.md b/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/.1.configs-syntax.md index 9391fd6c524..e3c81112327 100644 --- a/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/.1.configs-syntax.md +++ b/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/.1.configs-syntax.md @@ -1,10 +1,10 @@ # CONFIG -第一次启动Nebula Graph集群时,系统会从本地配置文件中读取配置,然后保存在Meta服务中,后续重启集群,也会从Meta服务中读取配置。`CONFIG`语句可以修改Meta服务中保存的Nebula Graph配置,不会修改本地配置文件。 +第一次启动 Nebula Graph 集群时,系统会从本地配置文件中读取配置,然后保存在 Meta 服务中,后续重启集群,也会从 Meta 服务中读取配置。`CONFIG`语句可以修改 Meta 服务中保存的 Nebula Graph 配置,不会修改本地配置文件。 !!! Note - 根据过往实践,建议让Nebula Graph从本地文件获取配置。详情请参见[配置简介](../../5.configurations-and-logs/1.configurations/1.configurations.md#修改配置)。 + 根据过往实践,建议让 Nebula Graph 从本地文件获取配置。详情请参见[配置简介](../../5.configurations-and-logs/1.configurations/1.configurations.md#修改配置)。 ## SHOW CONFIGS diff --git a/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/2.balance-syntax.md b/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/2.balance-syntax.md index 83d5730cf5c..3bc409624d9 100644 --- a/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/2.balance-syntax.md +++ b/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/2.balance-syntax.md @@ -1,13 +1,13 @@ # BALANCE -`BALANCE`语句可以让Nebula Graph的Storage服务实现负载均衡。更多`BALANCE`语句示例和Storage负载均衡,请参见[Storage负载均衡](../../8.service-tuning/load-balance.md)。 +`BALANCE`语句可以让 Nebula Graph 的 Storage 服务实现负载均衡。更多`BALANCE`语句示例和 Storage 负载均衡,请参见 [Storage 负载均衡](../../8.service-tuning/load-balance.md)。 `BALANCE`语法说明如下。 |语法|说明| |:---|:---| -|`BALANCE DATA`|启动任务均衡分布Nebula Graph集群中(或Group中)的所有分片。该命令会返回任务ID(`balance_id`)。| +|`BALANCE DATA`|启动任务均衡分布 Nebula Graph 集群中(或 Group 中)的所有分片。该命令会返回任务 ID(`balance_id`)。| |`BALANCE DATA `|显示`BALANCE DATA`任务的状态。| |`BALANCE DATA STOP`|停止`BALANCE DATA`任务。| -|`BALANCE DATA REMOVE `|在Nebula Graph集群中扫描并解绑指定的Storage主机。| -|`BALANCE LEADER`|在Nebula Graph集群中(或Group中)均衡分布leader。| +|`BALANCE DATA REMOVE `|在 Nebula Graph 集群中扫描并解绑指定的 Storage 主机。| +|`BALANCE LEADER`|在 Nebula Graph 集群中(或 Group 中)均衡分布 leader。| diff --git a/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/4.job-statements.md b/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/4.job-statements.md index e36283f349b..29ed1f0c19e 100644 --- a/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/4.job-statements.md +++ b/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/4.job-statements.md @@ -1,6 +1,6 @@ # 作业管理 -在Storage服务上长期运行的任务称为作业,例如`COMPACT`、`FLUSH`和`STATS`。 如果图空间的数据量很大,这些作业可能耗时很长。作业管理可以帮助执行、查看、停止和恢复作业。 +在 Storage 服务上长期运行的任务称为作业,例如`COMPACT`、`FLUSH`和`STATS`。 如果图空间的数据量很大,这些作业可能耗时很长。作业管理可以帮助执行、查看、停止和恢复作业。 !!! note @@ -10,7 +10,7 @@ `SUBMIT JOB COMPACT` 语句会触发 RocksDB 的长耗时 `compact` 操作。 -`compact`配置详情请参见[Storage服务配置](../../5.configurations-and-logs/1.configurations/4.storage-config.md)。 +`compact`配置详情请参见 [Storage 服务配置](../../5.configurations-and-logs/1.configurations/4.storage-config.md)。 ### 示例 @@ -25,7 +25,7 @@ nebula> SUBMIT JOB COMPACT; ## SUBMIT JOB FLUSH -`SUBMIT JOB FLUSH`语句将内存中的RocksDB memfile写入硬盘。 +`SUBMIT JOB FLUSH`语句将内存中的 RocksDB memfile 写入硬盘。 ### 示例 @@ -40,11 +40,11 @@ nebula> SUBMIT JOB FLUSH; ## SUBMIT JOB STATS -`SUBMIT JOB STATS`语句启动一个作业,该作业对当前图空间进行统计。作业完成后,用户可以使用`SHOW STATS`语句列出统计结果。详情请参见[SHOW STATS](../7.general-query-statements/6.show/14.show-stats.md)。 +`SUBMIT JOB STATS`语句启动一个作业,该作业对当前图空间进行统计。作业完成后,用户可以使用`SHOW STATS`语句列出统计结果。详情请参见 [SHOW STATS](../7.general-query-statements/6.show/14.show-stats.md)。 !!! Note - 如果存储在Nebula Graph中的数据有变化,为了获取最新的统计结果,请重新执行`SUBMIT JOB STATS`。 + 如果存储在 Nebula Graph 中的数据有变化,为了获取最新的统计结果,请重新执行`SUBMIT JOB STATS`。 ### 示例 @@ -59,7 +59,7 @@ nebula> SUBMIT JOB STATS; ## SHOW JOB -Meta服务将`SUBMIT JOB`请求解析为多个任务,然后分配给进程nebula-storaged。`SHOW JOB `语句显示当前图空间内指定作业和相关任务的信息。 +Meta 服务将`SUBMIT JOB`请求解析为多个任务,然后分配给进程 nebula-storaged。`SHOW JOB `语句显示当前图空间内指定作业和相关任务的信息。 `job_id`在执行`SUBMIT JOB`语句时会返回。 @@ -77,8 +77,8 @@ nebula> SHOW JOB 34; |参数|说明| |:---|:---| -|Job Id(TaskId)|第一行显示作业ID,其他行显示作业相关的任务ID。| -|Command(Dest)|第一行显示执行的作业命令名称,其他行显示任务对应的nebula-storaged进程。| +|Job Id(TaskId)|第一行显示作业 ID,其他行显示作业相关的任务 ID。| +|Command(Dest)|第一行显示执行的作业命令名称,其他行显示任务对应的 nebula-storaged 进程。| |Status|显示作业或任务的状态。详情请参见[作业状态](#_6)。| |Start Time|显示作业或任务开始执行的时间。| |Stop Time|显示作业或任务结束执行的时间,结束后的状态包括`FINISHED`、`FAILED`或`STOPPED`。| @@ -110,7 +110,7 @@ Queue -- running -- finished -- removed `SHOW JOBS`语句列出当前图空间内所有未过期的作业。 -作业的默认过期时间为一周。如果需要修改过期时间,请修改Meta服务的参数`job_expired_secs`。详情请参见[Meta服务配置](../../5.configurations-and-logs/1.configurations/2.meta-config.md)。 +作业的默认过期时间为一周。如果需要修改过期时间,请修改 Meta 服务的参数`job_expired_secs`。详情请参见 [Meta 服务配置](../../5.configurations-and-logs/1.configurations/2.meta-config.md)。 ### 示例 @@ -161,7 +161,7 @@ nebula> RECOVER JOB; ### 如何排查作业问题? -`SUBMIT JOB`操作使用的是HTTP端口,请检查Storage服务机器上的HTTP端口是否正常工作。用户可以执行如下命令调试: +`SUBMIT JOB`操作使用的是 HTTP 端口,请检查 Storage 服务机器上的 HTTP 端口是否正常工作。用户可以执行如下命令调试: ```bash curl "http://{storaged-ip}:19779/admin?space={space_name}&op=compact" diff --git a/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/6.kill-query.md b/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/6.kill-query.md index 4d1ec415d9f..7e1179223a8 100644 --- a/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/6.kill-query.md +++ b/docs-2.0/3.ngql-guide/18.operation-and-maintenance-statements/6.kill-query.md @@ -8,10 +8,10 @@ KILL QUERY (session=, plan=); ``` -- `session_id`:会话ID。 -- `plan_id`:执行计划ID。 +- `session_id`:会话 ID。 +- `plan_id`:执行计划 ID。 -会话ID和执行计划ID可以唯一确定一个查询。二者可以通过[SHOW QUERIES](../7.general-query-statements/6.show/18.show-queries.md)语句获取。 +会话 ID 和执行计划 ID 可以唯一确定一个查询。二者可以通过 [SHOW QUERIES](../7.general-query-statements/6.show/18.show-queries.md) 语句获取。 ## 示例 diff --git a/docs-2.0/3.ngql-guide/3.data-types/1.numeric.md b/docs-2.0/3.ngql-guide/3.data-types/1.numeric.md index 30691cfb0c9..cdd6a87cfca 100644 --- a/docs-2.0/3.ngql-guide/3.data-types/1.numeric.md +++ b/docs-2.0/3.ngql-guide/3.data-types/1.numeric.md @@ -1,10 +1,10 @@ # 数值 -nGQL支持整数和浮点数。 +nGQL 支持整数和浮点数。 ## 整数 -nGQL支持带符号的64位整数(INT64)、32位整数(INT32)、16位整数(INT16)和8位整数(INT8)。 +nGQL 支持带符号的 64 位整数(INT64)、32 位整数(INT32)、16 位整数(INT16)和 8 位整数(INT8)。 | 类型 | 声明关键字 | 范围 | |-|-|-| @@ -15,24 +15,24 @@ nGQL支持带符号的64位整数(INT64)、32位整数(INT32)、16位整 ## 浮点数 -nGQL支持单精度浮点(FLOAT)和双精度浮点(DOUBLE)。 +nGQL 支持单精度浮点(FLOAT)和双精度浮点(DOUBLE)。 | 类型 | 声明关键字 | 范围 | 精度 | |-|-|-|-| -| FLOAT | `FLOAT` | 3.4E +/- 38 | 6~7位 | -| DOUBLE | `DOUBLE` | 1.7E +/- 308 | 15~16位 | +| FLOAT | `FLOAT` | 3.4E +/- 38 | 6~7 位 | +| DOUBLE | `DOUBLE` | 1.7E +/- 308 | 15~16 位 | -nGQL支持科学计数法,例如`1e2`、`1.1e2`、`.3e4`、`1.e4`、`-1234E-10`。 +nGQL 支持科学计数法,例如`1e2`、`1.1e2`、`.3e4`、`1.e4`、`-1234E-10`。 !!! note - 不支持MySQL中的DECIMAL数据类型。 + 不支持 MySQL 中的 DECIMAL 数据类型。 ## 数值的读写 -在写入和读取不同类型的数据时,nGQL的行为遵守以下规则: +在写入和读取不同类型的数据时,nGQL 的行为遵守以下规则: -| 数值类型 | 设置为VID | 设置为属性类型 | 读取该类型的属性值得到的类型 | +| 数值类型 | 设置为 VID | 设置为属性类型 | 读取该类型的属性值得到的类型 | |-|-|-|-| | INT64 | 支持 | 支持 | INT64 | | INT32 | 不支持 | 支持 | INT64 | @@ -41,14 +41,14 @@ nGQL支持科学计数法,例如`1e2`、`1.1e2`、`.3e4`、`1.e4`、`-1234E-10 | FLOAT | 不支持 | 支持 | DOUBLE | | DOUBLE | 不支持 | 支持 | DOUBLE | -例如,nGQL不支持设置INT8类型的[VID](../../1.introduction/3.vid.md),但支持将[TAG](../10.tag-statements/1.create-tag.md)或[Edge type](../11.edge-type-statements/1.create-edge.md)的某个属性类型设置为INT8。当使用nGQL语句读取INT8类型的属性时,获取到的值的类型为INT64。 +例如,nGQL 不支持设置 INT8 类型的 [VID](../../1.introduction/3.vid.md),但支持将 [TAG](../10.tag-statements/1.create-tag.md) 或 [Edge type](../11.edge-type-statements/1.create-edge.md) 的某个属性类型设置为 INT8。当使用 nGQL 语句读取 INT8 类型的属性时,获取到的值的类型为 INT64。 -同时,Nebula Graph支持写入多种进制的数值: +同时,Nebula Graph 支持写入多种进制的数值: - 十进制,例如`123456`。 - 十六进制,例如`0x1e240`。 - 八进制,例如`0361100`。 -但Nebula Graph会将写入的非十进制数值解析为十进制的值保存。读取到的值为十进制。 +但 Nebula Graph 会将写入的非十进制数值解析为十进制的值保存。读取到的值为十进制。 -例如,属性`score`的类型为`INT`,通过INSERT语句为其赋值`0xb`,使用FETCH等语句查询该属性值获取到的结果是`11`,即将十六进制的`0xb`转换为十进制后的值。 +例如,属性`score`的类型为`INT`,通过 INSERT 语句为其赋值`0xb`,使用 FETCH 等语句查询该属性值获取到的结果是`11`,即将十六进制的`0xb`转换为十进制后的值。 diff --git a/docs-2.0/3.ngql-guide/3.data-types/10.geography.md b/docs-2.0/3.ngql-guide/3.data-types/10.geography.md index f160ef4ea02..c53582b2fae 100644 --- a/docs-2.0/3.ngql-guide/3.data-types/10.geography.md +++ b/docs-2.0/3.ngql-guide/3.data-types/10.geography.md @@ -1,10 +1,10 @@ # 地理位置 -地理位置(GEOGRAPHY)是由经纬度构成的表示地理空间信息的数据类型。Nebula Graph当前支持[简单地理要素](https://en.wikipedia.org/wiki/Simple_Features)中的Point、LineString和Polygon三种地理形状。支持[SQL-MM 3](https://www.techrepublic.com/index.php/resource-library/whitepapers/sql-mm-spatial-the-standard-to-manage-spatial-data-in-relational-database-systems/)中的部分核心geo解析、构造、格式设置、转换、谓词和度量等函数。 +地理位置(GEOGRAPHY)是由经纬度构成的表示地理空间信息的数据类型。Nebula Graph 当前支持[简单地理要素](https://en.wikipedia.org/wiki/Simple_Features)中的 Point、LineString 和 Polygon 三种地理形状。支持 [SQL-MM 3](https://www.techrepublic.com/index.php/resource-library/whitepapers/sql-mm-spatial-the-standard-to-manage-spatial-data-in-relational-database-systems/) 中的部分核心 geo 解析、构造、格式设置、转换、谓词和度量等函数。 ## GEOGRAPHY -GEOGRAPHY的基本类型是点,由经纬度确定一个点,例如`"POINT(3 8)"`表示经度为`3°`,纬度为`8°`。多个点可以构成线段或多边形。 +GEOGRAPHY 的基本类型是点,由经纬度确定一个点,例如`"POINT(3 8)"`表示经度为`3°`,纬度为`8°`。多个点可以构成线段或多边形。 |类型|示例|说明| |:--|:--|:--| @@ -15,7 +15,7 @@ GEOGRAPHY的基本类型是点,由经纬度确定一个点,例如`"POINT(3 8 表示边从v开始,指向v2。对于点v来说是出边,对于点v2来说是入边。 +# -->表示边从 v 开始,指向 v2。对于点 v 来说是出边,对于点 v2 来说是入边。 nebula> MATCH (v:player{name:"Tim Duncan"})-->(v2) \ RETURN v2.name AS Name; +-----------------+ @@ -255,9 +253,9 @@ nebula> MATCH p=(v:player{name:"Tim Duncan"})-->(v2) \ +--------------------------------------------------------------------------------------------------------------------------------------+ ``` -!!! compatibility "openCypher兼容性" +!!! compatibility "openCypher 兼容性" - 在nGQL中,`@`符号表示边的rank,在openCypher中,没有rank概念。 + 在 nGQL 中,`@`符号表示边的 rank,在 openCypher 中,没有 rank 概念。 ### 匹配边 @@ -275,9 +273,9 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-[e]-(v2) \ ... ``` -### 匹配Edge type +### 匹配 Edge type -和点一样,用户可以用`:`表示模式中的Edge type,例如`-[e:follow]-`。 +和点一样,用户可以用`:`表示模式中的 Edge type,例如`-[e:follow]-`。 ```ngql nebula> MATCH ()-[e:follow]-() \ @@ -297,7 +295,7 @@ nebula> MATCH ()-[e:follow]-() \ 匹配边的属性的前提是 Edge type 本身有对应属性的索引,否则,用户无法执行 `MATCH` 语句匹配该属性。 -用户可以用`{: }`表示模式中Edge type的属性,例如`[e:follow{likeness:95}]`。 +用户可以用`{: }`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`。 ```ngql nebula> MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) \ @@ -310,9 +308,9 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) \ +--------------------------------------------------------+ ``` -### 匹配多个Edge type +### 匹配多个 Edge type -使用`|`可以匹配多个Edge type,例如`[e:follow|:serve]`。第一个Edge type前的英文冒号(:)不可省略,后续Edge type前的英文冒号可以省略,例如`[e:follow|serve]`。 +使用`|`可以匹配多个 Edge type,例如`[e:follow|:serve]`。第一个 Edge type 前的英文冒号(:)不可省略,后续 Edge type 前的英文冒号可以省略,例如`[e:follow|serve]`。 ```ngql nebula> MATCH (v:player{name:"Tim Duncan"})-[e:follow|:serve]->(v2) \ @@ -358,7 +356,7 @@ nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) \ +-----------------------------------------------------------+ ``` -如果`hop`为0,模式会匹配路径上的起始点。 +如果`hop`为 0,模式会匹配路径上的起始点。 ```ngql nebula> MATCH (v:player{name:"Tim Duncan"}) -[*0]-> (v2) \ @@ -376,12 +374,12 @@ nebula> MATCH (v:player{name:"Tim Duncan"}) -[*0]-> (v2) \ |参数|说明| |:---|:---| -|`minHop`|可选项。表示路径的最小长度。`minHop`必须是一个非负整数,默认值为1。| +|`minHop`|可选项。表示路径的最小长度。`minHop`必须是一个非负整数,默认值为 1。| |`maxHop`|必选项。表示路径的最大长度。`maxHop`必须是一个非负整数,没有默认值。| -!!! compatibility "openCypher兼容性" +!!! compatibility "openCypher 兼容性" - 在openCypher中,`maxHop`是可选项,默认为无穷大。当没有设置时,`..`可以省略。在nGQL中,`maxHop`是必选项,而且`..`不可以省略。 + 在 openCypher 中,`maxHop`是可选项,默认为无穷大。当没有设置时,`..`可以省略。在 nGQL 中,`maxHop`是必选项,而且`..`不可以省略。 ```ngql nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*1..3]->(v2) \ @@ -425,9 +423,9 @@ nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*0..3]->(v2:player) \ +-----------------------------------------------------------+-----------+ ``` -### 匹配多个Edge type的变长路径 +### 匹配多个 Edge type 的变长路径 -用户可以在变长或定长模式中指定多个Edge type。`hop`、`minHop`和`maxHop`对所有Edge type都生效。 +用户可以在变长或定长模式中指定多个 Edge type。`hop`、`minHop`和`maxHop`对所有 Edge type 都生效。 ```ngql nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow|serve*2]->(v2) \ @@ -469,9 +467,9 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-[e]->(v2) \ +-----------------------------------------------------------------------+ ``` -### 检索点ID +### 检索点 ID -使用`id()`函数检索点ID。 +使用`id()`函数检索点 ID。 ```ngql nebula> MATCH (v:player{name:"Tim Duncan"}) \ @@ -483,9 +481,9 @@ nebula> MATCH (v:player{name:"Tim Duncan"}) \ +-------------+ ``` -### 检索Tag +### 检索 Tag -使用`labels()`函数检索点上的Tag列表。 +使用`labels()`函数检索点上的 Tag 列表。 ```ngql nebula> MATCH (v:player{name:"Tim Duncan"}) \ @@ -497,7 +495,7 @@ nebula> MATCH (v:player{name:"Tim Duncan"}) \ +------------+ ``` -检索列表`labels(v)`中的第N个元素,可以使用`labels(v)[n-1]`。例如下面示例使用`labels(v)[0]`检索第一个元素。 +检索列表`labels(v)`中的第 N 个元素,可以使用`labels(v)[n-1]`。例如下面示例使用`labels(v)[0]`检索第一个元素。 ```ngql nebula> MATCH (v:player{name:"Tim Duncan"}) \ @@ -551,9 +549,9 @@ nebula> MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) \ +----------------------------------+ ``` -### 检索Edge type +### 检索 Edge type -使用`type()`函数检索匹配的Edge type。 +使用`type()`函数检索匹配的 Edge type。 ```ngql nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e]->() \ @@ -640,4 +638,4 @@ nebula> MATCH p=(v:player{name:"Tim Duncan"})-[*..2]->(v2) \ !!! Performance - Nebula Graph中`MATCH`语句的性能和资源占用得到了优化,但对性能要求较高时,仍建议使用 `GO`, `LOOKUP`, `|` 和 `FETCH` 等来替代`MATCH`。 + Nebula Graph 中`MATCH`语句的性能和资源占用得到了优化,但对性能要求较高时,仍建议使用 `GO`, `LOOKUP`, `|` 和 `FETCH` 等来替代`MATCH`。 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md b/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md index 9b1f02cee82..94eab57fa90 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md @@ -2,9 +2,9 @@ `GO`用指定的过滤条件遍历图,并返回结果。 -## openCypher兼容性 +## openCypher 兼容性 -本文操作仅适用于原生nGQL。 +本文操作仅适用于原生 nGQL。 ## 语法 @@ -29,7 +29,7 @@ OVER [{REVERSELY | BIDIRECT}] [AS ] [, [AS ] ...] ``` -- ` STEPS`:指定跳数。如果没有指定跳数,默认值`N`为`1`。如果`N`为`0`,Nebula Graph不会检索任何边。 +- ` STEPS`:指定跳数。如果没有指定跳数,默认值`N`为`1`。如果`N`为`0`,Nebula Graph 不会检索任何边。 !!! note @@ -37,38 +37,38 @@ OVER [{REVERSELY | BIDIRECT}] - `M TO N STEPS`:遍历`M~N`跳的边。如果`M`为`0`,输出结果和`M`为`1`相同,即`GO 0 TO 2`和`GO 1 TO 2`是相同的。 -- ``:用逗号分隔的点ID列表,或特殊的引用符`$-.id`。详情参见[管道符](../5.operators/4.pipe.md)。 +- ``:用逗号分隔的点 ID 列表,或特殊的引用符`$-.id`。详情参见[管道符](../5.operators/4.pipe.md)。 -- ``:遍历的Edge type列表。 +- ``:遍历的 Edge type 列表。 - `REVERSELY | BIDIRECT`:默认情况下检索的是``的出边(正向),`REVERSELY`表示反向,即检索入边;`BIDIRECT` 为双向,即检索正向和反向,通过返回 `._type` 字段判断方向,其正数为正向,负数为反向。 -- `WHERE `:指定遍历的过滤条件。用户可以在起始点、目的点和边使用`WHERE`子句,还可以结合`AND`、`OR`、`NOT`、`XOR`一起使用。详情参见[WHERE](../8.clauses-and-options/where.md)。 +- `WHERE `:指定遍历的过滤条件。用户可以在起始点、目的点和边使用`WHERE`子句,还可以结合`AND`、`OR`、`NOT`、`XOR`一起使用。详情参见 [WHERE](../8.clauses-and-options/where.md)。 !!! Note - 遍历多个Edge type时,`WHERE`子句有一些限制。例如不支持`WHERE edge1.prop1 > edge2.prop2`。 + 遍历多个 Edge type 时,`WHERE`子句有一些限制。例如不支持`WHERE edge1.prop1 > edge2.prop2`。 -- `YIELD [DISTINCT] `:定义需要返回的输出。` `建议使用[Schema函数](../6.functions-and-expressions/4.schema.md),当前支持`src(edge)`、`dst(edge)`、`type(edge)`、`rank(edge)`、`properties(edge)`、`id(vertex)`、`properties(vertex)`,暂不支持嵌套函数。详情参见[YIELD](../8.clauses-and-options/yield.md)。如果没有指定,默认返回目的点ID。 +- `YIELD [DISTINCT] `:定义需要返回的输出。` `建议使用 [Schema 函数](../6.functions-and-expressions/4.schema.md),当前支持`src(edge)`、`dst(edge)`、`type(edge)`、`rank(edge)`、`properties(edge)`、`id(vertex)`、`properties(vertex)`,暂不支持嵌套函数。详情参见 [YIELD](../8.clauses-and-options/yield.md)。如果没有指定,默认返回目的点 ID。 -- `SAMPLE `:用于在结果集中取样。详情参见[SAMPLE](../8.clauses-and-options/sample.md)。 +- `SAMPLE `:用于在结果集中取样。详情参见 [SAMPLE](../8.clauses-and-options/sample.md)。 -- `LIMIT `:用于在遍历过程中逐步限制输出数量。详情参见[LIMIT](../8.clauses-and-options/limit.md)。 +- `LIMIT `:用于在遍历过程中逐步限制输出数量。详情参见 [LIMIT](../8.clauses-and-options/limit.md)。 -- `GROUP BY`:根据指定属性的值将输出分组。详情参见[GROUP BY](../8.clauses-and-options/group-by.md)。分组后需要再次使用`YIELD`定义需要返回的输出。 +- `GROUP BY`:根据指定属性的值将输出分组。详情参见 [GROUP BY](../8.clauses-and-options/group-by.md)。分组后需要再次使用`YIELD`定义需要返回的输出。 -- `ORDER BY`:指定输出结果的排序规则。详情参见[ORDER BY](../8.clauses-and-options/order-by.md)。 +- `ORDER BY`:指定输出结果的排序规则。详情参见 [ORDER BY](../8.clauses-and-options/order-by.md)。 !!! Note 没有指定排序规则时,输出结果的顺序不是固定的。 -- `LIMIT [,] ]`:限制输出结果的行数。详情参见[LIMIT](../8.clauses-and-options/limit.md)。 +- `LIMIT [,] ]`:限制输出结果的行数。详情参见 [LIMIT](../8.clauses-and-options/limit.md)。 ## 示例 ```ngql -# 返回player102所属队伍。 +# 返回 player102 所属队伍。 nebula> GO FROM "player102" OVER serve; +------------+ | serve._dst | @@ -79,7 +79,7 @@ nebula> GO FROM "player102" OVER serve; ``` ```ngql -# 返回距离player102两跳的朋友。 +# 返回距离 player102 两跳的朋友。 nebula> GO 2 STEPS FROM "player102" OVER follow; +-------------+ | follow._dst | @@ -106,20 +106,19 @@ nebula> GO FROM "player100", "player102" OVER serve \ ``` ```ngql -# 遍历多个Edge type。属性没有值时,会显示UNKNOWN_PROP。 +# 遍历多个 Edge type。属性没有值时,会显示 UNKNOWN_PROP。 nebula> GO FROM "player100" OVER follow, serve \ YIELD properties(edge).degree, properties(edge).start_year; +-------------------------+-----------------------------+ | properties(EDGE).degree | properties(EDGE).start_year | +-------------------------+-----------------------------+ | 95 | UNKNOWN_PROP | -| 95 | UNKNOWN_PROP | | UNKNOWN_PROP | 1997 | +-------------------------+-----------------------------+ ``` ```ngql -# 返回player100入方向的邻居点。 +# 返回 player100 入方向的邻居点。 nebula> GO FROM "player100" OVER follow REVERSELY \ YIELD src(edge) AS destination; +-------------+ @@ -130,7 +129,7 @@ nebula> GO FROM "player100" OVER follow REVERSELY \ +-------------+ ... -# 该MATCH查询与上一个GO查询具有相同的语义。 +# 该 MATCH 查询与上一个 GO 查询具有相同的语义。 nebula> MATCH (v)<-[e:follow]- (v2) WHERE id(v) == 'player100' \ RETURN id(v2) AS destination; +-------------+ @@ -143,7 +142,7 @@ nebula> MATCH (v)<-[e:follow]- (v2) WHERE id(v) == 'player100' \ ``` ```ngql -# 查询player100的朋友和朋友所属队伍。 +# 查询 player100 的朋友和朋友所属队伍。 nebula> GO FROM "player100" OVER follow REVERSELY \ YIELD src(edge) AS id | \ GO FROM $-.id OVER serve \ @@ -157,7 +156,7 @@ nebula> GO FROM "player100" OVER follow REVERSELY \ | "Boris Diaw" | "Suns" | ... -# 该MATCH查询与上一个GO查询具有相同的语义。 +# 该 MATCH 查询与上一个 GO 查询具有相同的语义。 nebula> MATCH (v)<-[e:follow]- (v2)-[e2:serve]->(v3) \ WHERE id(v) == 'player100' \ RETURN v2.name AS FriendOf, v3.name AS Team; @@ -171,7 +170,7 @@ nebula> MATCH (v)<-[e:follow]- (v2)-[e2:serve]->(v3) \ ``` ```ngql -# 查询player100 1~2跳内的朋友。 +# 查询 player100 1~2 跳内的朋友。 nebula> GO 1 TO 2 STEPS FROM "player100" OVER follow \ YIELD dst(edge) AS destination; +-------------+ @@ -181,7 +180,7 @@ nebula> GO 1 TO 2 STEPS FROM "player100" OVER follow \ | "player125" | ... -# 该MATCH查询与上一个GO查询具有相同的语义。 +# 该 MATCH 查询与上一个 GO 查询具有相同的语义。 nebula> MATCH (v) -[e:follow*1..2]->(v2) \ WHERE id(v) == "player100" \ RETURN id(v2) AS destination; @@ -215,7 +214,7 @@ nebula> $a = GO FROM "player100" OVER follow YIELD src(edge) AS src, dst(edge) A YIELD $a.src AS src, $a.dst, src(edge), dst(edge) \ | ORDER BY $-.src | OFFSET 1 LIMIT 2; +-------------+-------------+-------------+-------------+ -| src | $a.dst | follow._src | follow._dst | +| src | $a.dst | src(EDGE) | dst(EDGE) | +-------------+-------------+-------------+-------------+ | "player100" | "player125" | "player100" | "player101" | | "player100" | "player101" | "player100" | "player125" | @@ -223,10 +222,10 @@ nebula> $a = GO FROM "player100" OVER follow YIELD src(edge) AS src, dst(edge) A ``` ```ngql -# 在多个边上通过IS NOT EMPTY进行判断。 +# 在多个边上通过 IS NOT EMPTY 进行判断。 nebula> GO FROM "player100" OVER follow WHERE properties($$).name IS NOT EMPTY YIELD dst(edge); +-------------+ -| follow._dst | +| dst(EDGE) | +-------------+ | "player125" | | "player101" | diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/4.fetch.md b/docs-2.0/3.ngql-guide/7.general-query-statements/4.fetch.md index 632c0829e78..73240230bea 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/4.fetch.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/4.fetch.md @@ -1,12 +1,12 @@ # FETCH - + `FETCH`可以获取指定点或边的属性值。 -## openCypher兼容性 +## openCypher 兼容性 -本文操作仅适用于原生nGQL。 +本文操作仅适用于原生 nGQL。 ## 获取点的属性值 @@ -20,15 +20,15 @@ FETCH PROP ON {[, tag_name ...] | *} |参数|说明| |:---|:---| -|`tag_name`|Tag名称。| -|`*`|表示当前图空间中的所有Tag。| -|`vid`|点ID。| -|`YIELD`|定义需要返回的输出。除了返回定义的属性,额外返回`VertexID`。详情请参见[`YIELD`](../8.clauses-and-options/yield.md)。如果没有`YIELD`子句,默认返回`vertices_`,包含点的所有信息。| +|`tag_name`|Tag 名称。| +|`*`|表示当前图空间中的所有 Tag。| +|`vid`|点 ID。| +|`YIELD`|定义需要返回的输出。除了返回定义的属性,额外返回`VertexID`。详情请参见 [`YIELD`](../8.clauses-and-options/yield.md)。如果没有`YIELD`子句,默认返回`vertices_`,包含点的所有信息。| |`AS`| 设置别名。| -### 基于Tag获取点的属性值 +### 基于 Tag 获取点的属性值 -在`FETCH`语句中指定Tag获取对应点的属性值。 +在`FETCH`语句中指定 Tag 获取对应点的属性值。 ```ngql nebula> FETCH PROP ON player "player100"; @@ -55,7 +55,7 @@ nebula> FETCH PROP ON player "player100" \ ### 获取多个点的属性值 -指定多个点ID获取多个点的属性值,点之间用英文逗号(,)分隔。 +指定多个点 ID 获取多个点的属性值,点之间用英文逗号(,)分隔。 ```ngql nebula> FETCH PROP ON player "player101", "player102", "player103"; @@ -68,18 +68,18 @@ nebula> FETCH PROP ON player "player101", "player102", "player103"; +-----------------------------------------------------------+ ``` -### 基于多个Tag获取点的属性值 +### 基于多个 Tag 获取点的属性值 -在`FETCH`语句中指定多个Tag获取属性值。Tag之间用英文逗号(,)分隔。 +在`FETCH`语句中指定多个 Tag 获取属性值。Tag 之间用英文逗号(,)分隔。 ```ngql -# 创建新Tag t1。 -nebula> CREATE TAG t1(a string, b int); +# 创建新 Tag t1。 +nebula> CREATE TAG IF NOT EXISTS t1(a string, b int); -# 为点player100添加Tag t1。 +# 为点 player100 添加 Tag t1。 nebula> INSERT VERTEX t1(a, b) VALUE "player100":("Hello", 100); -# 基于Tag player和t1获取点player100上的属性值。 +# 基于 Tag player 和 t1 获取点 player100 上的属性值。 nebula> FETCH PROP ON player, t1 "player100"; +----------------------------------------------------------------------------+ | vertices_ | @@ -88,7 +88,7 @@ nebula> FETCH PROP ON player, t1 "player100"; +----------------------------------------------------------------------------+ ``` - 用户可以在`FETCH`语句中组合多个Tag和多个点。 + 用户可以在`FETCH`语句中组合多个 Tag 和多个点。 ```ngql nebula> FETCH PROP ON player, t1 "player100", "player103"; @@ -126,16 +126,16 @@ FETCH PROP ON -> [@] [, -> FETCH PROP ON serve "player100" -> "team204"; +-----------------------------------------------------------------------+ | edges_ | @@ -160,7 +160,7 @@ nebula> FETCH PROP ON serve "player100" -> "team204" \ ### 获取多条边的属性值 -指定多个边模式(` -> [@]`)获取多个边的属性值。模式之间用英文逗号(,)分隔。 +指定多个边模式 (` -> [@]`) 获取多个边的属性值。模式之间用英文逗号(,)分隔。 ```ngql nebula> FETCH PROP ON serve "player100" -> "team204", "player133" -> "team202"; @@ -172,19 +172,19 @@ nebula> FETCH PROP ON serve "player100" -> "team204", "player133" -> "team202"; +-----------------------------------------------------------------------+ ``` -### 基于rank获取属性值 +### 基于 rank 获取属性值 -如果有多条边,起始点、目的点和Edge type都相同,可以通过指定rank获取正确的边属性值。 +如果有多条边,起始点、目的点和 Edge type 都相同,可以通过指定 rank 获取正确的边属性值。 ```ngql -# 插入不同属性值、不同rank的边。 +# 插入不同属性值、不同 rank 的边。 nebula> insert edge serve(start_year,end_year) \ values "player100"->"team204"@1:(1998, 2017); nebula> insert edge serve(start_year,end_year) \ values "player100"->"team204"@2:(1990, 2018); -# 默认返回rank为0的边。 +# 默认返回 rank 为 0 的边。 nebula> FETCH PROP ON serve "player100" -> "team204"; +-----------------------------------------------------------------------+ | edges_ | @@ -192,7 +192,7 @@ nebula> FETCH PROP ON serve "player100" -> "team204"; | [:serve "player100"->"team204" @0 {end_year: 2016, start_year: 1997}] | +-----------------------------------------------------------------------+ -# 要获取rank不为0的边,请在FETCH语句中设置rank。 +# 要获取 rank 不为 0 的边,请在 FETCH 语句中设置 rank。 nebula> FETCH PROP ON serve "player100" -> "team204"@1; +-----------------------------------------------------------------------+ | edges_ | @@ -201,12 +201,12 @@ nebula> FETCH PROP ON serve "player100" -> "team204"@1; +-----------------------------------------------------------------------+ ``` -## 复合语句中使用FETCH +## 复合语句中使用 FETCH -将`FETCH`与原生nGQL结合使用是一种常见的方式,例如和`GO`一起。 +将`FETCH`与原生 nGQL 结合使用是一种常见的方式,例如和`GO`一起。 ```ngql -# 返回从点player101开始的follow边的degree值。 +# 返回从点 player101 开始的 follow 边的 degree 值。 nebula> GO FROM "player101" OVER follow \ YIELD src(edge) AS s, dst(edge) AS d \ | FETCH PROP ON follow $-.s -> $-.d \ diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/5.lookup.md b/docs-2.0/3.ngql-guide/7.general-query-statements/5.lookup.md index 94d2e40f847..a18fd9e54a5 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/5.lookup.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/5.lookup.md @@ -1,24 +1,24 @@ # LOOKUP - + `LOOKUP`根据索引遍历数据。用户可以使用`LOOKUP`实现如下功能: - 根据`WHERE`子句搜索特定数据。 -- 通过Tag列出点:检索指定Tag的所有点ID。 +- 通过 Tag 列出点:检索指定 Tag 的所有点 ID。 -- 通过Edge type列出边:检索指定Edge type的所有边的起始点、目的点和rank。 +- 通过 Edge type 列出边:检索指定 Edge type 的所有边的起始点、目的点和 rank。 -- 统计包含指定Tag的点或属于指定Edge type的边的数量。 +- 统计包含指定 Tag 的点或属于指定 Edge type 的边的数量。 -## OpenCypher兼容性 +## OpenCypher 兼容性 -本文操作仅适用于原生nGQL。 +本文操作仅适用于原生 nGQL。 ## 注意事项 -- 索引会导致写性能大幅降低(降低90%甚至更多)。请不要随意在生产环境中使用索引,除非很清楚使用索引对业务的影响。 +- 索引会导致写性能大幅降低(降低 90%甚至更多)。请不要随意在生产环境中使用索引,除非很清楚使用索引对业务的影响。 - 如果用`LOOKUP`语句基于指定属性查询时该属性没有索引,系统会在可用的索引中随机选择一个。 @@ -43,31 +43,31 @@ LOOKUP ON { | } [AS ] [, [AS ] ...]; ``` -- `WHERE `:指定遍历的过滤条件,还可以结合布尔运算符AND和OR一起使用。详情请参见[WHERE](../8.clauses-and-options/where.md)。 +- `WHERE `:指定遍历的过滤条件,还可以结合布尔运算符 AND 和 OR 一起使用。详情请参见 [WHERE](../8.clauses-and-options/where.md)。 - `YIELD`:定义需要返回的输出。 - - `LOOKUP`Tag时,除了返回定义的属性,额外返回`VertexID`。如果没有`YIELD`子句,返回`VertexID`。 - - `LOOKUP`Edge type时,除了返回定义的属性,额外返回`起始点ID`、`目的点ID`和`rank`。如果没有`YIELD`子句,返回`起始点ID`、`目的点ID`和`rank`。 + - `LOOKUP`Tag 时,除了返回定义的属性,额外返回`VertexID`。如果没有`YIELD`子句,返回`VertexID`。 + - `LOOKUP`Edge type 时,除了返回定义的属性,额外返回`起始点 ID`、`目的点 ID`和`rank`。如果没有`YIELD`子句,返回`起始点 ID`、`目的点 ID`和`rank`。 - `AS`:设置别名。 -## WHERE语句限制 +## WHERE 语句限制 在`LOOKUP`语句中使用`WHERE`子句,不支持如下操作: - `$-`和`$^`。 - 在关系表达式中,不支持运算符两边都有字段名,例如`tagName.prop1 > tagName.prop2`。 -- 不支持运算表达式和函数表达式中嵌套AliasProp表达式。 -- 不支持XOR和NOT运算符。 +- 不支持运算表达式和函数表达式中嵌套 AliasProp 表达式。 +- 不支持 XOR 和 NOT 运算符。 - 不支持除`STARTS WITH`之外的字符串操作。 ## 检索点 -返回Tag为`player`且`name`为`Tony Parker`的点。 +返回 Tag 为`player`且`name`为`Tony Parker`的点。 ```ngql -nebula> CREATE TAG INDEX index_player ON player(name(30), age); +nebula> CREATE TAG INDEX IF NOT EXISTS index_player ON player(name(30), age); nebula> REBUILD TAG INDEX index_player; +------------+ @@ -127,10 +127,10 @@ nebula> LOOKUP ON player \ ## 检索边 -返回Edge type为`follow`且`degree`为`90`的边。 +返回 Edge type 为`follow`且`degree`为`90`的边。 ```ngql -nebula> CREATE EDGE INDEX index_follow ON follow(degree); +nebula> CREATE EDGE INDEX IF NOT EXISTS index_follow ON follow(degree); nebula> REBUILD EDGE INDEX index_follow; +------------+ @@ -165,27 +165,27 @@ nebula> LOOKUP ON follow \ YIELD properties(edge).degree AS Degree |\ GO FROM $-.DstVID OVER serve \ YIELD $-.DstVID, properties(edge).start_year, properties(edge).end_year, properties($$).name; -+-------------+------------------+----------------+--------------+ -| $-.DstVID | serve.start_year | serve.end_year | $$.team.name | -+-------------+------------------+----------------+--------------+ -| "player105" | 2010 | 2018 | "Spurs" | -| "player105" | 2009 | 2010 | "Cavaliers" | -| "player105" | 2018 | 2019 | "Raptors" | -+-------------+------------------+----------------+--------------+ ++-------------+------------------------------+---------------------------+---------------------+ +| $-.DstVID | properties(EDGE).start_year | properties(EDGE).end_year | properties($$).name | ++-------------+------------------------------+---------------------------+---------------------+ +| "player105" | 2010 | 2018 | "Spurs" | +| "player105" | 2009 | 2010 | "Cavaliers" | +| "player105" | 2018 | 2019 | "Raptors" | ++-------------+------------------------------+---------------------------+---------------------+ ``` -## 通过Tag列出所有的对应的点/通过Edge type列出边 +## 通过 Tag 列出所有的对应的点/通过 Edge type 列出边 -如果需要通过Tag列出所有的点,或通过Edge type列出边,则Tag、Edge type或属性上必须有至少一个索引。 +如果需要通过 Tag 列出所有的点,或通过 Edge type 列出边,则 Tag、Edge type 或属性上必须有至少一个索引。 -例如一个Tag `player`有属性`name`和`age`,为了遍历所有包含Tag `player`的点ID,Tag `player`、属性`name`或属性`age`中必须有一个已经创建索引。 +例如一个 Tag `player`有属性`name`和`age`,为了遍历所有包含 Tag `player`的点 ID,Tag `player`、属性`name`或属性`age`中必须有一个已经创建索引。 -- 查找所有Tag为`player`的点 VID。 +- 查找所有 Tag 为`player`的点 VID。 ```ngql - nebula> CREATE TAG player(name string,age int); + nebula> CREATE TAG IF NOT EXISTS player(name string,age int); - nebula> CREATE TAG INDEX player_index on player(); + nebula> CREATE TAG INDEX IF NOT EXISTS player_index on player(); nebula> REBUILD TAG INDEX player_index; +------------+ @@ -208,12 +208,12 @@ nebula> LOOKUP ON follow \ +-------------+ ``` -- 查找Edge type为`follow`的所有边的信息。 +- 查找 Edge type 为`follow`的所有边的信息。 ```ngql - nebula> CREATE EDGE follow(degree int); + nebula> CREATE EDGE IF NOT EXISTS follow(degree int); - nebula> CREATE EDGE INDEX follow_index on follow(); + nebula> CREATE EDGE INDEX IF NOT EXISTS follow_index on follow(); nebula> REBUILD EDGE INDEX follow_index; +------------+ @@ -237,7 +237,7 @@ nebula> LOOKUP ON follow \ ## 统计点或边 -统计Tag为`player`的点和Edge type为`follow`的边。 +统计 Tag 为`player`的点和 Edge type 为`follow`的边。 ```ngql nebula> LOOKUP ON player |\ @@ -259,4 +259,4 @@ nebula> LOOKUP ON follow | \ !!! note - 使用[`SHOW STATS`命令](./6.show/14.show-stats.md)也可以统计点和边。 + 使用 [`SHOW STATS`命令](./6.show/14.show-stats.md)也可以统计点和边。 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/1.show-charset.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/1.show-charset.md index e920d34c41e..f9291aba0f8 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/1.show-charset.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/1.show-charset.md @@ -2,7 +2,7 @@ `SHOW CHARSET`语句显示当前的字符集。 -目前可用的字符集为`utf8`和`utf8mb4`。默认字符集为`utf8`。Nebula Graph扩展`uft8`支持四字节字符,因此`utf8`和`utf8mb4`是等价的。 +目前可用的字符集为`utf8`和`utf8mb4`。默认字符集为`utf8`。Nebula Graph 扩展`uft8`支持四字节字符,因此`utf8`和`utf8mb4`是等价的。 ## 语法 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/12.show-spaces.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/12.show-spaces.md index a35afa834c0..ae1ce2f54c1 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/12.show-spaces.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/12.show-spaces.md @@ -2,7 +2,7 @@ `SHOW SPACES`语句显示现存的图空间。 -如何创建图空间,请参见[CREATE SPACE](./../../9.space-statements/1.create-space.md)。 +如何创建图空间,请参见 [CREATE SPACE](./../../9.space-statements/1.create-space.md)。 ## 语法 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md index 6494f56b546..0cc2ee16b8d 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md @@ -6,12 +6,12 @@ - 点的总数 - 边的总数 -- 每个Tag关联的点的总数 -- 每个Edge type关联的边的总数 +- 每个 Tag 关联的点的总数 +- 每个 Edge type 关联的边的总数 ## 前提条件 -在需要查看统计信息的图空间中执行`SUBMIT JOB STATS`。详情请参见[SUBMIT JOB STATS](../../18.operation-and-maintenance-statements/4.job-statements.md)。 +在需要查看统计信息的图空间中执行`SUBMIT JOB STATS`。详情请参见 [SUBMIT JOB STATS](../../18.operation-and-maintenance-statements/4.job-statements.md)。 !!! caution @@ -29,7 +29,7 @@ SHOW STATS; # 选择图空间。 nebula> USE basketballplayer; -# 执行SUBMIT JOB STATS。 +# 执行 SUBMIT JOB STATS。 nebula> SUBMIT JOB STATS; +------------+ | New Job Id | diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/15.show-tags-edges.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/15.show-tags-edges.md index b0c00e31842..3be597d307a 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/15.show-tags-edges.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/15.show-tags-edges.md @@ -1,8 +1,8 @@ # SHOW TAGS/EDGES -`SHOW TAGS`语句显示当前图空间内的所有Tag。 +`SHOW TAGS`语句显示当前图空间内的所有 Tag。 -`SHOW EDGES`语句显示当前图空间内的所有Edge type。 +`SHOW EDGES`语句显示当前图空间内的所有 Edge type。 ## 语法 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md index 3b42816c8f3..be49d01360f 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md @@ -1,14 +1,14 @@ # SHOW SESSIONS -`SHOW SESSIONS`语句显示所有会话信息,也可以指定会话ID进行查看。 +`SHOW SESSIONS`语句显示所有会话信息,也可以指定会话 ID 进行查看。 ## 注意事项 -使用Nebula Console登录数据库时,会创建一个会话,操作结束执行`exit`退出登录时,客户端会调用API `release`,释放会话并清除会话信息。 +使用 Nebula Console 登录数据库时,会创建一个会话,操作结束执行`exit`退出登录时,客户端会调用 API `release`,释放会话并清除会话信息。 -如果没有正常退出,且没有在配置文件[nebula-graphd.conf](../../../5.configurations-and-logs/1.configurations/3.graph-config.md)设置空闲会话超时时间(`session_idle_timeout_secs`),会话不会自动释放。 +如果没有正常退出,且没有在配置文件 [nebula-graphd.conf](../../../5.configurations-and-logs/1.configurations/3.graph-config.md) 设置空闲会话超时时间(`session_idle_timeout_secs`),会话不会自动释放。 -对于未自动释放的会话,需要手动删除指定会话(TODO: coding)。 +对于未自动释放的会话,需要手动删除指定会话 (TODO: coding)。 ## 语法 @@ -53,11 +53,11 @@ nebula> SHOW SESSION 1635254859271703; |参数|说明| |:---|:---| -|`SessionId`|会话ID,唯一标识一个会话。| +|`SessionId`|会话 ID,唯一标识一个会话。| |`UserName`|会话的登录用户名称。| |`SpaceName`|用户当前所使用的图空间。刚登录时为空(`""`)。| |`CreateTime`|会话的创建时间,即用户认证登录的时间。时区为配置文件中`timezone_name`指定的时区。| |`UpdateTime`|用户有执行操作时,会更新此时间。时区为配置文件中`timezone_name`指定的时区。| -|`GraphAddr`|会话的Graph服务地址和端口。| +|`GraphAddr`|会话的 Graph 服务地址和端口。| |`Timezone`|保留参数,暂无意义。| -|`ClientIp`|会话的客户端IP地址。| +|`ClientIp`|会话的客户端 IP 地址。| diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/18.show-queries.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/18.show-queries.md index 934dd306e6f..3b6374e44f9 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/18.show-queries.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/18.show-queries.md @@ -1,6 +1,6 @@ # SHOW QUERIES -`SHOW QUERIES`语句可以查看当前Session中正在执行的查询请求信息。 +`SHOW QUERIES`语句可以查看当前 Session 中正在执行的查询请求信息。 !!! note @@ -8,9 +8,9 @@ ## 注意事项 -- `SHOW QUERIES`从本地缓存获取当前Session中查询的状态,几乎没有延迟。 +- `SHOW QUERIES`从本地缓存获取当前 Session 中查询的状态,几乎没有延迟。 -- `SHOW ALL QUERIES`从Meta服务获取所有Session中的查询信息。这些信息会根据参数`session_reclaim_interval_secs`定义的周期同步到Meta服务,因此在客户端获取到的信息可能属于上个同步周期。 +- `SHOW ALL QUERIES`从 Meta 服务获取所有 Session 中的查询信息。这些信息会根据参数`session_reclaim_interval_secs`定义的周期同步到 Meta 服务,因此在客户端获取到的信息可能属于上个同步周期。 ## 语法 @@ -35,7 +35,7 @@ nebula> SHOW ALL QUERIES; | 1625456037718757 | 54 | "user1" | ""192.168.x.x":9669" | 2021-07-05T05:51:08.691318 | 1504502 | "RUNNING" | "MATCH p=(v:player)-[*1..4]-(v2) RETURN v2 AS Friends;" | +------------------+-----------------+---------+----------------------+----------------------------+----------------+-----------+---------------------------------------------------------+ -# 返回耗时TOP 10的查询。 +# 返回耗时 TOP 10 的查询。 nebula> SHOW ALL QUERIES | ORDER BY $-.DurationInUSec DESC | LIMIT 10; +------------------+-----------------+---------+----------------------+----------------------------+----------------+-----------+-------------------------------------------------------+ | SessionID | ExecutionPlanID | User | Host | StartTime | DurationInUSec | Status | Query | @@ -49,8 +49,8 @@ nebula> SHOW ALL QUERIES | ORDER BY $-.DurationInUSec DESC | LIMIT 10; |参数|说明| |:---|:---| -| `SessionID` | 会话ID。 | -| `ExecutionPlanID` | 执行计划ID。 | +| `SessionID` | 会话 ID。 | +| `ExecutionPlanID` | 执行计划 ID。 | | `User` | 执行查询的用户名。 | | `Host` | 用户连接的服务器地址和端口。 | | `StartTime` | 执行查询的开始时间。 | diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/19.show-meta-leader.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/19.show-meta-leader.md index d38ec1cd19b..24afa3481dc 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/19.show-meta-leader.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/19.show-meta-leader.md @@ -1,8 +1,8 @@ # SHOW META LEADER -`SHOW META LEADER`语句显示当前Meta集群的leader信息。 +`SHOW META LEADER`语句显示当前 Meta 集群的 leader 信息。 -关于Meta服务的详细说明请参见[Meta 服务](../../../1.introduction/3.nebula-graph-architecture/2.meta-service.md)。 +关于 Meta 服务的详细说明请参见 [Meta 服务](../../../1.introduction/3.nebula-graph-architecture/2.meta-service.md)。 ## 语法 @@ -23,5 +23,5 @@ nebula> SHOW META LEADER; |参数|说明| |:---|:---| -|`Meta Leader`|Meta集群的leader信息,包括leader所在服务器的IP地址和端口。| +|`Meta Leader`|Meta 集群的 leader 信息,包括 leader 所在服务器的 IP 地址和端口。| |`secs from last heart beat`|距离上次心跳的时间间隔。单位:秒。| diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/4.show-create-space.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/4.show-create-space.md index 4fb7c5b2c0d..859938dfd3c 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/4.show-create-space.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/4.show-create-space.md @@ -2,7 +2,7 @@ `SHOW CREATE SPACE`语句显示指定图空间的创建语句。 -图空间的更多详细信息,请参见[CREATE SPACE](../../9.space-statements/1.create-space.md)。 +图空间的更多详细信息,请参见 [CREATE SPACE](../../9.space-statements/1.create-space.md)。 ## 语法 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/5.show-create-tags-edges.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/5.show-create-tag-edge.md similarity index 73% rename from docs-2.0/3.ngql-guide/7.general-query-statements/6.show/5.show-create-tags-edges.md rename to docs-2.0/3.ngql-guide/7.general-query-statements/6.show/5.show-create-tag-edge.md index c01b3ffec7f..4f84245cb41 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/5.show-create-tags-edges.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/5.show-create-tag-edge.md @@ -1,8 +1,8 @@ # SHOW CREATE TAG/EDGE -`SHOW CREATE TAG`语句显示指定Tag的基本信息。Tag的更多详细信息,请参见[CREATE TAG](../../10.tag-statements/1.create-tag.md)。 +`SHOW CREATE TAG`语句显示指定 Tag 的基本信息。Tag 的更多详细信息,请参见 [CREATE TAG](../../10.tag-statements/1.create-tag.md)。 -`SHOW CREATE EDGE`语句显示指定Edge type的基本信息。Edge type的更多详细信息,请参见[CREATE EDGE](../../11.edge-type-statements/1.create-edge.md)。 +`SHOW CREATE EDGE`语句显示指定 Edge type 的基本信息。Edge type 的更多详细信息,请参见 [CREATE EDGE](../../11.edge-type-statements/1.create-edge.md)。 ## 语法 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md index 4b2d19fd453..3bfd2b05ce7 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md @@ -1,6 +1,6 @@ # SHOW HOSTS -`SHOW HOSTS`语句可以显示Graph、Storage、Meta服务主机信息、版本信息。 +`SHOW HOSTS`语句可以显示 Graph、Storage、Meta 服务主机信息、版本信息。 ## 语法 @@ -8,7 +8,9 @@ SHOW HOSTS [GRAPH | STORAGE | META]; ``` -不添加服务名,直接使用`SHOW HOSTS`,会显示Storage服务主机信息,以及leader总数、leader分布和分片分布。 +!!! note + - 不添加服务名,直接使用`SHOW HOSTS`时,会显示 Storage 服务主机信息,以及 leader 总数、leader 分布和分片分布。 + - 对于使用源码安装的 Nebula Graph,执行添加了服务名的命令后,输出的信息中不显示版本信息。 ## 示例 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/8.show-indexes.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/8.show-indexes.md index a2734488b8c..51b5532a084 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/8.show-indexes.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/8.show-indexes.md @@ -1,6 +1,6 @@ # SHOW INDEXES -`SHOW INDEXES`语句可以列出当前图空间内的所有Tag和Edge type(包括属性)的索引。 +`SHOW INDEXES`语句可以列出当前图空间内的所有 Tag 和 Edge type(包括属性)的索引。 ## 语法 @@ -29,7 +29,6 @@ nebula> SHOW EDGE INDEXES; +----------------+----------+---------+ ``` - !!! Compatibility "历史版本兼容性" - Nebula Graph 2.0.1中, `SHOW TAG/EDGE INDEXES` 语句仅返回 `Names`。 + Nebula Graph 2.0.1 中, `SHOW TAG/EDGE INDEXES` 语句仅返回 `Names`。 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/9.show-parts.md b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/9.show-parts.md index 524f472cba0..6a14a6e57e3 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/9.show-parts.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/6.show/9.show-parts.md @@ -39,7 +39,7 @@ nebula> SHOW PARTS 1; | 参数 | 说明 | | - | - | -| `Partition ID` | 存储分片的ID | -| `Leader` | 分片对应的Raft leader副本的信息,包括IP地址与服务端口 | -| `Peers` | 分片对应的所有副本(leader与follower)的信息,包括IP地址与服务端口 | -| `Losts` | 分片对应的处于离线状态的副本信息,包括IP地址和服务端口 | +| `Partition ID` | 存储分片的 ID | +| `Leader` | 分片对应的 Raft leader 副本的信息,包括 IP 地址与服务端口 | +| `Peers` | 分片对应的所有副本(leader 与 follower)的信息,包括 IP 地址与服务端口 | +| `Losts` | 分片对应的处于离线状态的副本信息,包括 IP 地址和服务端口 | diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/7.unwind.md b/docs-2.0/3.ngql-guide/7.general-query-statements/7.unwind.md index 70671579a90..2f2c2268e7c 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/7.unwind.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/7.unwind.md @@ -27,7 +27,7 @@ nebula> UNWIND [1,2,3] AS n RETURN n; 在`UNWIND`语句中使用`WITH DISTINCT`可以将列表中的重复项忽略,返回去重后的结果。 -### 示例1 +### 示例 1 1. 拆分列表`[1,1,2,2,3,3]`。 2. 删除重复行。 @@ -47,7 +47,7 @@ nebula> WITH [1,1,2,2,3,3] AS n \ +------------+ ``` -### 示例2 +### 示例 2 1. 将匹配路径上的顶点输出到列表中。 2. 拆分列表。 diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/group-by.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/group-by.md index 691c00cd875..39544807ae0 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/group-by.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/group-by.md @@ -2,11 +2,11 @@ `GROUP BY`子句可以用于聚合数据。 -## openCypher兼容性 +## openCypher 兼容性 -本文操作仅适用于原生nGQL。 +本文操作仅适用于原生 nGQL。 -用户也可以使用openCypher方式的[count()](../6.functions-and-expressions/7.count.md)函数聚合数据。 +用户也可以使用 openCypher 方式的 [count()](../6.functions-and-expressions/7.count.md) 函数聚合数据。 ```ngql nebula> MATCH (v:player)<-[:follow]-(:player) RETURN v.name AS Name, count(*) as cnt ORDER BY cnt DESC; @@ -36,7 +36,7 @@ nebula> MATCH (v:player)<-[:follow]-(:player) RETURN v.name AS Name, count(*) a ## 示例 ```ngql -# 查找所有连接到player100的点,并根据他们的姓名进行分组,返回姓名的出现次数。 +# 查找所有连接到 player100 的点,并根据他们的姓名进行分组,返回姓名的出现次数。 nebula> GO FROM "player100" OVER follow BIDIRECT \ YIELD properties($$).name as Name \ | GROUP BY $-.Name \ @@ -60,7 +60,7 @@ nebula> GO FROM "player100" OVER follow BIDIRECT \ ## 用函数进行分组和计算 ```ngql -# 查找所有连接到player100的点,并根据起始点进行分组,返回degree的总和。 +# 查找所有连接到 player100 的点,并根据起始点进行分组,返回 degree 的总和。 nebula> GO FROM "player100" OVER follow \ YIELD src(edge) AS player, properties(edge).degree AS degree \ | GROUP BY $-.player \ diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/limit.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/limit.md index 513dd47d282..dc4962085cd 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/limit.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/limit.md @@ -1,26 +1,26 @@ # LIMIT -`LIMIT`子句限制输出结果的行数。`LIMIT`在原生nGQL语句和openCypher兼容语句中的用法有所不同。 +`LIMIT`子句限制输出结果的行数。`LIMIT`在原生 nGQL 语句和 openCypher 兼容语句中的用法有所不同。 -- 在原生nGQL语句中,一般需要在`LIMIT`子句前使用管道符,可以直接在LIMIT语句后设置或者省略偏移量参数。 +- 在原生 nGQL 语句中,一般需要在`LIMIT`子句前使用管道符,可以直接在 LIMIT 语句后设置或者省略偏移量参数。 -- 在openCypher兼容语句中,不允许在`LIMIT`子句前使用管道符,可以使用`SKIP`指明偏移量。 +- 在 openCypher 兼容语句中,不允许在`LIMIT`子句前使用管道符,可以使用`SKIP`指明偏移量。 !!! Note - 在原生nGQL或openCypher方式中使用`LIMIT`时,使用`ORDER BY`子句限制输出顺序非常重要,否则会输出一个不可预知的子集。 + 在原生 nGQL 或 openCypher 方式中使用`LIMIT`时,使用`ORDER BY`子句限制输出顺序非常重要,否则会输出一个不可预知的子集。 !!! compatibility "历史版本兼容性" - Nebula Graph 2.6.0中,`GO`语句支持了新的`LIMIT`语法。部分`LIMIT`相关的算子支持计算下推。 + Nebula Graph 2.6.0 中,`GO`语句支持了新的`LIMIT`语法。部分`LIMIT`相关的算子支持计算下推。 -## 原生nGQL语句中的LIMIT +## 原生 nGQL 语句中的 LIMIT -在原生nGQL中,`LIMIT`有通用语法和`GO`语句中的专属语法。 +在原生 nGQL 中,`LIMIT`有通用语法和`GO`语句中的专属语法。 -### 原生nGQL中的通用LIMIT语法 +### 原生 nGQL 中的通用 LIMIT 语法 -原生nGQL中的通用`LIMIT`语法与`SQL`中的`LIMIT`原理相同。`LIMIT`子句接收一个或两个参数,参数的值必须是非负整数,且必须用在管道符之后。语法和说明如下: +原生 nGQL 中的通用`LIMIT`语法与`SQL`中的`LIMIT`原理相同。`LIMIT`子句接收一个或两个参数,参数的值必须是非负整数,且必须用在管道符之后。语法和说明如下: ```ngql ... | LIMIT [,] ; @@ -34,7 +34,7 @@ 示例: ```ngql -# 从结果中返回最前面的3行数据。 +# 从结果中返回最前面的 3 行数据。 nebula> LOOKUP ON player |\ LIMIT 3; +-------------+ @@ -45,7 +45,7 @@ nebula> LOOKUP ON player |\ | "player102" | +-------------+ -# 从排序后结果中返回第2行开始的3行数据。 +# 从排序后结果中返回第 2 行开始的 3 行数据。 nebula> GO FROM "player100" OVER follow REVERSELY \ YIELD properties($$).name AS Friend, properties($$).age AS Age \ | ORDER BY $-.Age, $-.Friend \ @@ -59,9 +59,9 @@ nebula> GO FROM "player100" OVER follow REVERSELY \ +-------------------+-----+ ``` -### GO语句中的LIMIT +### GO 语句中的 LIMIT -`GO`语句中的`LIMIT`除了支持原生nGQL中的通用语法外,还支持根据边限制输出结果数量。 +`GO`语句中的`LIMIT`除了支持原生 nGQL 中的通用语法外,还支持根据边限制输出结果数量。 语法: @@ -71,13 +71,13 @@ nebula> GO FROM "player100" OVER follow REVERSELY \ `limit_list`是一个列表,列表中的元素必须为自然数,且元素数量必须与`GO`语句中的`STEPS`的最大数相同。下文以`GO 1 TO 3 STEPS FROM "A" OVER * LIMIT `为例详细介绍`LIMIT`的这种用法。 -* 列表`limit_list`必须包含3个自然数元素,例如`GO 1 TO 3 STEPS FROM "A" OVER * LIMIT [1,2,4]`。 -* `LIMIT [1,2,4]`中的`1`表示系统在第一步时自动选择1条边继续遍历,`2`表示在第二步时选择2条边继续遍历,`4`表示在第三步时选择4条边继续遍历。 +* 列表`limit_list`必须包含 3 个自然数元素,例如`GO 1 TO 3 STEPS FROM "A" OVER * LIMIT [1,2,4]`。 +* `LIMIT [1,2,4]`中的`1`表示系统在第一步时自动选择 1 条边继续遍历,`2`表示在第二步时选择 2 条边继续遍历,`4`表示在第三步时选择 4 条边继续遍历。 * 因为`GO 1 TO 3 STEPS`表示返回第一到第三步的所有遍历结果,因此下图中所有红色边和它们的原点与目的点都会被这条`GO`语句匹配上,而黄色边表示`GO`语句遍历时没有选择的路径。如果不是`GO 1 TO 3 STEPS`而是`GO 3 STEPS`,则只会匹配上第三步的红色边和它们两端的点。 ![LIMIT in GO](limit_in_go_1.png) -在basketballplayer数据集中的执行示例如下: +在 basketballplayer 数据集中的执行示例如下: ```ngql nebula> GO 3 STEPS FROM "player100" \ @@ -95,18 +95,18 @@ nebula> GO 3 STEPS FROM "player100" \ nebula> GO 3 STEPS FROM "player102" \ OVER * \ LIMIT [rand32(5),rand32(5),rand32(5)]; -+------------+-------------+---------------------+ -| serve._dst | follow._dst | any_shape_edge._dst | -+------------+-------------+---------------------+ -| "team204" | | | -| "team215" | | | -| | "player100" | | -+------------+-------------+---------------------+ ++------------+-------------+ +| serve._dst | follow._dst | ++------------+-------------+ +| "team204" | | +| "team215" | | +| | "player100" | ++------------+-------------+ ``` -## openCypher兼容语句中的LIMIT +## openCypher 兼容语句中的 LIMIT -在`MATCH`等openCypher兼容语句中使用LIMIT不需要加管道符。语法和说明如下: +在`MATCH`等 openCypher 兼容语句中使用 LIMIT 不需要加管道符。语法和说明如下: ```ngql ... [SKIP ] [LIMIT ]; @@ -121,9 +121,9 @@ nebula> GO 3 STEPS FROM "player102" \ !!! Note - 两个整数组成的分数表达式会自动向下取整。例如`8/6`向下取整为1。 + 两个整数组成的分数表达式会自动向下取整。例如`8/6`向下取整为 1。 -### 单独使用LIMIT +### 单独使用 LIMIT `LIMIT`可以单独使用,返回指定数量的结果。 @@ -152,7 +152,7 @@ nebula> MATCH (v:player) RETURN v.name AS Name, v.age AS Age \ +-------------------------+-----+ ``` -### 单独使用SKIP +### 单独使用 SKIP `SKIP`可以单独使用,用于设置偏移量,返回指定位置之后的数据。 @@ -177,7 +177,7 @@ nebula> MATCH (v:player{name:"Tim Duncan"}) --> (v2) \ +---------------+-----+ ``` -### 同时使用SKIP与LIMIT +### 同时使用 SKIP 与 LIMIT 同时使用`SKIP`与`LIMIT`可以返回从指定位置开始的指定数量的数据。 @@ -195,5 +195,5 @@ nebula> MATCH (v:player{name:"Tim Duncan"}) --> (v2) \ diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/order-by.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/order-by.md index 438c7d80e07..50e6bcff1f9 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/order-by.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/order-by.md @@ -2,16 +2,16 @@ `ORDER BY`子句指定输出结果的排序规则。 -- 在原生nGQL中,必须在`YIELD`子句之后使用管道符(|)和`ORDER BY`子句。 +- 在原生 nGQL 中,必须在`YIELD`子句之后使用管道符(|)和`ORDER BY`子句。 -- 在openCypher方式中,不允许使用管道符。在`RETURN`子句之后使用`ORDER BY`子句。 +- 在 openCypher 方式中,不允许使用管道符。在`RETURN`子句之后使用`ORDER BY`子句。 排序规则分为如下两种: - `ASC`(默认): 升序。 - `DESC`: 降序。 -## 原生nGQL语法 +## 原生 nGQL 语法 ```ngql @@ -20,7 +20,7 @@ ORDER BY [ASC | DESC] [, [ASC | DESC] ...]; !!! compatibility - 原生nGQL语法中,`ORDER BY`命令后必须使用引用符`$-.`。但在2.5.0之前的版本中不需要。 + 原生 nGQL 语法中,`ORDER BY`命令后必须使用引用符`$-.`。但在 2.5.0 之前的版本中不需要。 ### 示例 @@ -48,7 +48,7 @@ nebula> $var = GO FROM "player100" OVER follow \ +-------------+ ``` -## OpenCypher方式语法 +## OpenCypher 方式语法 ```ngql @@ -85,9 +85,9 @@ nebula> MATCH (v:player) RETURN v.age AS Age, v.name AS Name \ ... ``` -## NULL值的排序 +## NULL 值的排序 -升序排列时,会在输出的最后列出NULL值,降序排列时,会在输出的开头列出NULL值。 +升序排列时,会在输出的最后列出 NULL 值,降序排列时,会在输出的开头列出 NULL 值。 ```ngql nebula> MATCH (v:player{name:"Tim Duncan"}) --> (v2) \ diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/return.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/return.md index d24c3474ca3..cc2c373ea6c 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/return.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/return.md @@ -1,24 +1,24 @@ # RETURN -`RETURN`子句定义了nGQL查询的输出结果。如果需要返回多个字段,用英文逗号(,)分隔。 +`RETURN`子句定义了 nGQL 查询的输出结果。如果需要返回多个字段,用英文逗号(,)分隔。 `RETURN`可以引导子句或语句: -- `RETURN`子句可以用于nGQL中的openCypher方式语句中,例如`MATCH`或`UNWIND`。 +- `RETURN`子句可以用于 nGQL 中的 openCypher 方式语句中,例如`MATCH`或`UNWIND`。 - `RETURN`可以单独使用,输出表达式的结果。 -## openCypher兼容性 +## openCypher 兼容性 -本文操作仅适用于nGQL中的openCypher方式。关于原生nGQL如何定义输出结果,请参见[`YIELD`](yield.md)。 +本文操作仅适用于 nGQL 中的 openCypher 方式。关于原生 nGQL 如何定义输出结果,请参见 [`YIELD`](yield.md)。 -`RETURN`不支持如下openCypher功能: +`RETURN`不支持如下 openCypher 功能: - 使用不在英文字母表中的字符作为变量名。例如: ```ngql - MATCH (`点1`:player) \ - RETURN `点1`; + MATCH (`点 1`:player) \ + RETURN `点 1`; ``` - 设置一个模式,并返回该模式匹配的所有元素。例如: @@ -30,13 +30,13 @@ ## 历史版本兼容性 -- 在nGQL 1.x中,`RETURN`适用于原生nGQL,语法为`RETURN IF IS NOT NULL`。 +- 在 nGQL 1.x 中,`RETURN`适用于原生 nGQL,语法为`RETURN IF IS NOT NULL`。 -- 在nGQL 2.0中,`RETURN`不适用于原生nGQL。 +- 在 nGQL 2.0 中,`RETURN`不适用于原生 nGQL。 -## Map顺序说明 +## Map 顺序说明 -`RETURN`返回Map时,Key的顺序是未定义的。 +`RETURN`返回 Map 时,Key 的顺序是未定义的。 ```ngql nebula> RETURN {age: 32, name: "Marco Belinelli"}; @@ -173,13 +173,13 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-[e]->(v2) \ ```ngql nebula> MATCH (v:player{name:"Tony Parker"})-->(v2:player) \ RETURN DISTINCT v2.name, "Hello"+" graphs!", v2.age > 35; -+---------------------+------------------+-------------+ -| v2.name | (Hello+ graphs!) | (v2.age>35) | -+---------------------+------------------+-------------+ -| "Tim Duncan" | "Hello graphs!" | true | -| "LaMarcus Aldridge" | "Hello graphs!" | false | -| "Manu Ginobili" | "Hello graphs!" | true | -+---------------------+------------------+-------------+ ++---------------------+----------------------+-------------+ +| v2.name | ("Hello"+" graphs!") | (v2.age>35) | ++---------------------+----------------------+-------------+ +| "Tim Duncan" | "Hello graphs!" | true | +| "LaMarcus Aldridge" | "Hello graphs!" | false | +| "Manu Ginobili" | "Hello graphs!" | true | ++---------------------+----------------------+-------------+ nebula> RETURN 1+1; +-------+ @@ -208,7 +208,7 @@ nebula> RETURN 1+1, rand32(1, 5); 使用`DISTINCT`可以删除结果集中的重复字段。 ```ngql -# 未使用DISTINCT。 +# 未使用 DISTINCT。 nebula> MATCH (v:player{name:"Tony Parker"})--(v2:player) \ RETURN v2.name, v2.age; +---------------------+--------+ @@ -224,7 +224,7 @@ nebula> MATCH (v:player{name:"Tony Parker"})--(v2:player) \ | "Manu Ginobili" | 41 | +---------------------+--------+ -# 使用DISTINCT。 +# 使用 DISTINCT。 nebula> MATCH (v:player{name:"Tony Parker"})--(v2:player) \ RETURN DISTINCT v2.name, v2.age; +---------------------+--------+ diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/sample.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/sample.md index b04d0d21cb7..06f0a535db9 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/sample.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/sample.md @@ -4,7 +4,7 @@ !!! compatibility "历史版本兼容性" - `SAMPLE`是Nebula Graph 2.6.0 新增的子句。 + `SAMPLE`是 Nebula Graph 2.6.0 新增的子句。 `SAMPLE`仅能在`GO`语句中使用,语法如下: @@ -14,13 +14,13 @@ `sample_list`是一个列表,列表中的元素必须为自然数,且元素数量必须与`GO`语句中的`STEPS`的最大数相同。下文以`GO 1 TO 3 STEPS FROM "A" OVER * SAMPLE `为例详细介绍`SAMPLE`的用法。 -* 列表`sample_list`必须包含3个自然数元素,例如`GO 1 TO 3 STEPS FROM "A" OVER * SAMPLE [1,2,4]`。 -* `SAMPLE [1,2,4]`中的`1`表示系统在第一步时自动选择1条边继续遍历,`2`表示在第二步时选择2条边继续遍历,`4`表示在第三步时选择4条边继续遍历。如果某一步没有匹配的边或者匹配到的边数量小于指定数量,则按实际数量返回。 +* 列表`sample_list`必须包含 3 个自然数元素,例如`GO 1 TO 3 STEPS FROM "A" OVER * SAMPLE [1,2,4]`。 +* `SAMPLE [1,2,4]`中的`1`表示系统在第一步时自动选择 1 条边继续遍历,`2`表示在第二步时选择 2 条边继续遍历,`4`表示在第三步时选择 4 条边继续遍历。如果某一步没有匹配的边或者匹配到的边数量小于指定数量,则按实际数量返回。 * 因为`GO 1 TO 3 STEPS`表示返回第一到第三步的所有遍历结果,因此下图中所有红色边和它们的原点与目的点都会被这条`GO`语句匹配上,而黄色边表示`GO`语句遍历时没有选择的路径。如果不是`GO 1 TO 3 STEPS`而是`GO 3 STEPS`,则只会匹配上第三步的红色边和它们两端的点。 ![SAMPLE in GO](sample_in_go.png) -在basketballplayer数据集中的执行示例如下: +在 basketballplayer 数据集中的执行示例如下: ```ngql nebula> GO 3 STEPS FROM "player100" \ diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/ttl-options.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/ttl-options.md index f643bac6cc4..153cf345311 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/ttl-options.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/ttl-options.md @@ -2,19 +2,19 @@ TTL(Time To Live)指定属性的存活时间,超时后,该属性就会过期。 -## openCypher兼容性 +## openCypher 兼容性 -本文操作仅适用于原生nGQL。 +本文操作仅适用于原生 nGQL。 ## 注意事项 -- 不能修改带有TTL选项的属性的Schema。 +- 不能修改带有 TTL 选项的属性的 Schema。 -- TTL和INDEX共存问题: +- TTL 和 INDEX 共存问题: - + 如果一个Tag的其中一属性已有INDEX,则不能为其设置TTL,也不能为该Tag的其他属性设置TTL。 + + 如果一个 Tag 的其中一属性已有 INDEX,则不能为其设置 TTL,也不能为该 Tag 的其他属性设置 TTL。 - + 如果已有TTL,可以再添加INDEX。 + + 如果已有 TTL,可以再添加 INDEX。 ## 属性过期 @@ -22,59 +22,59 @@ TTL(Time To Live)指定属性的存活时间,超时后,该属性就会 点属性过期有如下影响: -- 如果一个点仅有一个Tag,点上的一个属性过期,点也会过期。 +- 如果一个点仅有一个 Tag,点上的一个属性过期,点也会过期。 -- 如果一个点有多个Tag,点上的一个属性过期,和该属性相同Tag的其他属性也会过期,但是点不会过期,点上其他Tag的属性保持不变。 +- 如果一个点有多个 Tag,点上的一个属性过期,和该属性相同 Tag 的其他属性也会过期,但是点不会过期,点上其他 Tag 的属性保持不变。 ### 边属性过期 -因为一条边仅有一个Edge type,边上的一个属性过期,边也会过期。 +因为一条边仅有一个 Edge type,边上的一个属性过期,边也会过期。 ## 过期处理 属性过期后,对应的过期数据仍然存储在硬盘上,但是查询时会过滤过期数据。 -Nebula Graph自动删除过期数据后,会在下一次[Compaction](../../8.service-tuning/compaction.md)过程中回收硬盘空间。 +Nebula Graph 自动删除过期数据后,会在下一次 [Compaction](../../8.service-tuning/compaction.md) 过程中回收硬盘空间。 !!! Note - 如果[关闭TTL选项](#ttl_1),上一次Compaction之后的过期数据将可以被查询到。 + 如果[关闭 TTL 选项](#ttl_1),上一次 Compaction 之后的过期数据将可以被查询到。 -## TTL选项 +## TTL 选项 -nGQL支持的TTL选项如下。 +nGQL 支持的 TTL 选项如下。 |选项|说明| |:---|:---| |`ttl_col`|指定要设置存活时间的属性。属性的数据类型必须是`int`或者`timestamp`。| -|`ttl_duration`|指定时间戳差值,单位:秒。时间戳差值必须为64位非负整数。属性值和时间戳差值之和如果小于当前时间戳,属性就会过期。如果`ttl_duration`为`0`,属性永不过期。| +|`ttl_duration`|指定时间戳差值,单位:秒。时间戳差值必须为 64 位非负整数。属性值和时间戳差值之和如果小于当前时间戳,属性就会过期。如果`ttl_duration`为`0`,属性永不过期。| -## 使用TTL选项 +## 使用 TTL 选项 -### Tag或Edge type已存在 +### Tag 或 Edge type 已存在 -如果Tag和Edge type已经创建,请使用`ALTER`语句更新Tag或Edge type。 +如果 Tag 和 Edge type 已经创建,请使用`ALTER`语句更新 Tag 或 Edge type。 ```ngql -# 创建Tag。 -nebula> CREATE TAG t1 (a timestamp); +# 创建 Tag。 +nebula> CREATE TAG IF NOT EXISTS t1 (a timestamp); -# ALTER修改Tag,添加TTL选项。 +# ALTER 修改 Tag,添加 TTL 选项。 nebula> ALTER TAG t1 ttl_col = "a", ttl_duration = 5; -# 插入点,插入后5秒过期。 +# 插入点,插入后 5 秒过期。 nebula> INSERT VERTEX t1(a) values "101":(now()); ``` -### Tag或Edge type不存在 +### Tag 或 Edge type 不存在 -创建Tag或Edge type时可以同时设置TTL选项。详情请参见[CREATE TAG](../10.tag-statements/1.create-tag.md)和[CREATE EDGE](../11.edge-type-statements/1.create-edge.md)。 +创建 Tag 或 Edge type 时可以同时设置 TTL 选项。详情请参见 [CREATE TAG](../10.tag-statements/1.create-tag.md) 和 [CREATE EDGE](../11.edge-type-statements/1.create-edge.md)。 ```ngql -# 创建Tag并设置TTL选项。 -nebula> CREATE TAG t2(a int, b int, c string) ttl_duration= 100, ttl_col = "a"; +# 创建 Tag 并设置 TTL 选项。 +nebula> CREATE TAG IF NOT EXISTS t2(a int, b int, c string) ttl_duration= 100, ttl_col = "a"; -# 插入点。过期时间戳为1612778164774(1612778164674 + 100)。 +# 插入点。过期时间戳为 1612778164774(1612778164674 + 100)。 nebula> INSERT VERTEX t2(a, b, c) values "102":(1612778164674, 30, "Hello"); ``` @@ -94,7 +94,7 @@ nebula> INSERT VERTEX t2(a, b, c) values "102":(1612778164674, 30, "Hello"); nebula> ALTER TAG t1 ttl_col = ""; ``` -- 设置`ttl_duration`为`0`。本操作可以保留TTL选项,属性永不过期,且属性的Schema无法修改。 +- 设置`ttl_duration`为`0`。本操作可以保留 TTL 选项,属性永不过期,且属性的 Schema 无法修改。 ```ngql nebula> ALTER TAG t1 ttl_duration = 0; diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/where.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/where.md index 0f9c2a9ccc4..555b1162c63 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/where.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/where.md @@ -4,15 +4,15 @@ `WHERE`子句通常用于如下查询: -- 原生nGQL,例如`GO`和`LOOKUP`语句。 +- 原生 nGQL,例如`GO`和`LOOKUP`语句。 -- openCypher方式,例如`MATCH`和`WITH`语句。 +- openCypher 方式,例如`MATCH`和`WITH`语句。 -## openCypher兼容性 +## openCypher 兼容性 -- 不支持在`WHERE`子句中使用Pattern(TODO: planning),例如`WHERE (v)-->(v2)`。 +- 不支持在`WHERE`子句中使用 Pattern(TODO: planning),例如`WHERE (v)-->(v2)`。 -- [过滤Rank](#rank)是原生nGQL功能。如需在openCypher兼容语句中直接获取Rank值,可以使用rank()函数,例如`MATCH (:player)-[e:follow]->() RETURN rank(e);`。 +- [过滤 Rank](#rank) 是原生 nGQL 功能。如需在 openCypher 兼容语句中直接获取 Rank 值,可以使用 rank() 函数,例如`MATCH (:player)-[e:follow]->() RETURN rank(e);`。 ## 基础用法 @@ -144,16 +144,16 @@ nebula> MATCH (v:player) \ ... ``` -### 过滤rank +### 过滤 rank -在nGQL中,如果多个边拥有相同的起始点、目的点和属性,则它们的唯一区别是rank值。在`WHERE`子句中可以使用rank过滤边。 +在 nGQL 中,如果多个边拥有相同的起始点、目的点和属性,则它们的唯一区别是 rank 值。在`WHERE`子句中可以使用 rank 过滤边。 ```ngql # 创建测试数据。 -nebula> CREATE SPACE test (vid_type=FIXED_STRING(30)); +nebula> CREATE SPACE IF NOT EXISTS test (vid_type=FIXED_STRING(30)); nebula> USE test; -nebula> CREATE EDGE e1(p1 int); -nebula> CREATE TAG person(p1 int); +nebula> CREATE EDGE IF NOT EXISTS e1(p1 int); +nebula> CREATE TAG IF NOT EXISTS person(p1 int); nebula> INSERT VERTEX person(p1) VALUES "1":(1); nebula> INSERT VERTEX person(p1) VALUES "2":(2); nebula> INSERT EDGE e1(p1) VALUES "1"->"2"@0:(10); @@ -164,7 +164,7 @@ nebula> INSERT EDGE e1(p1) VALUES "1"->"2"@4:(14); nebula> INSERT EDGE e1(p1) VALUES "1"->"2"@5:(15); nebula> INSERT EDGE e1(p1) VALUES "1"->"2"@6:(16); -# 通过rank过滤边,查找rank大于2的边。 +# 通过 rank 过滤边,查找 rank 大于 2 的边。 nebula> GO FROM "1" \ OVER e1 \ WHERE rank(edge) > 2 \ @@ -189,7 +189,7 @@ nebula> GO FROM "1" \ `STARTS WITH`会从字符串的起始位置开始匹配。 ```ngql -# 查询姓名以T开头的player信息。 +# 查询姓名以 T 开头的 player 信息。 nebula> MATCH (v:player) \ WHERE v.name STARTS WITH "T" \ RETURN v.name, v.age; @@ -247,7 +247,7 @@ nebula> MATCH (v:player) \ +---------------+-------+ ``` -### 结合NOT使用 +### 结合 NOT 使用 用户可以结合布尔运算符`NOT`一起使用,否定字符串匹配条件。 @@ -316,7 +316,7 @@ nebula> LOOKUP ON player \ +-------------+-------------------------+------------------------+ ``` -### 结合NOT使用 +### 结合 NOT 使用 ```ngql nebula> MATCH (v:player) \ diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/with.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/with.md index 993713df75f..cc9f36fc29b 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/with.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/with.md @@ -2,19 +2,19 @@ `WITH`子句可以获取并处理查询前半部分的结果,并将处理结果作为输入传递给查询的后半部分。 -## openCypher兼容性 +## openCypher 兼容性 -本文操作仅适用于openCypher方式。 +本文操作仅适用于 openCypher 方式。 !!! Note - 在原生nGQL中,有与`WITH`类似的[管道符](../5.operators/4.pipe.md),但它们的工作方式不同。不要在openCypher方式中使用管道符,也不要在原生nGQL中使用`WITH`子句。 + 在原生 nGQL 中,有与`WITH`类似的[管道符](../5.operators/4.pipe.md),但它们的工作方式不同。不要在 openCypher 方式中使用管道符,也不要在原生 nGQL 中使用`WITH`子句。 ## 组成复合查询 使用`WITH`子句可以组合语句,将一条语句的输出转换为另一条语句的输入。 -### 示例1 +### 示例 1 1. 匹配一个路径。 2. 通过`nodes()`函数将路径上的所有点输出到一个列表。 @@ -44,10 +44,10 @@ nebula> MATCH p=(v:player{name:"Tim Duncan"})--() \ +-----------------------------------------------------------+ ``` -### 示例2 +### 示例 2 -1. 匹配点ID为`player100`的点。 -2. 通过`labels()`函数将点的所有Tag输出到一个列表。 +1. 匹配点 ID 为`player100`的点。 +2. 通过`labels()`函数将点的所有 Tag 输出到一个列表。 3. 将列表拆分为行。 4. 返回结果。 @@ -83,7 +83,7 @@ nebula> MATCH (v:player)-->(v2:player) \ +----------------------+-----+ ``` -## collect()之前处理输出 +## collect() 之前处理输出 在`collect()`函数将输出结果转换为列表之前,可以使用`WITH`子句排序和限制输出结果。 @@ -100,7 +100,7 @@ nebula> MATCH (v:player) \ +-----------------------------------------------+ ``` -## 结合RETURN语句使用 +## 结合 RETURN 语句使用 在`WITH`子句中设置别名,并通过`RETURN`子句输出结果。 diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/yield.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/yield.md index 49f8829086c..da41af5ce17 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/yield.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/yield.md @@ -1,31 +1,31 @@ # YIELD -`YIELD`定义nGQL查询的输出结果。 +`YIELD`定义 nGQL 查询的输出结果。 `YIELD`可以引导子句或语句: -- `YIELD`子句可以用于原生nGQL语句中,例如`GO`、`FETCH`或`LOOKUP`。 +- `YIELD`子句可以用于原生 nGQL 语句中,例如`GO`、`FETCH`或`LOOKUP`。 - `YIELD`语句可以在独立查询或复合查询中使用。 -## openCypher兼容性 +## openCypher 兼容性 -本文操作仅适用于原生nGQL。关于openCypher方式如何定义输出结果,请参见[`RETURN`](return.md)。 +本文操作仅适用于原生 nGQL。关于 openCypher 方式如何定义输出结果,请参见 [`RETURN`](return.md)。 -`YIELD`在nGQL和openCypher中有不同的函数: +`YIELD`在 nGQL 和 openCypher 中有不同的函数: -- 在openCypher中,`YIELD`用于在`CALL[…YIELD]`子句中指定过程调用的输出。 +- 在 openCypher 中,`YIELD`用于在`CALL[…YIELD]`子句中指定过程调用的输出。 !!! Note - nGQL不支持`CALL[…YIELD]`。 + nGQL 不支持`CALL[…YIELD]`。 -- 在nGQL中,`YIELD`和openCypher中的`RETURN`类似。 +- 在 nGQL 中,`YIELD`和 openCypher 中的`RETURN`类似。 !!! note 下文示例中的`$$`、`$-`等是引用符号,详情请参见[引用符](../5.operators/5.property-reference.md)。 -## YIELD子句 +## YIELD 子句 ### 语法 @@ -39,7 +39,7 @@ YIELD [DISTINCT] [AS ] [, [AS ] ...]; |`col`|要返回的字段。如果没有为字段设置别名,返回结果中的列名为`col`。| |`alias`|`col`的别名。使用关键字`AS`进行设置,设置后返回结果中的列名为该别名。| -### 使用YIELD子句 +### 使用 YIELD 子句 - `GO`语句中使用`YIELD`: @@ -78,7 +78,7 @@ YIELD [DISTINCT] [AS ] [, [AS ] ...]; +-------------+-------------------------+------------------------+ ``` -## YIELD语句 +## YIELD 语句 ### 语法 @@ -92,14 +92,14 @@ YIELD [DISTINCT] [AS ] [, [AS ] ...] |`DISTINCT`|聚合输出结果,返回去重后的结果集。| |`col`|要按返回的字段。如果没有为字段设置别名,返回结果中的列名为`col`。| |`alias`|`col`的别名。使用关键字`AS`进行设置,设置后返回结果中的列名为该别名。| -|`conditions`|在`WHERE`子句中设置的过滤条件。详情请参见[`WHERE`](where.md)。| +|`conditions`|在`WHERE`子句中设置的过滤条件。详情请参见 [`WHERE`](where.md)。| -### 复合查询中使用YIELD语句 +### 复合查询中使用 YIELD 语句 在[复合查询](../4.variable-and-composite-queries/1.composite-queries.md)中,`YIELD`语句可以接收、过滤、修改之前语句的结果集,然后输出。 ```ngql -# 查找player100关注的player,并计算他们的平均年龄。 +# 查找 player100 关注的 player,并计算他们的平均年龄。 nebula> GO FROM "player100" OVER follow \ YIELD dst(edge) AS ID \ | FETCH PROP ON player $-.ID \ @@ -113,7 +113,7 @@ nebula> GO FROM "player100" OVER follow \ ``` ```ngql -# 查找player101关注的player,返回degree大于90的player。 +# 查找 player101 关注的 player,返回 degree 大于 90 的 player。 nebula> $var1 = GO FROM "player101" OVER follow \ YIELD properties(edge).degree AS Degree, dst(edge) as ID; \ YIELD $var1.ID AS ID WHERE $var1.Degree > 90; @@ -125,7 +125,7 @@ nebula> $var1 = GO FROM "player101" OVER follow \ +-------------+ ``` -### 独立使用YIELD语句 +### 独立使用 YIELD 语句 `YIELD`可以计算表达式并返回结果。 @@ -145,11 +145,11 @@ nebula> YIELD "Hel" + "\tlo" AS string1, ", World!" AS string2; +-------------+------------+ nebula> YIELD hash("Tim") % 100; -+-----------------+ -| (hash(Tim)%100) | -+-----------------+ -| 42 | -+-----------------+ ++-------------------+ +| (hash("Tim")%100) | ++-------------------+ +| 42 | ++-------------------+ nebula> YIELD \ CASE 2+3 \ diff --git a/docs-2.0/3.ngql-guide/9.space-statements/1.create-space.md b/docs-2.0/3.ngql-guide/9.space-statements/1.create-space.md index 738bd67743c..99f109f2fad 100644 --- a/docs-2.0/3.ngql-guide/9.space-statements/1.create-space.md +++ b/docs-2.0/3.ngql-guide/9.space-statements/1.create-space.md @@ -1,10 +1,10 @@ # CREATE SPACE -图空间是Nebula Graph中彼此隔离的图数据集合,与MySQL中的database概念类似。`CREATE SPACE`语句可以创建一个新的图空间,或者克隆现有图空间的Schema。 +图空间是 Nebula Graph 中彼此隔离的图数据集合,与 MySQL 中的 database 概念类似。`CREATE SPACE`语句可以创建一个新的图空间,或者克隆现有图空间的 Schema。 ## 前提条件 -只有God角色的用户可以执行`CREATE SPACE`语句。详情请参见[身份验证](../../7.data-security/1.authentication/1.authentication.md)。 +只有 God 角色的用户可以执行`CREATE SPACE`语句。详情请参见[身份验证](../../7.data-security/1.authentication/1.authentication.md)。 ## 语法 @@ -23,32 +23,32 @@ CREATE SPACE [IF NOT EXISTS] ( |参数|说明| |:---|:---| |`IF NOT EXISTS`|检测待创建的图空间是否存在,只有不存在时,才会创建图空间。仅检测图空间的名称,不会检测具体属性。| -|``|在Nebula Graph实例中唯一标识一个图空间。图空间名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。| -|`partition_num`|指定图空间的分片数量。建议设置为5倍的集群硬盘数量。例如集群中有3个硬盘,建议设置15个分片。默认值为100。| -|`replica_factor`|指定每个分片的副本数量。建议在生产环境中设置为3,在测试环境中设置为1。由于需要基于多数表决,副本数量必须是**奇数**。默认值为1。| -|`vid_type`|必选参数。指定点ID的数据类型。可选值为`FIXED_STRING()`和`INT64`。`INT`等同于`INT64`。`FIXED_STRING()`表示数据类型为字符串,最大长度为`N`,超出长度会报错;`INT64`表示数据类型为整数。| -|`ON `|指定图空间所属的Group。详情请参见[Group&Zone](../../7.data-security/5.zone.md)。| -|`COMMENT`|图空间的描述。最大为256字节。默认无描述。| +|``|在 Nebula Graph 实例中唯一标识一个图空间。图空间名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。| +|`partition_num`|指定图空间的分片数量。建议设置为 5 倍的集群硬盘数量。例如集群中有 3 个硬盘,建议设置 15 个分片。默认值为 100。| +|`replica_factor`|指定每个分片的副本数量。建议在生产环境中设置为 3,在测试环境中设置为 1。由于需要基于多数表决,副本数量必须是**奇数**。默认值为 1。| +|`vid_type`|必选参数。指定点 ID 的数据类型。可选值为`FIXED_STRING()`和`INT64`。`INT`等同于`INT64`。`FIXED_STRING()`表示数据类型为字符串,最大长度为`N`,超出长度会报错;`INT64`表示数据类型为整数。| +|`ON `|指定图空间所属的 Group。详情请参见 [Group&Zone](../../7.data-security/5.zone.md)。| +|`COMMENT`|图空间的描述。最大为 256 字节。默认无描述。| !!! caution - 如果将副本数设置为1,用户将无法使用[BALANCE](../../8.service-tuning/load-balance.md)命令为Nebula Graph的存储服务平衡负载或扩容。 + 如果将副本数设置为 1,用户将无法使用 [BALANCE](../../8.service-tuning/load-balance.md) 命令为 Nebula Graph 的存储服务平衡负载或扩容。 !!! caution - VID类型变更与长度限制 + VID 类型变更与长度限制 - 1. 在Nebula Graph 1.x中,VID的类型只能为`INT64`,不支持字符型;在Nebula Graph 2.x中, VID的类型支持`INT64`和`FIXED_STRING()`。请在创建图空间时指定VID类型,使用`INSERT`语句时也需要保持一致,否则会报错VID类型不匹配`Wrong vertex id type: 1001`。 + 1. 在 Nebula Graph 1.x 中,VID 的类型只能为`INT64`,不支持字符型;在 Nebula Graph 2.x 中,VID 的类型支持`INT64`和`FIXED_STRING()`。请在创建图空间时指定 VID 类型,使用`INSERT`语句时也需要保持一致,否则会报错 VID 类型不匹配`Wrong vertex id type: 1001`。 - 2. VID最大长度必须为`N`,不可任意长度;超过该长度也会报错`The VID must be a 64-bit integer or a string fitting space vertex id length limit.`。 + 2. VID 最大长度必须为`N`,不可任意长度;超过该长度也会报错`The VID must be a 64-bit integer or a string fitting space vertex id length limit.`。 !!! compatibility "历史版本兼容性" - 2.5.0之前的2.x版本中,`vid_type`不是必选参数,默认为`FIXED_STRING(8)`。 + 2.5.0 之前的 2.x 版本中,`vid_type`不是必选参数,默认为`FIXED_STRING(8)`。 !!! note - `graph_space_name`, `partition_num`, `replica_factor`, `vid_type`, `comment` 设置后就无法改变。除非[`DROP SPACE`](./5.drop-space.md),并重新`CREATE SPACE`。 + `graph_space_name`, `partition_num`, `replica_factor`, `vid_type`, `comment` 设置后就无法改变。除非 [`DROP SPACE`](./5.drop-space.md),并重新`CREATE SPACE`。 ### 克隆图空间 @@ -58,23 +58,23 @@ CREATE SPACE AS ; |参数|说明| |:---|:---| -|``|目标图空间名称。该图空间必须未创建。图空间名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。创建时会克隆``图空间的Schema,包括图空间本身参数(分片数量、副本数量等),以及Tag、Edge type和原生索引。| +|``|目标图空间名称。该图空间必须未创建。图空间名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。创建时会克隆``图空间的 Schema,包括图空间本身参数(分片数量、副本数量等),以及 Tag、Edge type 和原生索引。| |``|原始图空间名称。该图空间必须已存在。| ## 示例 ```ngql -# 仅指定VID类型,其他选项使用默认值。 -nebula> CREATE SPACE my_space_1 (vid_type=FIXED_STRING(30)); +# 仅指定 VID 类型,其他选项使用默认值。 +nebula> CREATE SPACE IF NOT EXISTS my_space_1 (vid_type=FIXED_STRING(30)); -# 指定分片数量、副本数量和VID类型。 -nebula> CREATE SPACE my_space_2 (partition_num=15, replica_factor=1, vid_type=FIXED_STRING(30)); +# 指定分片数量、副本数量和 VID 类型。 +nebula> CREATE SPACE IF NOT EXISTS my_space_2 (partition_num=15, replica_factor=1, vid_type=FIXED_STRING(30)); -# 指定分片数量、副本数量和VID类型,并添加描述。 -nebula> CREATE SPACE my_space_3 (partition_num=15, replica_factor=1, vid_type=FIXED_STRING(30)) comment="测试图空间"; +# 指定分片数量、副本数量和 VID 类型,并添加描述。 +nebula> CREATE SPACE IF NOT EXISTS my_space_3 (partition_num=15, replica_factor=1, vid_type=FIXED_STRING(30)) comment="测试图空间"; # 克隆图空间。 -nebula> CREATE SPACE my_space_4 as my_space_3; +nebula> CREATE SPACE IF NOT EXISTS my_space_4 as my_space_3; nebula> SHOW CREATE SPACE my_space_4; +--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Space | Create Space | @@ -89,13 +89,13 @@ nebula> SHOW CREATE SPACE my_space_4; 立刻尝试使用刚创建的图空间可能会失败,因为创建是异步实现的。 -Nebula Graph将在下一个心跳周期内完成图空间的创建,为了确保创建成功,可以使用如下方法之一: +Nebula Graph 将在下一个心跳周期内完成图空间的创建,为了确保创建成功,可以使用如下方法之一: -- 在[`SHOW SPACES`](3.show-spaces.md)或[`DESCRIBE SPACE`](4.describe-space.md)语句的结果中查找新的图空间,如果找不到,请等待几秒重试。 +- 在 [`SHOW SPACES`](3.show-spaces.md) 或 [`DESCRIBE SPACE`](4.describe-space.md) 语句的结果中查找新的图空间,如果找不到,请等待几秒重试。 -- 等待两个心跳周期,例如20秒。 +- 等待两个心跳周期,例如 20 秒。 -如果需要修改心跳间隔,请为[所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)修改参数`heartbeat_interval_secs`。但过短的心跳周期(<5秒)可能会导致分布式系统中的机器误判对端失联。 +如果需要修改心跳间隔,请为[所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)修改参数`heartbeat_interval_secs`。但过短的心跳周期(<5 秒)可能会导致分布式系统中的机器误判对端失联。 ## 检查分片分布情况 @@ -117,6 +117,7 @@ nebula> SHOW HOSTS; ```ngql nebula> BALANCE LEADER; +nebula> SHOW HOSTS; +-------------+------+----------+--------------+--------------------------------+--------------------------------+ | Host | Port | Status | Leader count | Leader distribution | Partition distribution | +-------------+------+----------+--------------+--------------------------------+--------------------------------+ diff --git a/docs-2.0/3.ngql-guide/9.space-statements/2.use-space.md b/docs-2.0/3.ngql-guide/9.space-statements/2.use-space.md index 980abd5c224..d2b40725f00 100644 --- a/docs-2.0/3.ngql-guide/9.space-statements/2.use-space.md +++ b/docs-2.0/3.ngql-guide/9.space-statements/2.use-space.md @@ -15,22 +15,19 @@ USE ; ## 示例 ```ngql -# 指定图空间space1作为工作空间。 -nebula> USE space1; +# 创建示例空间。 +nebula> CREATE SPACE IF NOT EXISTS space1 (vid_type=FIXED_STRING(30)); +nebula> CREATE SPACE IF NOT EXISTS space2 (vid_type=FIXED_STRING(30)); -# 检索图空间space1。 -nebula> GO FROM 1 OVER edge1; +# 指定图空间 space1 作为工作空间。 +nebula> USE space1; -# 切换到图空间space2。 +# 切换到图空间 space2。检索 space2 时,无法从 space1 读取任何数据,检索的点和边与 space1 无关。 nebula> USE space2; - -# 检索图空间space2。无法从space1读取任何数据,检索的点和边与space1无关。 -nebula> GO FROM 2 OVER edge2; ``` !!! Caution 不能在一条语句中同时操作两个图空间。 - 与Fabric Cypher不同,Nebula Graph的图空间彼此之间是完全隔离的,将一个图空间作为工作空间后,用户无法访问其他空间。使用新图空间的唯一方法是通过`USE`语句切换。而在 Fabric Cypher 中可以在一条语句中(`USE + CALL`语法)使用两个图空间。 - + 与 Fabric Cypher 不同,Nebula Graph 的图空间彼此之间是完全隔离的,将一个图空间作为工作空间后,用户无法访问其他空间。使用新图空间的唯一方法是通过`USE`语句切换。而在 Fabric Cypher 中可以在一条语句中 (`USE + CALL`语法)使用两个图空间。 diff --git a/docs-2.0/3.ngql-guide/9.space-statements/3.show-spaces.md b/docs-2.0/3.ngql-guide/9.space-statements/3.show-spaces.md index fac20b85439..7616f70dd12 100644 --- a/docs-2.0/3.ngql-guide/9.space-statements/3.show-spaces.md +++ b/docs-2.0/3.ngql-guide/9.space-statements/3.show-spaces.md @@ -1,6 +1,6 @@ # SHOW SPACES -`SHOW SPACES`语句可以列出Nebula Graph示例中的所有图空间。 +`SHOW SPACES`语句可以列出 Nebula Graph 示例中的所有图空间。 ## 语法 @@ -20,4 +20,4 @@ nebula> SHOW SPACES; +--------------------+ ``` -创建图空间请参见[CREATE SPACE](1.create-space.md)。 +创建图空间请参见 [CREATE SPACE](1.create-space.md)。 diff --git a/docs-2.0/3.ngql-guide/9.space-statements/5.drop-space.md b/docs-2.0/3.ngql-guide/9.space-statements/5.drop-space.md index 789028d5327..89fee8f9b70 100644 --- a/docs-2.0/3.ngql-guide/9.space-statements/5.drop-space.md +++ b/docs-2.0/3.ngql-guide/9.space-statements/5.drop-space.md @@ -4,7 +4,7 @@ ## 前提条件 -只有God角色的用户可以执行`DROP SPACE`语句。详情请参见[身份验证](../../7.data-security/1.authentication/1.authentication.md)。 +只有 God 角色的用户可以执行`DROP SPACE`语句。详情请参见[身份验证](../../7.data-security/1.authentication/1.authentication.md)。 ## 语法 diff --git a/docs-2.0/4.deployment-and-installation/1.resource-preparations.md b/docs-2.0/4.deployment-and-installation/1.resource-preparations.md index 57ba69a4c65..51e82119d2c 100644 --- a/docs-2.0/4.deployment-and-installation/1.resource-preparations.md +++ b/docs-2.0/4.deployment-and-installation/1.resource-preparations.md @@ -1,32 +1,32 @@ -# 准备编译、安装和运行Nebula Graph的环境 +# 准备编译、安装和运行 Nebula Graph 的环境 -本文介绍编译、安装Nebula Graph的要求和建议,以及如何预估集群运行所需的资源。 +本文介绍编译、安装 Nebula Graph 的要求和建议,以及如何预估集群运行所需的资源。 ## 阅读指南 如果是带着如下问题阅读本文,可以直接单击问题跳转查看对应的说明。 -- [编译Nebula Graph源码的要求是什么?](#nebula_graph_1) +- [编译 Nebula Graph 源码的要求是什么?](#nebula_graph_1) -- [测试环境中运行Nebula Graph的要求是什么?](#nebula_graph_2) +- [测试环境中运行 Nebula Graph 的要求是什么?](#nebula_graph_2) -- [生产环境中运行Nebula Graph的要求是什么?](#nebula_graph_3) +- [生产环境中运行 Nebula Graph 的要求是什么?](#nebula_graph_3) -- [需要预留多少内存和硬盘空间给Nebula Graph集群?](#nebula_graph_4) +- [需要预留多少内存和硬盘空间给 Nebula Graph 集群?](#nebula_graph_4) -## 编译Nebula Graph源码要求 +## 编译 Nebula Graph 源码要求 ### 硬件要求 | 类型 | 要求 | | :---- | :--- | -| CPU架构 | x86_64 | +| CPU 架构 | x86_64 | | 内存 | 4 GB | | 硬盘 | 10 GB,SSD | ### 操作系统要求 -当前仅支持在Linux系统中编译Nebula Graph,建议使用内核版本为`2.6.32`及以上版本的Linux系统。 +当前仅支持在 Linux 系统中编译 Nebula Graph,建议使用内核版本为`2.6.32`及以上版本的 Linux 系统。 ### 软件要求 @@ -34,7 +34,7 @@ | 软件名称 | 版本 | 备注 | | ---------------- | ---------- | ----------------------------------------| -| glibc | 2.17及以上 | 执行命令`ldd --version`检查版本。 | +| glibc | 2.17 及以上 | 执行命令`ldd --version`检查版本。 | | make | 任意稳定版本 | - | | m4 | 任意稳定版本 | - | | git | 任意稳定版本 | - | @@ -44,25 +44,25 @@ | readline-devel | 任意稳定版本 | - | | ncurses-devel | 任意稳定版本 | - | | zlib-devel | 任意稳定版本 | - | -| gcc | 7.5.0及以上 | 执行命令`gcc -v`检查版本。 | +| gcc | 7.5.0 及以上 | 执行命令`gcc -v`检查版本。 | | gcc-c++ | 任意稳定版本 | - | -| cmake | 3.9.0及以上 | 执行命令`cmake --version`检查版本。 | +| cmake | 3.9.0 及以上 | 执行命令`cmake --version`检查版本。 | | gettext | 任意稳定版本 | - | | curl | 任意稳定版本 | - | | redhat-lsb-core | 任意稳定版本 | - | -| libstdc++-static | 任意稳定版本 | 仅在CentOS 8+、RedHat 8+、Fedora中需要。 | -| libasan | 任意稳定版本 | 仅在CentOS 8+、RedHat 8+、Fedora中需要。 | +| libstdc++-static | 任意稳定版本 | 仅在 CentOS 8+、RedHat 8+、Fedora 中需要。 | +| libasan | 任意稳定版本 | 仅在 CentOS 8+、RedHat 8+、Fedora 中需要。 | | bzip2 | 任意稳定版本 | - | 其他第三方软件将在安装(cmake)阶段自动下载并安装到`build`目录中。 ### 安装编译所需软件 -本小节指导下载和安装Nebula Graph编译时需要的软件。 +本小节指导下载和安装 Nebula Graph 编译时需要的软件。 1. 安装依赖包。 - - CentOS、RedHat、Fedora用户请执行如下命令: + - CentOS、RedHat、Fedora 用户请执行如下命令: ```bash $ yum update @@ -82,11 +82,11 @@ curl \ redhat-lsb-core \ bzip2 - // 仅CentOS 8+、RedHat 8+、Fedora需要安装libstdc++-static和libasan。 + // 仅 CentOS 8+、RedHat 8+、Fedora 需要安装 libstdc++-static 和 libasan。 $ yum install -y libstdc++-static libasan ``` - - Debian和Ubuntu用户请执行如下命令: + - Debian 和 Ubuntu 用户请执行如下命令: ```bash $ apt-get update @@ -105,7 +105,7 @@ gettext ``` -2. 检查主机上的GCC和CMake版本是否正确。版本信息请参见[软件要求](#_4)。 +2. 检查主机上的 GCC 和 CMake 版本是否正确。版本信息请参见[软件要求](#_4)。 ```bash $ g++ --version @@ -120,7 +120,7 @@ $ git clone -b {{ nebula.branch}} https://github.com/vesoft-inc/nebula.git ``` - 如需安装特定版本的Nebula Graph,使用`--branch`或`-b`选项指定相应的nebula-common分支。 例如,指定{{ nebula.release }},命令如下: + 如需安装特定版本的 Nebula Graph,使用`--branch`或`-b`选项指定相应的 nebula-common 分支。 例如,指定{{ nebula.release }},命令如下: ```bash $ git clone --branch {{ nebula.branch}} https://github.com/vesoft-inc/nebula.git @@ -132,19 +132,19 @@ $ cd nebula ``` - 3. 执行如下命令安装和启用GCC和CMake。 + 3. 执行如下命令安装和启用 GCC 和 CMake。 ```bash - // 安装CMake。 + // 安装 CMake。 $ ./third-party/install-cmake.sh cmake-install - // 启用CMake。 + // 启用 CMake。 $ source cmake-install/bin/enable-cmake.sh - //opt目录添加写权限。 + //opt 目录添加写权限。 $ sudo mkdir /opt/vesoft && sudo chmod -R a+w /opt/vesoft - // 安装GCC。安装到opt目录需要写权限,用户也可以修改为其他目录。 + // 安装 GCC。安装到 opt 目录需要写权限,用户也可以修改为其他目录。 $ ./third-party/install-gcc.sh --prefix=/opt // 启用 GCC。 @@ -157,55 +157,55 @@ $ ./third-party/install-third-party.sh ``` -## 测试环境运行Nebula Graph要求 +## 测试环境运行 Nebula Graph 要求 ### 硬件要求 | 类型 | 要求 | | -------- | ----------- | -| CPU架构 | x86_64 | -| CPU核数 | 4 | +| CPU 架构 | x86_64 | +| CPU 核数 | 4 | | 内存 | 8 GB | | 硬盘 | 100 GB,SSD | ### 操作系统要求 -当前仅支持在Linux系统中安装Nebula Graph,建议在测试环境中使用内核版本为`3.9`及以上版本的Linux系统。 +当前仅支持在 Linux 系统中安装 Nebula Graph,建议在测试环境中使用内核版本为`3.9`及以上版本的 Linux 系统。 ### 服务架构建议 | 进程 | 建议数量| | ------------------------| ------| -| metad(meta数据服务进程) | 1 | +| metad(meta 数据服务进程) | 1 | | storaged(存储服务进程) | ≥1 | | graphd(查询引擎服务进程) | ≥1 | -例如单机测试环境,用户可以在机器上部署1个metad、1个storaged和1个graphd进程。 +例如单机测试环境,用户可以在机器上部署 1 个 metad、1 个 storaged 和 1 个 graphd 进程。 -对于更常见的测试环境,例如三台机器构成的集群,用户可以按照如下方案部署Nebula Graph。 +对于更常见的测试环境,例如三台机器构成的集群,用户可以按照如下方案部署 Nebula Graph。 -| 机器名称 | metad进程数量 | storaged进程数量 | graphd进程数量 | +| 机器名称 | metad 进程数量 | storaged 进程数量 | graphd 进程数量 | | ------------ | --------------- | ------------------ | ---------------- | | A | 1 | 1 | 1 | | B | - | 1 | 1 | | C | - | 1 | 1 | -## 生产环境运行Nebula Graph要求 +## 生产环境运行 Nebula Graph 要求 ### 硬件要求 | 类型 | 要求 | | -------- | ----------- | -| CPU架构 | x86_64 | -| CPU核数 | 48 | +| CPU 架构 | x86_64 | +| CPU 核数 | 48 | | 内存 | 96 GB | | 硬盘 | 2 * 900 GB,NVMe SSD | ### 操作系统要求 -当前仅支持在Linux系统中安装Nebula Graph,建议在生产环境中使用内核版本为`3.9`及以上版本的Linux系统。 +当前仅支持在 Linux 系统中安装 Nebula Graph,建议在生产环境中使用内核版本为`3.9`及以上版本的 Linux 系统。 -用户可以通过调整一些内核参数来提高Nebula Graph性能,详情请参见[内核配置](../5.configurations-and-logs/1.configurations/6.kernel-config.md)。 +用户可以通过调整一些内核参数来提高 Nebula Graph 性能,详情请参见[内核配置](../5.configurations-and-logs/1.configurations/6.kernel-config.md)。 ### 服务架构建议 @@ -215,17 +215,17 @@ | 进程 | 数量| | ------------------------| ------| -| metad(meta数据服务进程) | 3 | +| metad(meta 数据服务进程) | 3 | | storaged(存储服务进程) | ≥3 | | graphd(查询引擎服务进程) | ≥3 | -有且仅有3个metad进程,每个metad进程会自动创建并维护meta数据的一个副本。 +有且仅有 3 个 metad 进程,每个 metad 进程会自动创建并维护 meta 数据的一个副本。 -storaged进程的数量不会影响图空间副本的数量。 +storaged 进程的数量不会影响图空间副本的数量。 -用户可以在一台机器上部署多个不同进程,例如五台机器构成的集群,用户可以按照如下方案部署Nebula Graph。 +用户可以在一台机器上部署多个不同进程,例如五台机器构成的集群,用户可以按照如下方案部署 Nebula Graph。 -| 机器名称 | metad进程数量 | storaged进程数量 | graphd进程数量 | +| 机器名称 | metad 进程数量 | storaged 进程数量 | graphd 进程数量 | | ------------ | --------------- | ------------------ | ---------------- | | A | 1 | 1 | 1 | | B | 1 | 1 | 1 | @@ -233,27 +233,27 @@ storaged进程的数量不会影响图空间副本的数量。 | D | - | 1 | 1 | | E | - | 1 | 1 | -## Nebula Graph资源要求 +## Nebula Graph 资源要求 -用户可以预估一个3副本Nebula Graph集群所需的内存、硬盘空间和分区数量。 +用户可以预估一个 3 副本 Nebula Graph 集群所需的内存、硬盘空间和分区数量。 | 资源 |单位 | 计算公式 |说明| |:--- |:---|:--- |:---| | 硬盘空间 |Bytes| `点和边的总数` * `属性的平均字节大小` * 6 * 120% |由于边存在存储放大现象,所以需要`点和边的总数` * `属性的平均字节大小` * 6 的空间,详情请参见[切边与存储放大](../1.introduction/3.nebula-graph-architecture/4.storage-service.md)。| -| 内存 |Bytes| [`点和边的总数` * 15 + `RocksDB实例数量` * (`write_buffer_size` * `max_write_buffer_number` + `块缓存大小`)] * 120% |`点和边的总数` * 15 是[BloomFilter](https://zh.wikipedia.org/wiki/%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8)需要占用的内存空间,`write_buffer_size`和`max_write_buffer_number`是RocksDB内存相关参数,详情请参见[MemTable](https://github.com/facebook/rocksdb/wiki/MemTable)。块缓存大小请参见[Memory usage in RocksDB](https://github.com/facebook/rocksdb/wiki/Memory-usage-in-RocksDB#block-cache)。| -| 分区数量 |-| `集群硬盘数量` * `disk_partition_num_multiplier` |`disk_partition_num_multiplier`是取值为2~10的一个整数,用于衡量硬盘性能。HDD使用2。| +| 内存 |Bytes| [`点和边的总数` * 15 + `RocksDB 实例数量` * (`write_buffer_size` * `max_write_buffer_number` + `块缓存大小`)] * 120% |`点和边的总数` * 15 是 [BloomFilter](https://zh.wikipedia.org/wiki/%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8) 需要占用的内存空间,`write_buffer_size`和`max_write_buffer_number`是 RocksDB 内存相关参数,详情请参见 [MemTable](https://github.com/facebook/rocksdb/wiki/MemTable)。块缓存大小请参见 [Memory usage in RocksDB](https://github.com/facebook/rocksdb/wiki/Memory-usage-in-RocksDB#block-cache)。| +| 分区数量 |-| `集群硬盘数量` * `disk_partition_num_multiplier` |`disk_partition_num_multiplier`是取值为 2~10 的一个整数,用于衡量硬盘性能。HDD 使用 2。| -- 问题 1:为什么磁盘空间和内存都要乘以120%? +- 问题 1:为什么磁盘空间和内存都要乘以 120%? - 答:额外的20%用于缓冲。 + 答:额外的 20%用于缓冲。 -- 问题 2:如何获取RocksDB实例数量? +- 问题 2:如何获取 RocksDB 实例数量? - 答:在`etc`目录内查看配置文件`nebula-storaged.conf`,`--data_path`选项中的每个目录对应一个RocksDB实例,目录总数即是RocksDB实例数量。 + 答:在`etc`目录内查看配置文件`nebula-storaged.conf`,`--data_path`选项中的每个目录对应一个 RocksDB 实例,目录总数即是 RocksDB 实例数量。 !!! Note - 用户可以在配置文件`nebula-storaged.conf`中添加`--enable_partitioned_index_filter=true`来降低bloom过滤器占用的内存大小,但是在某些随机寻道(random-seek)的情况下,可能会降低读取性能。 + 用户可以在配置文件`nebula-storaged.conf`中添加`--enable_partitioned_index_filter=true`来降低 bloom 过滤器占用的内存大小,但是在某些随机寻道(random-seek)的情况下,可能会降低读取性能。 ## FAQ @@ -269,10 +269,8 @@ Nebula Graph 是针对 NVMe SSD 进行设计和实现的,所有默认参数都 - 使用本地 SSD 设备。 -### 关于CPU架构 +### 关于 CPU 架构 !!! enterpriseonly - Nebula Graph {{ nebula.release }} 不支持直接在 ARM 架构(包括 Apple Mac M1 或者华为鲲鹏)上运行或者编译。 - - + Nebula Graph {{ nebula.release }} 不支持直接在 ARM 架构上运行。访问官网获取[商业支持](https://nebula-graph.com.cn/pricing/)。 diff --git a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md index 22d4e66658c..0d1c5445c8f 100644 --- a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md +++ b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md @@ -1,6 +1,6 @@ -# 使用源码安装Nebula Graph +# 使用源码安装 Nebula Graph -使用源码安装Nebula Graph允许自定义编译和安装设置,并测试最新特性。 +使用源码安装 Nebula Graph 允许自定义编译和安装设置,并测试最新特性。 ## 前提条件 @@ -8,25 +8,25 @@ !!! note - 暂不支持离线编译Nebula Graph。 + 暂不支持离线编译 Nebula Graph。 -- 待安装Nebula Graph的主机可以访问互联网。 +- 待安装 Nebula Graph 的主机可以访问互联网。 ## 安装步骤 !!! Note - 从{{ nebula.release }}版本开始,Nebula-Graph、Nebula-Storage、Nebula-Common的代码仓库合并为Nebula代码仓库,因此编译步骤与之前版本的步骤有所不同。 + 从{{ nebula.release }}版本开始,Nebula-Graph、Nebula-Storage、Nebula-Common 的代码仓库合并为 Nebula 代码仓库,因此编译步骤与之前版本的步骤有所不同。 -1. 克隆Nebula Graph的源代码到主机。 +1. 克隆 Nebula Graph 的源代码到主机。 - - [推荐]如果需要安装{{nebula.release}}版本的Nebula Graph,执行如下命令: + - [推荐] 如果需要安装{{nebula.release}}版本的 Nebula Graph,执行如下命令: ```bash $ git clone --branch {{nebula.branch}} https://github.com/vesoft-inc/nebula.git ``` - - 如果需要安装最新的开发版本用于测试,执行如下命令克隆master分支的代码: + - 如果需要安装最新的开发版本用于测试,执行如下命令克隆 master 分支的代码: ```bash $ git clone https://github.com/vesoft-inc/nebula.git @@ -44,31 +44,31 @@ $ mkdir build && cd build ``` -4. 使用CMake生成makefile文件。 +4. 使用 CMake 生成 makefile 文件。 !!! Note 默认安装路径为`/usr/local/nebula`,如果需要修改路径,请在下方命令内增加参数 `-DCMAKE_INSTALL_PREFIX=`。 - 更多CMake参数说明,请参见[CMake参数](#cmake)。 + 更多 CMake 参数说明,请参见 [CMake 参数](#cmake)。 ```bash $ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/nebula -DENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release .. ``` -5. 编译Nebula Graph。 +5. 编译 Nebula Graph。 !!! Note 检查[软硬件要求和安装三方库依赖包](../1.resource-preparations.md)。 - 为了适当地加快编译速度,可以使用选项`-j`并行编译。并行数量`N`建议为$\min(\text{CPU}核数,\frac{内存(GB)}{2})$。 + 为了适当地加快编译速度,可以使用选项`-j`并行编译。并行数量`N`建议为$\min(\text{CPU}核数,\frac{内存 (GB)}{2})$。 ```bash $ make -j{N} # E.g., make -j2 ``` -6. 安装Nebula Graph。 +6. 安装 Nebula Graph。 ```bash $ sudo make install @@ -80,9 +80,9 @@ 在 2.0.1 中,可以直接使用 `script` 目录下的脚本,不需要将配置文件重新命名。 -## 更新master版本 +## 更新 master 版本 -master分支的代码更新速度快,如果安装了master分支对应的开发版Nebula Graph,可根据以下步骤更新版本。 +master 分支的代码更新速度快,如果安装了 master 分支对应的开发版 Nebula Graph,可根据以下步骤更新版本。 1. 在目录`nebula`中,执行命令`git pull upstream master`更新源码。 @@ -90,13 +90,11 @@ master分支的代码更新速度快,如果安装了master分支对应的开 ## 下一步 -- [管理Nebula Graph服务](../../2.quick-start/5.start-stop-service.md) +- (企业版)[设置 License](../deploy-license.md) -- [连接Nebula Graph](../../2.quick-start/3.connect-to-nebula-graph.md) +- [管理 Nebula Graph 服务](../../2.quick-start/5.start-stop-service.md) -- [基础操作语法](../../2.quick-start/4.nebula-graph-crud.md) - -## CMake参数 +## CMake 参数 ### 使用方法 @@ -104,11 +102,11 @@ master分支的代码更新速度快,如果安装了master分支对应的开 $ cmake -D= ... ``` -下文的CMake参数可以在配置(CMake)阶段用来调整编译设置。 +下文的 CMake 参数可以在配置 (CMake) 阶段用来调整编译设置。 ### CMAKE_INSTALL_PREFIX -`CMAKE_INSTALL_PREFIX`指定Nebula Graph服务模块、脚本和配置文件的安装路径,默认路径为`/usr/local/nebula`。 +`CMAKE_INSTALL_PREFIX`指定 Nebula Graph 服务模块、脚本和配置文件的安装路径,默认路径为`/usr/local/nebula`。 ### ENABLE_WERROR @@ -116,35 +114,35 @@ $ cmake -D= ... ### ENABLE_TESTING -`ENABLE_TESTING`默认值为`ON`,表示单元测试服务由Nebula Graph服务构建。如果只需要服务模块,可以设置为`OFF`。 +`ENABLE_TESTING`默认值为`ON`,表示单元测试服务由 Nebula Graph 服务构建。如果只需要服务模块,可以设置为`OFF`。 ### ENABLE_ASAN -`ENABLE_ASAN`默认值为`OFF`,表示关闭内存问题检测工具ASan(AddressSanitizer)。该工具是为Nebula Graph开发者准备的,如果需要开启,可以设置为`ON`。 +`ENABLE_ASAN`默认值为`OFF`,表示关闭内存问题检测工具 ASan(AddressSanitizer)。该工具是为 Nebula Graph 开发者准备的,如果需要开启,可以设置为`ON`。 ### CMAKE_BUILD_TYPE -`CMAKE_BUILD_TYPE`控制Nebula Graph的build方法,取值说明如下: +`CMAKE_BUILD_TYPE`控制 Nebula Graph 的 build 方法,取值说明如下: - `Debug` - `CMAKE_BUILD_TYPE`的默认值,build过程中只记录debug信息,不使用优化选项。 + `CMAKE_BUILD_TYPE`的默认值,build 过程中只记录 debug 信息,不使用优化选项。 - `Release` - build过程中使用优化选项,不记录debug信息。 + build 过程中使用优化选项,不记录 debug 信息。 - `RelWithDebInfo` - build过程中既使用优化选项,也记录debug信息。 + build 过程中既使用优化选项,也记录 debug 信息。 - `MinSizeRel` - build过程中仅通过优化选项控制代码大小,不记录debug信息。 + build 过程中仅通过优化选项控制代码大小,不记录 debug 信息。 ### CMAKE_C_COMPILER/CMAKE_CXX_COMPILER -通常情况下,CMake会自动查找并使用主机上的C/C++编译器,但是如果编译器没有安装在标准路径,或者想使用其他编译器,请执行如下命令指定目标编译器的安装路径: +通常情况下,CMake 会自动查找并使用主机上的 C/C++编译器,但是如果编译器没有安装在标准路径,或者想使用其他编译器,请执行如下命令指定目标编译器的安装路径: ```bash $ cmake -DCMAKE_C_COMPILER= -DCMAKE_CXX_COMPILER= .. @@ -153,9 +151,9 @@ $ cmake -DCMAKE_C_COMPILER= -DCMAKE_CXX_COMPILER= -DCMAKE_CXX_COMPILER= diff --git a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md index 5c77a6165de..f4d631a5e95 100644 --- a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md +++ b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md @@ -1,6 +1,6 @@ -# 使用Docker Compose部署Nebula Graph +# 使用 Docker Compose 部署 Nebula Graph -使用Docker Compose可以基于准备好的配置文件快速部署Nebula Graph服务,仅建议在测试Nebula Graph功能时使用该方式。 +使用 Docker Compose 可以基于准备好的配置文件快速部署 Nebula Graph 服务,仅建议在测试 Nebula Graph 功能时使用该方式。 ## 前提条件 @@ -12,15 +12,15 @@ |Docker Compose|最新版本|[Install Docker Compose](https://docs.docker.com/compose/install/)| |Git|最新版本|[Download Git](https://git-scm.com/download/)| -- 如果使用非root用户部署Nebula Graph,请授权该用户Docker相关的权限。详细信息,请参见[Manage Docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)。 +- 如果使用非 root 用户部署 Nebula Graph,请授权该用户 Docker 相关的权限。详细信息,请参见 [Manage Docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)。 -- 启动主机上的Docker服务。 +- 启动主机上的 Docker 服务。 -- 如果已经通过Docker Compose在主机上部署了另一个版本的Nebula Graph,为避免兼容性问题,需要删除目录`nebula-docker-compose/data`。 +- 如果已经通过 Docker Compose 在主机上部署了另一个版本的 Nebula Graph,为避免兼容性问题,需要删除目录`nebula-docker-compose/data`。 -## 部署和连接Nebula Graph +## 部署和连接 Nebula Graph -1. 通过Git克隆`nebula-docker-compose`仓库的`master`分支到主机。 +1. 通过 Git 克隆`nebula-docker-compose`仓库的`{{dockercompose.release}}`分支到主机。 !!! danger @@ -36,11 +36,11 @@ $ cd nebula-docker-compose/ ``` -3. 执行如下命令启动Nebula Graph服务。 +3. 执行如下命令启动 Nebula Graph 服务。 !!! Note - 如果长期未更新镜像,请先更新[Nebula Graph镜像](#nebula_graphdocker)和[Nebula Console镜像](#nebula_console)。 + 如果长期未更新镜像,请先更新 [Nebula Graph 镜像](#nebula_graphdocker)和 [Nebula Console 镜像](#nebula_console)。 ```bash [nebula-docker-compose]$ docker-compose up -d @@ -59,9 +59,9 @@ 上述服务的更多信息,请参见[架构总览](../../1.introduction/3.nebula-graph-architecture/1.architecture-overview.md)。 -4. 连接Nebula Graph。 +4. 连接 Nebula Graph。 - 1. 使用Nebula Console镜像启动一个容器,并连接到Nebula Graph服务所在的网络(nebula-docker-compose_nebula-net)中。 + 1. 使用 Nebula Console 镜像启动一个容器,并连接到 Nebula Graph 服务所在的网络(nebula-docker-compose_nebula-net)中。 ```bash $ docker run --rm -ti --network nebula-docker-compose_nebula-net --entrypoint=/bin/sh vesoft/nebula-console:{{console.branch}} @@ -80,7 +80,7 @@ 93ba48b4b288 none null local ``` - 2. 通过Nebula Console连接Nebula Graph。 + 2. 通过 Nebula Console 连接 Nebula Graph。 ```bash docker> nebula-console -u -p --address=graphd --port=9669 @@ -106,9 +106,9 @@ 5. 执行两次`exit` 可以退出容器。 -## 查看Nebula Graph服务的状态和端口 +## 查看 Nebula Graph 服务的状态和端口 -执行命令`docker-compose ps`可以列出Nebula Graph服务的状态和端口。 +执行命令`docker-compose ps`可以列出 Nebula Graph 服务的状态和端口。 ```bash $ docker-compose ps @@ -134,11 +134,11 @@ nebula-docker-compose_storaged2_1 ./bin/nebula-storaged --fl ... Up (health: 44500/tcp, 44501/tcp, 0.0.0.0:33300->9779/tcp ``` -Nebula Graph默认使用`9669`端口为客户端提供服务,如果需要修改端口,请修改目录`nebula-docker-compose`内的文件`docker-compose.yaml`,然后重启Nebula Graph服务。 +Nebula Graph 默认使用`9669`端口为客户端提供服务,如果需要修改端口,请修改目录`nebula-docker-compose`内的文件`docker-compose.yaml`,然后重启 Nebula Graph 服务。 -## 查看Nebula Graph服务的数据和日志 +## 查看 Nebula Graph 服务的数据和日志 -Nebula Graph的所有数据和日志都持久化存储在`nebula-docker-compose/data`和`nebula-docker-compose/logs`目录中。 +Nebula Graph 的所有数据和日志都持久化存储在`nebula-docker-compose/data`和`nebula-docker-compose/logs`目录中。 目录的结构如下: @@ -164,9 +164,9 @@ nebula-docker-compose/ └── storage2 ``` -## 停止Nebula Graph服务 +## 停止 Nebula Graph 服务 -用户可以执行如下命令停止Nebula Graph服务: +用户可以执行如下命令停止 Nebula Graph 服务: ```bash $ docker-compose down @@ -198,17 +198,17 @@ Removing network nebula-docker-compose_nebula-net !!! danger - 命令`docker-compose down -v`的参数`-v`将会**删除**所有本地的数据。如果使用的是nightly版本,并且有一些兼容性问题,请尝试这个命令。 + 命令`docker-compose down -v`的参数`-v`将会**删除**所有本地的数据。如果使用的是 nightly 版本,并且有一些兼容性问题,请尝试这个命令。 ## 修改配置 -Docker Compose部署的Nebula Graph,配置文件位置为`nebula-docker-compose/docker-compose.yaml`,修改该文件内的配置并重启服务即可使新配置生效。 +Docker Compose 部署的 Nebula Graph,配置文件位置为`nebula-docker-compose/docker-compose.yaml`,修改该文件内的配置并重启服务即可使新配置生效。 具体的配置说明请参见[配置管理](../../5.configurations-and-logs/1.configurations/1.configurations.md)。 ## 常见问题 -### 如何固定Docker映射到外部的端口? +### 如何固定 Docker 映射到外部的端口? 在目录`nebula-docker-compose`内修改文件`docker-compose.yaml`,将对应服务的`ports`设置为固定映射,例如: @@ -222,53 +222,53 @@ graphd: - 19670 ``` -`9669:9669`表示内部的9669映射到外部的端口也是9669,下方的`19669`表示内部的19669映射到外部的端口是随机的。 +`9669:9669`表示内部的 9669 映射到外部的端口也是 9669,下方的`19669`表示内部的 19669 映射到外部的端口是随机的。 -### 如何升级/更新Nebula Graph服务的Docker镜像? +### 如何升级/更新 Nebula Graph 服务的 Docker 镜像? 1. 在文件`nebula-docker-compose/docker-compose.yaml`中,找到所有服务的`image`并修改其值为相应的镜像版本。 - -2. 在目录`nebula-docker-compose`内执行命令`docker-compose pull`,更新Graph服务、Storage服务和Meta服务的镜像。 - + +2. 在目录`nebula-docker-compose`内执行命令`docker-compose pull`,更新 Graph 服务、Storage 服务和 Meta 服务的镜像。 + !!! note - 执行`docker-compose pull`命令更新服务镜像前,确保已停止Nebula Graph。 + 执行`docker-compose pull`命令更新服务镜像前,确保已停止 Nebula Graph。 + +3. 执行命令`docker-compose up -d`启动 Nebula Graph 服务。 -3. 执行命令`docker-compose up -d`启动Nebula Graph服务。 +4. 通过 Nebula Console 连接 Nebula Graph 后,分别执行命令`SHOW HOSTS GRAPH`、`SHOW HOSTS STORAGE`、`SHOW HOSTS META`查看各服务版本。 -4. 通过Nebula Console连接Nebula Graph后,分别执行命令`SHOW HOSTS GRAPH`、`SHOW HOSTS STORAGE`、`SHOW HOSTS META`查看各服务版本。 - ### 执行命令`docker-compose pull`报错`ERROR: toomanyrequests` 可能遇到如下错误: `ERROR: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit` -以上错误表示已达到Docker Hub的速率限制。解决方案请参见[Understanding Docker Hub Rate Limiting](https://www.docker.com/increase-rate-limit)。 +以上错误表示已达到 Docker Hub 的速率限制。解决方案请参见 [Understanding Docker Hub Rate Limiting](https://www.docker.com/increase-rate-limit)。 -### 如何更新Nebula Console? +### 如何更新 Nebula Console? -执行如下命令可以更新Nebula Console客户端镜像。 +执行如下命令可以更新 Nebula Console 客户端镜像。 ```bash docker pull vesoft/nebula-console:{{console.branch}} ``` -### 为什么更新nebula-docker-compose仓库(Nebula Graph 2.0.0-RC)后,无法通过端口`3699`连接Nebula Graph? +### 为什么更新 nebula-docker-compose 仓库(Nebula Graph 2.0.0-RC)后,无法通过端口`3699`连接 Nebula Graph? 在 Nebula Graph 2.0.0-RC 版本,默认端口从`3699`改为`9669`。请使用`9669`端口连接,或修改配置文件`docker-compose.yaml`内的端口。 -### 为什么更新nebula-docker-compose仓库后,无法访问数据?(2021年01月04日) +### 为什么更新 nebula-docker-compose 仓库后,无法访问数据?(2021 年 01 月 04 日) -如果在2021年01月04日后更新过nebula-docker-compose仓库,而且之前已经有数据,请修改文件`docker-compose.yaml`,将端口修改为之前使用的端口。详情请参见[修改默认端口](https://github.com/vesoft-inc/nebula-docker-compose/commit/2a612f1c4f0e2c31515e971b24b355b3be69420a)。 +如果在 2021 年 01 月 04 日后更新过 nebula-docker-compose 仓库,而且之前已经有数据,请修改文件`docker-compose.yaml`,将端口修改为之前使用的端口。详情请参见[修改默认端口](https://github.com/vesoft-inc/nebula-docker-compose/commit/2a612f1c4f0e2c31515e971b24b355b3be69420a)。 -### 为什么更新nebula-docker-compose仓库后,无法访问数据?(2021年01月27日) +### 为什么更新 nebula-docker-compose 仓库后,无法访问数据?(2021 年 01 月 27 日) -2021年01月27日修改了数据格式,无法兼容之前的数据,请执行命令`docker-compose down -v`删除所有本地数据。 +2021 年 01 月 27 日修改了数据格式,无法兼容之前的数据,请执行命令`docker-compose down -v`删除所有本地数据。 ## 相关视频 -用户也可以查看视频快速部署Nebula Graph 2.0。 +用户也可以查看视频快速部署 Nebula Graph 2.0。 -[使用 docker compose 部署 Nebula Graph 2.0 和 Web Studio](https://www.bilibili.com/video/BV1T54y1b7pa)(18分10秒) +[使用 docker compose 部署 Nebula Graph 2.0 和 Web Studio](https://www.bilibili.com/video/BV1T54y1b7pa)(18 分 10 秒) diff --git a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md index 305a17dedd0..d66fc476565 100644 --- a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md +++ b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md @@ -1,14 +1,14 @@ -# 使用tar.gz文件安装Nebula Graph +# 使用 tar.gz 文件安装 Nebula Graph -用户可以下载打包好的tar.gz文件快速安装Nebula Graph。 +用户可以下载打包好的 tar.gz 文件快速安装 Nebula Graph。 !!! note - Nebula Graph从2.6.0版本起提供tar.gz文件。 + Nebula Graph 从 2.6.0 版本起提供 tar.gz 文件。 ## 操作步骤 -1. 使用如下地址下载Nebula Graph的tar.gz文件。 +1. 使用如下地址下载 Nebula Graph 的 tar.gz 文件。 下载前需将``替换为需要下载的版本。 @@ -39,19 +39,19 @@ https://oss-cdn.nebula-graph.com.cn/package//nebula-graph-.ubuntu2004.amd64.tar.gz.sha256sum.txt ``` - 例如,要下载适用于`CentOS 7.5`的Nebula Graph {{nebula.branch}} tar.gz文件,运行以下命令: + 例如,要下载适用于`CentOS 7.5`的 Nebula Graph {{nebula.branch}} tar.gz 文件,运行以下命令: ```bash wget https://oss-cdn.nebula-graph.com.cn/package/{{nebula.release}}/nebula-graph-{{nebula.release}}.el7.x86_64.tar.gz ``` -2. 解压tar.gz文件到Nebula Graph安装目录。 +2. 解压 tar.gz 文件到 Nebula Graph 安装目录。 ```bash tar -xvzf -C ``` - * `tar.gz_file_name`表示tar.gz文件的名称。 + * `tar.gz_file_name`表示 tar.gz 文件的名称。 * `install_path`表示安装路径。 例如: @@ -62,10 +62,12 @@ 3. 修改配置文件名以应用配置。 - 进入解压出的目录,将子目录`etc`中的文件`nebula-graphd.conf.default`、`nebula-metad.conf.default`和`nebula-storaged.conf.default`重命名,删除`.default`,即可应用Nebula Graph的默认配置。如需修改配置,参见[配置管理](../../5.configurations-and-logs/1.configurations/1.configurations.md)。 + 进入解压出的目录,将子目录`etc`中的文件`nebula-graphd.conf.default`、`nebula-metad.conf.default`和`nebula-storaged.conf.default`重命名,删除`.default`,即可应用 Nebula Graph 的默认配置。如需修改配置,参见[配置管理](../../5.configurations-and-logs/1.configurations/1.configurations.md)。 -至此,Nebula Graph安装完毕。 +至此,Nebula Graph 安装完毕。 ## 下一步 -使用`scripts`目录中的`nebula.service`文件启动Nebula Graph,详情参见[管理Nebula Graph服务](../manage-service.md)。 +- (企业版)[设置 License](../deploy-license.md) + +- [管理 Nebula Graph 服务](../manage-service.md) diff --git a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md index fb68272c56f..daba6426155 100644 --- a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md +++ b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md @@ -1,10 +1,10 @@ -# 使用RPM/DEB包部署Nebula Graph多机集群 +# 使用 RPM/DEB 包部署 Nebula Graph 多机集群 -Nebula Graph不提供官方的集群部署工具,用户可以使用RPM或DEB文件手动部署集群。本文提供了部署集群的示例。 +Nebula Graph 不提供官方的集群部署工具,用户可以使用 RPM 或 DEB 文件手动部署集群。本文提供了部署集群的示例。 ## 部署方案 -| 机器名称 |IP地址 | graphd进程数量 | storaged进程数量 | metad进程数量 | +| 机器名称 |IP 地址 | graphd 进程数量 | storaged 进程数量 | metad 进程数量 | | :----- |:---------------|:------------- | :----------------- | :---------------- | | A | 192.168.10.111 |1 | 1 | 1 | | B | 192.168.10.112 |1 | 1 | 1 | @@ -14,23 +14,23 @@ Nebula Graph不提供官方的集群部署工具,用户可以使用RPM或DEB ## 前提条件 -准备5台用于部署集群的机器。 +准备 5 台用于部署集群的机器。 ## 手动部署流程 -### 1.安装Nebula Graph +### 1. 安装 Nebula Graph -在集群的每一台服务器上都安装Nebula Graph,安装后暂不需要启动服务。安装方式请参见: +在集群的每一台服务器上都安装 Nebula Graph,安装后暂不需要启动服务。安装方式请参见: -- [使用RPM或DEB包安装Nebula Graph](2.install-nebula-graph-by-rpm-or-deb.md) +- [使用 RPM 或 DEB 包安装 Nebula Graph](2.install-nebula-graph-by-rpm-or-deb.md) -- [使用源码安装Nebula Graph](1.install-nebula-graph-by-compiling-the-source-code.md) +- [使用源码安装 Nebula Graph](1.install-nebula-graph-by-compiling-the-source-code.md) -### 2.修改配置文件 +### 2. 修改配置文件 -修改每个服务器上的Nebula Graph配置文件。 +修改每个服务器上的 Nebula Graph 配置文件。 -Nebula Graph的所有配置文件均位于安装目录的`etc`目录内,包括`nebula-graphd.conf`、`nebula-metad.conf`和`nebula-storaged.conf`,用户可以只修改所需服务的配置文件。各个机器需要修改的配置文件如下。 +Nebula Graph 的所有配置文件均位于安装目录的`etc`目录内,包括`nebula-graphd.conf`、`nebula-metad.conf`和`nebula-storaged.conf`,用户可以只修改所需服务的配置文件。各个机器需要修改的配置文件如下。 | 机器名称 |待修改配置文件 | | :----- |:---------------| @@ -44,15 +44,15 @@ Nebula Graph的所有配置文件均位于安装目录的`etc`目录内,包括 !!! note - 主要修改的配置是`meta_server_addrs`,所有配置文件都需要填写所有Meta服务的IP地址和端口,同时需要修改`local_ip`为机器本身的联网IP地址。配置参数的详细说明请参见: + 主要修改的配置是`meta_server_addrs`,所有配置文件都需要填写所有 Meta 服务的 IP 地址和端口,同时需要修改`local_ip`为机器本身的联网 IP 地址。配置参数的详细说明请参见: - - [Meta服务配置](../../5.configurations-and-logs/1.configurations/2.meta-config.md) + - [Meta 服务配置](../../5.configurations-and-logs/1.configurations/2.meta-config.md) - - [Graph服务配置](../../5.configurations-and-logs/1.configurations/3.graph-config.md) + - [Graph 服务配置](../../5.configurations-and-logs/1.configurations/3.graph-config.md) - - [Storage服务配置](../../5.configurations-and-logs/1.configurations/4.storage-config.md) + - [Storage 服务配置](../../5.configurations-and-logs/1.configurations/4.storage-config.md) -- 机器A配置 +- 机器 A 配置 - `nebula-graphd.conf` @@ -98,7 +98,7 @@ Nebula Graph的所有配置文件均位于安装目录的`etc`目录内,包括 --port=9559 ``` -- 机器B配置 +- 机器 B 配置 - `nebula-graphd.conf` @@ -144,7 +144,7 @@ Nebula Graph的所有配置文件均位于安装目录的`etc`目录内,包括 --port=9559 ``` -- 机器C配置 +- 机器 C 配置 - `nebula-graphd.conf` @@ -190,7 +190,7 @@ Nebula Graph的所有配置文件均位于安装目录的`etc`目录内,包括 --port=9559 ``` -- 机器D配置 +- 机器 D 配置 - `nebula-graphd.conf` @@ -222,7 +222,7 @@ Nebula Graph的所有配置文件均位于安装目录的`etc`目录内,包括 --port=9779 ``` -- 机器E配置 +- 机器 E 配置 - `nebula-graphd.conf` @@ -254,7 +254,7 @@ Nebula Graph的所有配置文件均位于安装目录的`etc`目录内,包括 --port=9779 ``` -### 3.启动集群 +### 3. 启动集群 依次启动**各个服务器**上的对应进程。 @@ -266,7 +266,7 @@ Nebula Graph的所有配置文件均位于安装目录的`etc`目录内,包括 | D | graphd、storaged | | E | graphd、storaged | -启动Nebula Graph进程的命令如下: +启动 Nebula Graph 进程的命令如下: ```bash sudo /usr/local/nebula/scripts/nebula.service start @@ -276,13 +276,13 @@ sudo /usr/local/nebula/scripts/nebula.service start - 确保每个服务器中的对应进程都已启动,否则服务将启动失败。 - - 当需都启动graphd、storaged和metad时,可以用all代替。 + - 当需都启动 graphd、storaged 和 metad 时,可以用 all 代替。 - - `/usr/local/nebula`是Nebula Graph的默认安装路径,如果修改过安装路径,请使用实际路径。更多启停服务的内容,请参见[管理Nebula Graph服务](../../2.quick-start/5.start-stop-service.md)。 + - `/usr/local/nebula`是 Nebula Graph 的默认安装路径,如果修改过安装路径,请使用实际路径。更多启停服务的内容,请参见[管理 Nebula Graph 服务](../../2.quick-start/5.start-stop-service.md)。 -### 4.检查集群 +### 4. 检查集群 -安装原生CLI客户端[Nebula Console](../../2.quick-start/3.connect-to-nebula-graph.md#_1),然后连接任何一个已启动graphd进程的机器,执行命令`SHOW HOSTS`检查集群状态。例如: +安装原生 CLI 客户端 [Nebula Console](../../2.quick-start/3.connect-to-nebula-graph.md#_1),然后连接任何一个已启动 graphd 进程的机器,执行命令`SHOW HOSTS`检查集群状态。例如: ```bash $ ./nebula-console --addr 192.168.10.111 --port 9669 -u root -p nebula diff --git a/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-260.md b/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-260.md deleted file mode 100644 index 599719c9ce5..00000000000 --- a/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-260.md +++ /dev/null @@ -1,54 +0,0 @@ -# 升级Nebula Graph v2.0.x至v{{nebula.release}} - -Nebula Graph v2.0.x升级至v{{nebula.release}},只需要使用v{{nebula.release}}的RPM/DEB包进行升级操作即可,或者[编译v{{nebula.release}}](../2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md)之后重新安装。 - -!!! note - - Nebula Graph v2.0.x指v2.0.0-GA和v2.0.1版本。如果Nebula Graph版本过低(v2.0.0-RC、v2.0.0-beta、v1.x),请参见[升级 Nebula Graph 历史版本至 v{{nebula.release}}](upgrade-nebula-graph-to-260.md)。 - -## RPM/DEB包升级步骤 - -1. 下载[RPM/DEB包](https://github.com/vesoft-inc/nebula-graph/releases/tag/v{{nebula.release}})。 - -2. 停止所有Nebula Graph服务。详情请参见[管理Nebula Graph服务](../../2.quick-start/5.start-stop-service.md)。建议更新前备份配置文件。 - -3. 执行如下命令升级: - - - RPM包 - - ```bash - $ sudo rpm -Uvh - ``` - - 若安装时指定路径,那么升级时也需要指定路径 - - ```bash - $ sudo rpm -Uvh --prefix= - ``` - - DEB包 - - ```bash - $ sudo dpkg -i - ``` - -4. 在每台服务器上启动所需的服务。详情请参见[管理Nebula Graph服务](../../2.quick-start/5.start-stop-service.md#_1)。 - -## 编译新版本源码升级步骤 - -1. 备份旧版本的配置文件。配置文件保存在Nebula Graph安装路径的`etc`目录内。 - -2. 更新仓库并编译源码。详情请参见[使用源码安装Nebula Graph](../2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md)。 - - !!! note - - 编译时注意设置安装路径,和旧版本的安装路径保持一致。 - -## Docker Compose部署升级步骤 - -1. 修改目录`nebula-docker-compose`内的文件`docker-compose.yaml`,将`image`后的所有版本都修改为`{{nebula.branch}}`。 - -2. 在目录`nebula-docker-compose`内执行命令`docker-compose pull`,更新所有服务的镜像版本。 - -3. 执行命令`docker-compose down`停止Nebula Graph服务。 - -4. 执行命令`docker-compose up -d`启动Nebula Graph服务。 diff --git a/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-latest.md b/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-latest.md new file mode 100644 index 00000000000..b5952f4c243 --- /dev/null +++ b/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-latest.md @@ -0,0 +1,54 @@ +# 升级 Nebula Graph v2.0.x 至 v{{nebula.release}} + +Nebula Graph v2.0.x 升级至 v{{nebula.release}},只需要使用 v{{nebula.release}}的 RPM/DEB 包进行升级操作即可,或者[编译 v{{nebula.release}}](../2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md) 之后重新安装。 + +!!! note + + Nebula Graph v2.0.x 指 v2.0.0-GA 和 v2.0.1 版本。如果 Nebula Graph 版本过低(v2.0.0-RC、v2.0.0-beta、v1.x),请参见[升级 Nebula Graph 历史版本至 v{{nebula.release}}](upgrade-nebula-graph-to-latest.md)。 + +## RPM/DEB 包升级步骤 + +1. 下载 [RPM/DEB 包](https://github.com/vesoft-inc/nebula-graph/releases/tag/v{{nebula.release}})。 + +2. 停止所有 Nebula Graph 服务。详情请参见[管理 Nebula Graph 服务](../../2.quick-start/5.start-stop-service.md)。建议更新前备份配置文件。 + +3. 执行如下命令升级: + + - RPM 包 + + ```bash + $ sudo rpm -Uvh + ``` + + 若安装时指定路径,那么升级时也需要指定路径 + + ```bash + $ sudo rpm -Uvh --prefix= + ``` + - DEB 包 + + ```bash + $ sudo dpkg -i + ``` + +4. 在每台服务器上启动所需的服务。详情请参见[管理 Nebula Graph 服务](../../2.quick-start/5.start-stop-service.md#_1)。 + +## 编译新版本源码升级步骤 + +1. 备份旧版本的配置文件。配置文件保存在 Nebula Graph 安装路径的`etc`目录内。 + +2. 更新仓库并编译源码。详情请参见[使用源码安装 Nebula Graph](../2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md)。 + + !!! note + + 编译时注意设置安装路径,和旧版本的安装路径保持一致。 + +## Docker Compose 部署升级步骤 + +1. 修改目录`nebula-docker-compose`内的文件`docker-compose.yaml`,将`image`后的所有版本都修改为`{{nebula.branch}}`。 + +2. 在目录`nebula-docker-compose`内执行命令`docker-compose pull`,更新所有服务的镜像版本。 + +3. 执行命令`docker-compose down`停止 Nebula Graph 服务。 + +4. 执行命令`docker-compose up -d`启动 Nebula Graph 服务。 diff --git a/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-260.md b/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-latest.md similarity index 62% rename from docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-260.md rename to docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-latest.md index 93d95d0e9f9..7c88c301266 100644 --- a/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-260.md +++ b/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-latest.md @@ -1,10 +1,10 @@ -# 升级Nebula Graph历史版本至v{{nebula.release}} +# 升级 Nebula Graph 历史版本至 v{{nebula.release}} -Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍如何升级历史版本至v{{nebula.release}}。 +Nebula Graph 历史版本指低于 Nebula Graph v2.0.0-GA 的版本,本文介绍如何升级历史版本至 v{{nebula.release}}。 !!! note - Nebula Graph v2.0.0-GA或更新版本升级至v{{nebula.release}},请参见[Nebula Graph v2.0.x升级至v{{nebula.release}}](upgrade-nebula-from-200-to-260.md)。 + Nebula Graph v2.0.0-GA 或更新版本升级至 v{{nebula.release}},请参见 [Nebula Graph v2.0.x 升级至 v{{nebula.release}}](upgrade-nebula-from-200-to-latest.md)。 ## 升级限制 @@ -12,21 +12,21 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 - 未提供升级脚本,需手动在每台服务器上依次执行。 -- **不支持**基于Docker容器(包括Docker Swarm、Docker Compose、K8s)的升级。 +- **不支持**基于 Docker 容器(包括 Docker Swarm、Docker Compose、K8s)的升级。 -- 必须在原服务器上原地升级,不能修改原机器的IP地址、配置文件,不可更改集群拓扑。 +- 必须在原服务器上原地升级,不能修改原机器的 IP 地址、配置文件,不可更改集群拓扑。 - 硬盘空间要求:各机器硬盘剩余空间都需要是原数据目录的**三倍**。 -- 已知会造成数据丢失的4种场景,和alter schema以及default value相关,请参见[github known issues](https://github.com/vesoft-inc/nebula-graph/issues/857)。 +- 已知会造成数据丢失的 4 种场景,和 alter schema 以及 default value 相关,请参见 [github known issues](https://github.com/vesoft-inc/nebula-graph/issues/857)。 - 所有的客户端均需要升级,通信协议不兼容。 -- 升级时间大约需要30分钟(取决于具体配置),请参见文末测试环境。 +- 升级时间大约需要 30 分钟(取决于具体配置),请参见文末测试环境。 - 数据目录不要使用软连接切换,避免失效。 -- 升级操作需要有sudo权限。 +- 升级操作需要有 sudo 权限。 ## 前置条件说明 @@ -34,17 +34,17 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 默认情况下,历史版本安装的根目录为`/usr/local/nebula/`(下文记为 `${nebula-old}`)。默认配置文件目录为 `${nebula-old}/etc/`。 -- `${nebula-old}/etc/nebula-storaged.conf`文件中的`--data_path`参数指定了storaged数据目录的位置,其默认值为`data/storage`。 +- `${nebula-old}/etc/nebula-storaged.conf`文件中的`--data_path`参数指定了 storaged 数据目录的位置,其默认值为`data/storage`。 -- `${nebula-old}/etc/nebula-metad.conf`文件中的`--data_path`参数指定了metad数据目录位置,其默认值为`data/meta`。 +- `${nebula-old}/etc/nebula-metad.conf`文件中的`--data_path`参数指定了 metad 数据目录位置,其默认值为`data/meta`。 !!! Note - Nebula Graph的实际安装路径可能和本文示例不同,请使用实际路径。用户也可以用 `ps -ef | grep nebula` 中的参数来找到实际使用的配置文件地址。 + Nebula Graph 的实际安装路径可能和本文示例不同,请使用实际路径。用户也可以用 `ps -ef | grep nebula` 中的参数来找到实际使用的配置文件地址。 ### 新版本安装目录 -本文中新版本安装目录记为 `${nebula-new}` (例如 `/usr/local/nebula-new/`)。 +本文中新版本安装目录记为 `${nebula-new}` (例如 `/usr/local/nebula-new/`)。 ``` # mkdir -p ${nebula-new} @@ -82,14 +82,14 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 1. 安装新的二进制文件。 - - 如果从 RPM/DEB 安装,从[release page](https://github.com/vesoft-inc/nebula-graph/releases)下载对应操作系统的安装包。 + - 如果从 RPM/DEB 安装,从 [release page](https://github.com/vesoft-inc/nebula-graph/releases) 下载对应操作系统的安装包。 ``` # sudo rpm --force -i --prefix=${nebula-new} ${nebula-package-name.rpm} # for centos/redhat # sudo dpkg -i --instdir==${nebula-new} ${nebula-package-name.deb} # for ubuntu ``` - 具体步骤请参见[从RPM/DEB安装](../2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)。 + 具体步骤请参见[从 RPM/DEB 安装](../2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)。 - 如果从源代码安装。具体步骤请参见[从源代码安装](../2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md)。这里列出几个关键命令: @@ -111,13 +111,13 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 # cp -rf ${nebula-old}/etc ${nebula-new}/ ``` -4. 在曾经运行 metad 的服务器上(通常为3台),拷贝 metad 数据、配置文件到新目录。 +4. 在曾经运行 metad 的服务器上(通常为 3 台),拷贝 metad 数据、配置文件到新目录。 - 拷贝 metad 数据 在 `${nebula-old}/etc/nebula-metad.conf` 中找到 `--data_path` 项(其默认值为 `data/meta`) - - 如果历史版本配置**未更改** `--data_path` 项,则可以运行如下命令,将metad数据拷贝到新目录。 + - 如果历史版本配置**未更改** `--data_path` 项,则可以运行如下命令,将 metad 数据拷贝到新目录。 ``` # mkdir -p ${nebula-new}/data/meta/ @@ -134,20 +134,19 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 # vim ${nebula-new}/nebula-metad.conf ``` - - [可选]增加配置项: + - [可选] 增加配置项: - `--null_type=false`: 升级后的Schema的属性是否要支持 [`NULL`](../../3.ngql-guide/3.data-types/5.null.md),**默认为 true**。不希望支持 NULL 的话,设置为 false。此时,升级后的 Schema 如果要增加属性(ALTER TAG/EDGE)必须指定 [default 值](../../3.ngql-guide/10.tag-statements/1.create-tag.md),否则会读不出数据。 + `--null_type=false`: 升级后的 Schema 的属性是否要支持 [`NULL`](../../3.ngql-guide/3.data-types/5.null.md),**默认为 true**。不希望支持 NULL 的话,设置为 false。此时,升级后的 Schema 如果要增加属性(ALTER TAG/EDGE)必须指定 [default 值](../../3.ngql-guide/10.tag-statements/1.create-tag.md),否则会读不出数据。 `--string_index_limit=32`: 升级后 string 对应的[索引的长度](../../3.ngql-guide/14.native-index-statements/1.create-native-index.md),不加的话系统默认为 64。 !!! Note - 请确保在每个metad服务器都完成了以上操作。 + 请确保在每个 metad 服务器都完成了以上操作。 -5. 在每个 storaged 服务器上, 修改 storaged 配置文件。 +5. 在每个 storaged 服务器上,修改 storaged 配置文件。 - - + [可选]如果历史版本 storaged 数据目录 `--data_path=data/storage` 不是默认值,有更改。 + + [可选] 如果历史版本 storaged 数据目录 `--data_path=data/storage` 不是默认值,有更改。 ``` # vim ${nebula-new}/nebula-storaged.conf @@ -198,13 +197,13 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 参数说明: - - `--src_db_path`:**历史版本**storaged的数据目录的绝对路径,多个目录用逗号分隔,不加空格。 + - `--src_db_path`:**历史版本** storaged 的数据目录的绝对路径,多个目录用逗号分隔,不加空格。 - - `--dst_db_path`:**新版本**storaged的数据目录的绝对路径,多个目录用逗号分隔。逗号分隔的目录必须和`--src_db_path`中一一对应。 + - `--dst_db_path`:**新版本** storaged 的数据目录的绝对路径,多个目录用逗号分隔。逗号分隔的目录必须和`--src_db_path`中一一对应。 - - `--upgrade_meta_server` :步骤6中启动的所有新 metad 的地址. + - `--upgrade_meta_server` :步骤 6 中启动的所有新 metad 的地址。 - - `--upgrade_version`:如果历史版本为v1.2.x,则填写1;如果历史版本为v2.0.0-RC,则填写2。不可填写其他数字。 + - `--upgrade_version`:如果历史版本为 v1.2.x,则填写 1;如果历史版本为 v2.0.0-RC,则填写 2。不可填写其他数字。 !!! danger @@ -233,9 +232,9 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 !!! Note - 如果工具抛出异常请在论坛提交问题。**放弃本次升级,关闭所有已经启动的 metad,在原目录正常启动 nebula 服务。** - - 请确保在每个storaged服务器都完成了以上操作。 + - 请确保在每个 storaged 服务器都完成了以上操作。 -8. 在每个storaged服务器启动新版本的storaged服务。 +8. 在每个 storaged 服务器启动新版本的 storaged 服务。 ``` # ${nebula-new}/scripts/nebula.service start storaged @@ -244,7 +243,7 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 !!! Note - 如果有 storaged 未正常启动,请将日志`${nebula-new}/logs/`在论坛提交问题。**放弃本次升级,关闭所有已经启动的 metad和storaged,在原目录正常启动 nebula 服务。** + 如果有 storaged 未正常启动,请将日志`${nebula-new}/logs/`在论坛提交问题。**放弃本次升级,关闭所有已经启动的 metad 和 storaged,在原目录正常启动 nebula 服务。** 9. 在每个 graphd 服务器启动新版本的 graphd 服务。 @@ -254,9 +253,9 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 ``` !!! Note - 如果有graphd未正常启动,请将日志`${nebula-new}/logs/`在论坛提交问题。**放弃本次升级,关闭所有已经启动的 metad,storaged,graphd. 在原目录正常启动 nebula 服务。** + 如果有 graphd 未正常启动,请将日志`${nebula-new}/logs/`在论坛提交问题。**放弃本次升级,关闭所有已经启动的 metad,storaged,graphd. 在原目录正常启动 nebula 服务。** -10. 使用[新版本Nebula Console](https://github.com/vesoft-inc/nebula-console) 连接新的Nebula Graph,验证服务是否可用、数据是否正常。命令行参数,如 graphd 的 IP、端口都不变。 +10. 使用[新版本 Nebula Console](https://github.com/vesoft-inc/nebula-console) 连接新的 Nebula Graph,验证服务是否可用、数据是否正常。命令行参数,如 graphd 的 IP、端口都不变。 ```ngql nebula> SHOW HOSTS; @@ -269,11 +268,11 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 !!! Note - 历史版本Nebula Console可能会有兼容性问题。 + 历史版本 Nebula Console 可能会有兼容性问题。 11. 升级其他客户端。 - 所有的客户端都必须升级到支持Nebula Graph v{{nebula.release}} 的版本。包括但不限于[Python](https://github.com/vesoft-inc/nebula-python)、[Java](https://github.com/vesoft-inc/nebula-java)、[go](https://github.com/vesoft-inc/nebula-go)、[C++](https://github.com/vesoft-inc/nebula-cpp)、[Flink-connector](https://github.com/vesoft-inc/nebula-flink-connector)、[Algorithm](https://github.com/vesoft-inc/nebula-algorithm)、[Exchange](https://github.com/vesoft-inc/nebula-exchange)、[Spark-connector](https://github.com/vesoft-inc/nebula-spark-connector)、[Nebula Bench](https://github.com/vesoft-inc/nebula-bench)。请找到各 repo 对应的 branch。 + 所有的客户端都必须升级到支持 Nebula Graph v{{nebula.release}} 的版本。包括但不限于 [Python](https://github.com/vesoft-inc/nebula-python)、[Java](https://github.com/vesoft-inc/nebula-java)、[go](https://github.com/vesoft-inc/nebula-go)、[C++](https://github.com/vesoft-inc/nebula-cpp)、[Flink-connector](https://github.com/vesoft-inc/nebula-flink-connector)、[Algorithm](https://github.com/vesoft-inc/nebula-algorithm)、[Exchange](https://github.com/vesoft-inc/nebula-exchange)、[Spark-connector](https://github.com/vesoft-inc/nebula-spark-connector)、[Nebula Bench](https://github.com/vesoft-inc/nebula-bench)。请找到各 repo 对应的 branch。 !!! Note @@ -287,17 +286,17 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 所有周边客户端也切换为**历史版本**。 -## 附1:升级测试环境 +## 附 1:升级测试环境 本文测试升级的环境如下: -- 机器配置:32核CPU、62 GB内存、SSD +- 机器配置:32 核 CPU、62 GB 内存、SSD -- 数据规模:Nebula Graph 1.2 版本 LDBC 测试数据 100 GB(1个图空间、24个分片、data目录 92 GB) +- 数据规模:Nebula Graph 1.2 版本 LDBC 测试数据 100 GB(1 个图空间、24 个分片、data 目录 92 GB) - 并发参数:`--max_concurrent=5`、`--max_concurrent_parts=24`、`--write_batch_num=100` -升级共耗时**21分钟**(其中 compaction 耗时13分钟)。工具并发参数说明如下: +升级共耗时** 21 分钟**(其中 compaction 耗时 13 分钟)。工具并发参数说明如下: |参数名称|默认值| |:---|:---| @@ -305,7 +304,7 @@ Nebula Graph历史版本指低于Nebula Graph v2.0.0-GA的版本,本文介绍 |`--max_concurrent_parts`|10| |`--write_batch_num`|100| -## 附2:Nebula Graph v2.0.0 代码地址和 commit id +## 附 2:Nebula Graph v2.0.0 代码地址和 commit id | 地址 | commit id | |:---|:---| @@ -321,11 +320,11 @@ A:不可以。这个过程中写入的数据状态是未定义的。 Q:除了 v1.2.x 和 v2.0.0-RC 外,其他版本是否支持升级? -A:未验证过。理论上 v1.0.0 - v1.2.0 都可以采用 v1.2.x 的升级版本。 v2.0.0-RC之前的日常研发版本(nightly)无升级方案。 +A:未验证过。理论上 v1.0.0 - v1.2.0 都可以采用 v1.2.x 的升级版本。 v2.0.0-RC 之前的日常研发版本(nightly)无升级方案。 Q:如果某台机器只有 graphd 服务,没有 storaged 服务,如何升级? -A:只需要升级 graphd 对应的 binary (或者RPM包)。 +A:只需要升级 graphd 对应的 binary (或者 RPM 包)。 Q:操作报错 `Permission denied`。 @@ -333,7 +332,7 @@ A:部分命令需要有 sudo 权限。 Q:是否有 gflags 发生改变? -A: 目前已知的 gflags 改变整理在[github issues](https://github.com/vesoft-inc/nebula/issues/2501)。 +A: 目前已知的 gflags 改变整理在 [github issues](https://github.com/vesoft-inc/nebula/issues/2501)。 Q:删除数据重新安装,和升级有何不同? diff --git a/docs-2.0/4.deployment-and-installation/4.uninstall-nebula-graph.md b/docs-2.0/4.deployment-and-installation/4.uninstall-nebula-graph.md index 986b7a9dee2..2bbab7228cf 100644 --- a/docs-2.0/4.deployment-and-installation/4.uninstall-nebula-graph.md +++ b/docs-2.0/4.deployment-and-installation/4.uninstall-nebula-graph.md @@ -1,24 +1,24 @@ -# 卸载Nebula Graph +# 卸载 Nebula Graph -本文介绍如何卸载Nebula Graph。 +本文介绍如何卸载 Nebula Graph。 !!! caution - 如果需要重新部署Nebula Graph,请务必完全卸载后再重新部署,否则可能会出现问题,包括Meta不一致等。 + 如果需要重新部署 Nebula Graph,请务必完全卸载后再重新部署,否则可能会出现问题,包括 Meta 不一致等。 ## 前提条件 -停止Nebula Graph服务。详情参见[管理Nebula Graph服务](../2.quick-start/5.start-stop-service.md)。 +停止 Nebula Graph 服务。详情参见[管理 Nebula Graph 服务](../2.quick-start/5.start-stop-service.md)。 -## 步骤1:删除数据和元数据文件 +## 步骤 1:删除数据和元数据文件 如果在配置文件内修改了数据文件的路径,可能会导致安装路径和数据文件保存路径不一致,因此需要查看配置文件,确认数据文件保存路径,然后手动删除数据文件目录。 !!! Note - 如果是集群架构,需要删除所有Storage和Meta服务节点的数据文件。 + 如果是集群架构,需要删除所有 Storage 和 Meta 服务节点的数据文件。 -1. 检查Storage服务的[disk配置](../5.configurations-and-logs/1.configurations/4.storage-config.md#disk)。例如: +1. 检查 Storage 服务的 [disk 配置](../5.configurations-and-logs/1.configurations/4.storage-config.md#disk)。例如: ```bash ########## Disk ########## @@ -27,11 +27,11 @@ --data_path=/nebula/data/storage ``` -2. 检查metad服务的配置文件,找到对应元数据目录。 +2. 检查 metad 服务的配置文件,找到对应元数据目录。 3. 删除以上数据和元数据目录。 -## 步骤2:卸载安装目录 +## 步骤 2:卸载安装目录 !!! Note @@ -39,13 +39,13 @@ 安装路径为参数`--prefix`指定的路径。默认路径为`/usr/local/nebula`。 -### 卸载编译安装的Nebula Graph +### 卸载编译安装的 Nebula Graph -找到Nebula Graph的安装目录,删除整个安装目录。 +找到 Nebula Graph 的安装目录,删除整个安装目录。 -### 卸载RPM包安装的Nebula Graph +### 卸载 RPM 包安装的 Nebula Graph -1. 使用如下命令查看Nebula Graph版本。 +1. 使用如下命令查看 Nebula Graph 版本。 ```bash $ rpm -qa | grep "nebula" @@ -57,7 +57,7 @@ nebula-graph-{{ nebula.release }}-1.x86_64 ``` -2. 使用如下命令卸载Nebula Graph。 +2. 使用如下命令卸载 Nebula Graph。 ```bash sudo rpm -e @@ -71,9 +71,9 @@ 3. 删除安装目录。 -### 卸载DEB包安装的Nebula Graph +### 卸载 DEB 包安装的 Nebula Graph -1. 使用如下命令查看Nebula Graph版本。 +1. 使用如下命令查看 Nebula Graph 版本。 ```bash $ dpkg -l | grep "nebula" @@ -85,7 +85,7 @@ ii nebula-graph {{ nebula.release }} amd64 Nebula Package built using CMake ``` -2. 使用如下命令卸载Nebula Graph。 +2. 使用如下命令卸载 Nebula Graph。 ```bash sudo dpkg -r @@ -99,9 +99,9 @@ 3. 删除安装目录。 -### 卸载Docker Compose部署的Nebula Graph +### 卸载 Docker Compose 部署的 Nebula Graph -1. 在目录`nebula-docker-compose`内执行如下命令停止Nebula Graph服务。 +1. 在目录`nebula-docker-compose`内执行如下命令停止 Nebula Graph 服务。 ```bash docker-compose down -v diff --git a/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/1.text-based-index-restrictions.md b/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/1.text-based-index-restrictions.md index b7c817d4f47..e30e1cb9fd9 100644 --- a/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/1.text-based-index-restrictions.md +++ b/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/1.text-based-index-restrictions.md @@ -8,21 +8,21 @@ - 全文索引当前仅支持`LOOKUP`语句。 -- 定长字符串长度超过256字节,将无法创建全文索引。 +- 定长字符串长度超过 256 字节,将无法创建全文索引。 -- 如果Tag/Edge type上存在全文索引,无法删除或修改Tag/Edge type。 +- 如果 Tag/Edge type 上存在全文索引,无法删除或修改 Tag/Edge type。 -- 一个Tag/Edge type只能有一个全文索引。 +- 一个 Tag/Edge type 只能有一个全文索引。 - 属性的类型必须为`String`。 -- 全文索引不支持多个Tag/Edge type的搜索。 +- 全文索引不支持多个 Tag/Edge type 的搜索。 - 不支持排序全文搜索的返回结果,而是按照数据插入的顺序返回。 - 全文索引不支持搜索属性值为`NULL`的属性。 -- 不支持修改Elasticsearch索引。 +- 不支持修改 Elasticsearch 索引。 - 不支持管道符。 @@ -30,10 +30,10 @@ - 全文索引不会与图空间一起删除。 -- 确保同时启动了Elasticsearch集群和Nebula Graph,否则可能导致Elasticsearch集群写入的数据不完整。 +- 确保同时启动了 Elasticsearch 集群和 Nebula Graph,否则可能导致 Elasticsearch 集群写入的数据不完整。 -- 在点或边的属性值中不要包含`'`或 `\`,否则会导致Elasticsearch集群存储时报错。 +- 在点或边的属性值中不要包含`'`或 `\`,否则会导致 Elasticsearch 集群存储时报错。 -- 从写入Nebula Graph,到写入listener,再到写入 Elasticsearch 并创建索引可能需要一段时间。如果访问全文索引时返回未找到索引,可等待索引生效(但是,该等待时间未知,也无返回码检查)。 +- 从写入 Nebula Graph,到写入 listener,再到写入 Elasticsearch 并创建索引可能需要一段时间。如果访问全文索引时返回未找到索引,可等待索引生效(但是,该等待时间未知,也无返回码检查)。 -- 使用K8s方式部署的Nebula Graph集群不支持全文索引。 +- 使用 K8s 方式部署的 Nebula Graph 集群不支持全文索引。 diff --git a/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md b/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md index 85e0053f612..594fbc40f05 100644 --- a/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md +++ b/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md @@ -1,16 +1,16 @@ # 部署全文索引 -Nebula Graph的全文索引是基于[Elasticsearch](https://en.wikipedia.org/wiki/Elasticsearch)实现,这意味着用户可以使用Elasticsearch全文查询语言来检索想要的内容。全文索引由内置的进程管理,当listener集群和Elasticsearch集群部署后,内置的进程只能为数据类型为定长字符串或变长字符串的属性创建全文索引。 +Nebula Graph 的全文索引是基于 [Elasticsearch](https://en.wikipedia.org/wiki/Elasticsearch) 实现,这意味着用户可以使用 Elasticsearch 全文查询语言来检索想要的内容。全文索引由内置的进程管理,当 listener 集群和 Elasticsearch 集群部署后,内置的进程只能为数据类型为定长字符串或变长字符串的属性创建全文索引。 ## 注意事项 使用全文索引前,请确认已经了解全文索引的[使用限制](../../4.deployment-and-installation/6.deploy-text-based-index/1.text-based-index-restrictions.md)。 -## 部署Elasticsearch集群 +## 部署 Elasticsearch 集群 -部署Elasticsearch集群请参见[Kubernetes安装Elasticsearch](https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-deploy-elasticsearch.html)或[单机安装Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/7.15/targz.html)。 +部署 Elasticsearch 集群请参见 [Kubernetes 安装 Elasticsearch](https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-deploy-elasticsearch.html) 或[单机安装 Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/7.15/targz.html)。 -当Elasticsearch集群启动时,请添加Nebula Graph全文索引的模板文件。关于索引模板的说明请参见[Elasticsearch官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-templates.html)。 +当 Elasticsearch 集群启动时,请添加 Nebula Graph 全文索引的模板文件。关于索引模板的说明请参见 [Elasticsearch 官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-templates.html)。 以下面的模板为例: @@ -68,16 +68,16 @@ curl -H "Content-Type: application/json; charset=utf-8" -XPUT http://127.0.0.1:9 }' ``` -用户可以配置Elasticsearch来满足业务需求,如果需要定制Elasticsearch,请参见[Elasticsearch官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html)。 +用户可以配置 Elasticsearch 来满足业务需求,如果需要定制 Elasticsearch,请参见 [Elasticsearch 官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html)。 ## 登录文本搜索客户端 -部署Elasticsearch集群之后,可以使用`SIGN IN`语句登录Elasticsearch客户端。必须使用Elasticsearch配置文件中的IP地址和端口才能正常连接,同时登录多个客户端,请在多个`elastic_ip:port`之间用英文逗号(,)分隔。 +部署 Elasticsearch 集群之后,可以使用`SIGN IN`语句登录 Elasticsearch 客户端。必须使用 Elasticsearch 配置文件中的 IP 地址和端口才能正常连接,同时登录多个客户端,请在多个`elastic_ip:port`之间用英文逗号(,)分隔。 ### 语法 ```ngql -SIGN IN TEXT SERVICE [( [,, ]), (), ...]; +SIGN IN TEXT SERVICE [( [,"", ""]), (), ...]; ``` ### 示例 @@ -88,7 +88,7 @@ nebula> SIGN IN TEXT SERVICE (127.0.0.1:9200); !!! Note - Elasticsearch默认没有用户名和密码,如果设置了用户名和密码,请在`SIGN IN`语句中指定。 + Elasticsearch 默认没有用户名和密码,如果设置了用户名和密码,请在`SIGN IN`语句中指定。 ## 显示文本搜索客户端 @@ -108,8 +108,6 @@ nebula> SHOW TEXT SEARCH CLIENTS; | Host | Port | +-------------+------+ | "127.0.0.1" | 9200 | -| "127.0.0.1" | 9200 | -| "127.0.0.1" | 9200 | +-------------+------+ ``` diff --git a/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md b/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md index aa0771c34cc..53bb92e2ac1 100644 --- a/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md +++ b/docs-2.0/4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md @@ -1,58 +1,58 @@ -# 部署Raft listener +# 部署 Raft listener -全文索引的数据是异步写入Elasticsearch集群的。流程是通过Storage服务的 Raft listener(简称listener)这个单独部署的进程,从Storage服务读取数据,然后将它们写入Elasticsearch集群。 +全文索引的数据是异步写入 Elasticsearch 集群的。流程是通过 Storage 服务的 Raft listener(简称 listener)这个单独部署的进程,从 Storage 服务读取数据,然后将它们写入 Elasticsearch 集群。 ## 前提条件 - 已经了解全文索引的[使用限制](../../4.deployment-and-installation/6.deploy-text-based-index/1.text-based-index-restrictions.md)。 -- 已经[部署Nebula Graph集群](../2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md)。 +- 已经[部署 Nebula Graph 集群](../2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md)。 -- 完成[部署Elasticsearch集群](./2.deploy-es.md)。 +- 完成[部署 Elasticsearch 集群](./2.deploy-es.md)。 -- 准备一台或者多台额外的服务器,来部署Raft listener。 +- 准备一台或者多台额外的服务器,来部署 Raft listener。 ## 注意事项 -- 请保证Nebula 各组件(Metad、Storaged、Graphd、listener)有相同的版本。 +- 请保证 Nebula 各组件(Metad、Storaged、Graphd、listener)有相同的版本。 - 只能为一个图空间“一次性添加所有的 listener 机器”。尝试向已经存在有 listener 的图空间再添加新 listener 会失败。因此,需在一个命令语句里完整地添加全部的 listener。 ## 部署流程 -### 第一步:安装Storage服务 +### 第一步:安装 Storage 服务 -listener进程与storaged进程使用相同的二进制文件,但是二者配置文件不同,进程使用端口也不同,可以在所有需要部署listener的服务器上都安装Nebula Graph,但是仅使用Storage服务。详情请参见[使用RPM或DEB安装包安装Nebula Graph](../2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)。 +listener 进程与 storaged 进程使用相同的二进制文件,但是二者配置文件不同,进程使用端口也不同,可以在所有需要部署 listener 的服务器上都安装 Nebula Graph,但是仅使用 Storage 服务。详情请参见[使用 RPM 或 DEB 安装包安装 Nebula Graph](../2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)。 -### 第二步:准备listener的配置文件 +### 第二步:准备 listener 的配置文件 -用户必须在需要部署listener的机器上准备对应的配置文件,文件名称必须为`nebula-storaged-listener.conf`,并保存在安装路径下的`etc`目录内。用户可以参考提供的[模板](https://github.com/vesoft-inc/nebula/blob/master/conf/nebula-storaged-listener.conf.production)。注意去掉文件后缀`.production`。 +用户必须在需要部署 listener 的机器上准备对应的配置文件,文件名称必须为`nebula-storaged-listener.conf`,并保存在安装路径下的`etc`目录内。用户可以参考提供的[模板](https://github.com/vesoft-inc/nebula/blob/master/conf/nebula-storaged-listener.conf.production)。注意去掉文件后缀`.production`。 -大部分配置与[Storage服务](../../5.configurations-and-logs/1.configurations/4.storage-config.md)的配置文件相同,本文仅介绍差异部分。 +大部分配置与 [Storage 服务](../../5.configurations-and-logs/1.configurations/4.storage-config.md)的配置文件相同,本文仅介绍差异部分。 | 名称 | 预设值 | 说明 | | :----------- | :----------------------- | :------------------| | `daemonize` | `true` | 是否启动守护进程。 | -| `pid_file` | `pids_listener/nebula-storaged.pid` | 记录进程ID的文件。 | -| `meta_server_addrs` | - | 全部Meta服务的IP地址和端口。多个Meta服务用英文逗号(,)分隔。 | -| `local_ip` | - | listener服务的本地IP地址。 | -| `port` | - | listener服务的RPC守护进程监听端口。 | -| `heartbeat_interval_secs` | `10` | Meta服务的心跳间隔。单位:秒(s)。 | -| `listener_path` | `data/listener` | listener的WAL目录。只允许使用一个目录。 | +| `pid_file` | `pids_listener/nebula-storaged.pid` | 记录进程 ID 的文件。 | +| `meta_server_addrs` | - | 全部 Meta 服务的 IP 地址和端口。多个 Meta 服务用英文逗号(,)分隔。 | +| `local_ip` | - | listener 服务的本地 IP 地址。 | +| `port` | - | listener 服务的 RPC 守护进程监听端口。 | +| `heartbeat_interval_secs` | `10` | Meta 服务的心跳间隔。单位:秒(s)。 | +| `listener_path` | `data/listener` | listener 的 WAL 目录。只允许使用一个目录。 | | `data_path` | `data` | 出于兼容性考虑,可以忽略此参数。填充一个默认值`data`。 | | `part_man_type` | `memory` | 部件管理器类型,可选值为`memory`和`meta`。 | | `rocksdb_batch_size` | `4096` | 批处理操作的默认保留字节。 | -| `rocksdb_block_cache` | `4` | BlockBasedTable的默认块缓存大小。单位:兆字节(MB)。 | +| `rocksdb_block_cache` | `4` | BlockBasedTable 的默认块缓存大小。单位:兆字节(MB)。 | | `engine_type` | `rocksdb` | 存储引擎类型,例如`rocksdb`、`memory`等。 | | `part_type` | `simple`| 部件类型,例如`simple`、`consensus`等。 | !!! Note - 在配置文件中请使用真实的(listener机器)IP地址替换`127.0.0.1`。 + 在配置文件中请使用真实的(listener 机器)IP 地址替换`127.0.0.1`。 -### 第三步:启动listener +### 第三步:启动 listener -执行如下命令启动启动listener: +执行如下命令启动启动 listener: ```bash ./bin/nebula-storaged --flagfile /nebula-storaged-listener.conf @@ -62,7 +62,7 @@ listener进程与storaged进程使用相同的二进制文件,但是二者配 ### 第四步:添加 listener 到 Nebula Graph 集群 -[用命令行连接到Nebula Graph](../../2.quick-start/3.connect-to-nebula-graph.md),然后执行[`USE `](../../3.ngql-guide/9.space-statements/2.use-space.md)进入需要创建全文索引的图空间。然后执行如下命令添加 listener: +[用命令行连接到 Nebula Graph](../../2.quick-start/3.connect-to-nebula-graph.md),然后执行 [`USE `](../../3.ngql-guide/9.space-statements/2.use-space.md) 进入需要创建全文索引的图空间。然后执行如下命令添加 listener: ```ngql ADD LISTENER ELASTICSEARCH [,, ...] @@ -70,7 +70,7 @@ ADD LISTENER ELASTICSEARCH [,, ...] !!! warning - listener 必须使用真实的IP地址。 + listener 必须使用真实的 IP 地址。 请在一个语句里完整地添加所有 listener。例如: @@ -95,9 +95,9 @@ nebula> SHOW LISTENER; +--------+-----------------+-----------------------+----------+ ``` -## 删除listener +## 删除 listener -执行`REMOVE LISTENER ELASTICSEARCH`语句可以删除图空间的所有listener。 +执行`REMOVE LISTENER ELASTICSEARCH`语句可以删除图空间的所有 listener。 ### 示例 @@ -107,8 +107,7 @@ nebula> REMOVE LISTENER ELASTICSEARCH; !!! danger - 删除 listener 后,将不能重新添加 listener,因此也无法继续向ES集群同步,文本索引数据将不完整。如果确实需要,只能重新创建图空间。 - + 删除 listener 后,将不能重新添加 listener,因此也无法继续向 ES 集群同步,文本索引数据将不完整。如果确实需要,只能重新创建图空间。 ## 下一步 diff --git a/docs-2.0/4.deployment-and-installation/connect-to-nebula-graph.md b/docs-2.0/4.deployment-and-installation/connect-to-nebula-graph.md index 1c009ff8414..3032eff894e 100644 --- a/docs-2.0/4.deployment-and-installation/connect-to-nebula-graph.md +++ b/docs-2.0/4.deployment-and-installation/connect-to-nebula-graph.md @@ -1,4 +1,4 @@ -# 连接Nebula Graph服务 +# 连接 Nebula Graph 服务 {% include "/source_connect-to-nebula-graph.md" %} diff --git a/docs-2.0/4.deployment-and-installation/deploy-license.md b/docs-2.0/4.deployment-and-installation/deploy-license.md new file mode 100644 index 00000000000..4d993cd1dbe --- /dev/null +++ b/docs-2.0/4.deployment-and-installation/deploy-license.md @@ -0,0 +1,71 @@ +# 设置企业版 License + +Nebula Graph 企业版需要用户设置 License 才可以正常启动并使用企业版功能,本文介绍如何设置企业版的 License 文件。 + +!!! enterpriseonly + + License 是为企业版用户提供的软件授权证书,企业版用户可以发送邮件至`inquiry@vesoft.com`申请 License 文件。 + +## 注意事项 + +- 没有设置 License 时,Nebula Graph 企业版无法启动。 + +- 请勿修改 License 文件,否则会导致 License 失效。 + +- License 快过期时,请及时发送邮件至`inquiry@vesoft.com`申请续期。 + +- License 的过期缓冲为 3 天: + + - 过期 7 天前和过期当天,服务启动时会打印日志进行提醒。 + + - 过期后仍可继续使用 3 天。 + + - 过期 3 天后,服务无法启动,并会打印日志进行提醒。 + +## License 说明 + +用户可以用`cat`等命令查看 License 文件(`nebula.license`)内容,示例文件内容如下: + +```bash +----------License Content Start---------- +{ + "vendor": "Vesoft_Inc", + "organization": "doc", + "issuedDate": "2021-11-07T16:00:00.000Z", + "expirationDate": "2021-11-30T15:59:59.000Z", + "product": "nebula_graph", + "version": ">2.6.1", + "licenseType": "enterprise" +} +----------License Content End---------- + +----------License Key Start---------- +cofFcOxxxxxxxxxxxxxhnZgaxrQ== +----------License Key End---------- +``` + +License 文件包含生效时间、过期时间等信息。说明如下。 + +|参数|说明| +|:---|:---| +|`vendor`|发放渠道。| +|`organization`|用户名称。| +|`issuedDate`|License 生效时间。| +|`expirationDate`|License 过期时间。| +|`product`|产品类型。Nebula Graph 的产品类型为`nebula_graph`。| +|`version`|版本支持的信息。| +|`licenseType`|License 类型。包括`enterprise`、`samll_bussiness`、`pro`、`individual`。预留参数。| + +## 设置 License + +1. 发送邮件至`inquiry@vesoft.com`申请 Nebula Graph 企业版安装包。 + +2. 安装 Nebula Graph 企业版。安装方式与社区版相同,请参见[使用 RPM 或 DEB 包安装 Nebula Graph](2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)。 + +3. 发送邮件至`inquiry@vesoft.com`申请 License 文件`nebula.license`。 + +4. 将 License 文件上传到所有包含 Meta 服务的机器上,路径为每个 Meta 服务安装目录的`share/resources/`内。 + + !!! note + + 周边工具的 License 文件上传位置,请参见[具体周边工具](../20.appendix/6.eco-tool-version.md)的说明文档。 diff --git a/docs-2.0/4.deployment-and-installation/manage-service.md b/docs-2.0/4.deployment-and-installation/manage-service.md index c6474392a25..e5dc5ea6f52 100644 --- a/docs-2.0/4.deployment-and-installation/manage-service.md +++ b/docs-2.0/4.deployment-and-installation/manage-service.md @@ -1,4 +1,4 @@ -# 管理Nebula Graph服务 +# 管理 Nebula Graph 服务 {% include "/source_manage-service.md" %} diff --git a/docs-2.0/5.configurations-and-logs/1.configurations/1.configurations.md b/docs-2.0/5.configurations-and-logs/1.configurations/1.configurations.md index e625dd9634c..16e41025397 100644 --- a/docs-2.0/5.configurations-and-logs/1.configurations/1.configurations.md +++ b/docs-2.0/5.configurations-and-logs/1.configurations/1.configurations.md @@ -1,6 +1,6 @@ # 配置管理 -Nebula Graph基于[gflags](https://gflags.github.io/gflags/)库打造了系统配置,多数配置项都是其中的flags。Nebula Graph服务启动时,默认会从[配置文件](#_4)中获取配置信息,文件中没有的配置项应用默认值。 +Nebula Graph 基于 [gflags](https://gflags.github.io/gflags/) 库打造了系统配置,多数配置项都是其中的 flags。Nebula Graph 服务启动时,默认会从[配置文件](#_4) 中获取配置信息,文件中没有的配置项应用默认值。 !!! enterpriseonly @@ -8,12 +8,12 @@ Nebula Graph基于[gflags](https://gflags.github.io/gflags/)库打造了系统 !!! note - * 由于配置项数多且可能随着Nebula Graph的开发发生变化,文档不会介绍所有配置项。按下文说明可在命令行获取配置项的详细说明。 + * 由于配置项数多且可能随着 Nebula Graph 的开发发生变化,文档不会介绍所有配置项。按下文说明可在命令行获取配置项的详细说明。 * 不建议修改文档未介绍的配置项,除非已经熟悉源代码并完全了解配置项的作用。 !!! compatibility "历史版本兼容性" - 1.x版本的文档提供了使用CONFIGS命令修改缓存中配置的方法,但在生产环境中使用该方法容易导致集群配置与本地配置文件不一致。因此,2.x版本的文档中将不再介绍CONFIGS命令的使用方法。 + 1.x 版本的文档提供了使用 CONFIGS 命令修改缓存中配置的方法,但在生产环境中使用该方法容易导致集群配置与本地配置文件不一致。因此,2.x 版本的文档中将不再介绍 CONFIGS 命令的使用方法。 ## 查看配置项列表与说明 @@ -26,67 +26,67 @@ Nebula Graph基于[gflags](https://gflags.github.io/gflags/)库打造了系统 例如: ```bash -# 获取Meta配置项的帮助信息 +# 获取 Meta 配置项的帮助信息 $ /usr/local/nebula/bin/nebula-metad --help -# 获取Graph配置项的帮助信息 +# 获取 Graph 配置项的帮助信息 $ /usr/local/nebula/bin/nebula-graphd --help -# 获取Storage配置项的帮助信息 +# 获取 Storage 配置项的帮助信息 $ /usr/local/nebula/bin/nebula-storaged --help ``` -以上示例使用了二进制文件的默认存储路径`/usr/local/nebula/bin/`。如果修改了Nebula Graph安装路径,使用实际路径查询配置项信息。 +以上示例使用了二进制文件的默认存储路径`/usr/local/nebula/bin/`。如果修改了 Nebula Graph 安装路径,使用实际路径查询配置项信息。 ## 查看运行配置 -使用`curl`命令获取运行中的配置项的值,即Nebula Graph的运行配置。 +使用`curl`命令获取运行中的配置项的值,即 Nebula Graph 的运行配置。 !!! compatibility "历史版本兼容性" - Nebula Graph v2.x版本的`curl`命令不兼容v1.x版本。命令和参数都有改变。 + Nebula Graph v2.x 版本的`curl`命令不兼容 v1.x 版本。命令和参数都有改变。 例如: ```bash -# 获取Meta服务的运行配置 +# 获取 Meta 服务的运行配置 curl 127.0.0.1:19559/flags -# 获取Graph服务的运行配置 +# 获取 Graph 服务的运行配置 curl 127.0.0.1:19669/flags -# 获取Storage服务的运行配置 +# 获取 Storage 服务的运行配置 curl 127.0.0.1:19779/flags ``` !!! Note - 实际环境中需使用真实的主机IP地址取代以上示例中的`127.0.0.1`。 + 实际环境中需使用真实的主机 IP 地址取代以上示例中的`127.0.0.1`。 ## 配置文件简介 -Nebula Graph为每个服务都提供了两份初始配置文件`.conf.default`和`.conf.production`,方便用户在不同场景中使用。文件的默认路径为`/usr/local/nebula/etc/`。 +Nebula Graph 为每个服务都提供了两份初始配置文件`.conf.default`和`.conf.production`,方便用户在不同场景中使用。文件的默认路径为`/usr/local/nebula/etc/`。 初始配置文件中的配置值仅供参考,使用时可根据实际需求调整。如需使用初始配置文件,从上述两个文件选择其一,删除后缀`.default`或`.production`使其生效。 !!! caution - 为确保服务的可用性,同类服务的配置需保持一致,本机IP地址`local_ip`除外。例如,一个Nebula Graph集群中部署了3个Storage服务器,3者除IP地址外的其它配置需相同。 + 为确保服务的可用性,同类服务的配置需保持一致,本机 IP 地址`local_ip`除外。例如,一个 Nebula Graph 集群中部署了 3 个 Storage 服务器,3 者除 IP 地址外的其它配置需相同。 下表列出了各服务对应的初始配置文件。 -| Nebula Graph服务 | 初始配置文件 | 配置说明 | +| Nebula Graph 服务 | 初始配置文件 | 配置说明 | | - | - | - | -| Meta | `nebula-metad.conf.default`和`nebula-metad.conf.production` | [Meta服务配置](2.meta-config.md) | -| Graph | `nebula-graphd.conf.default`和`nebula-graphd.conf.production` | [Graph服务配置](3.graph-config.md) | -| Storage | `nebula-storaged.conf.default`和`nebula-storaged.conf.production` | [Storage服务配置](4.storage-config.md) | +| Meta | `nebula-metad.conf.default`和`nebula-metad.conf.production` | [Meta 服务配置](2.meta-config.md) | +| Graph | `nebula-graphd.conf.default`和`nebula-graphd.conf.production` | [Graph 服务配置](3.graph-config.md) | +| Storage | `nebula-storaged.conf.default`和`nebula-storaged.conf.production` | [Storage 服务配置](4.storage-config.md) | -所有服务的初始配置文件中都包含`local_config`参数,预设值为`true`,表示Nebula Graph服务会从其配置文件获取配置并启动。 +所有服务的初始配置文件中都包含`local_config`参数,预设值为`true`,表示 Nebula Graph 服务会从其配置文件获取配置并启动。 !!! caution - 不建议修改`local_config`的值为`false`。修改后Nebula Graph服务启动后会先尝试从Meta服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。 + 不建议修改`local_config`的值为`false`。修改后 Nebula Graph 服务启动后会先尝试从 Meta 服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。 ## 修改配置 -默认情况下,所有Nebula Graph服务从配置文件获取配置。用户可以按照以下步骤修改配置并使其生效: +默认情况下,所有 Nebula Graph 服务从配置文件获取配置。用户可以按照以下步骤修改配置并使其生效: 1. 使用文本编辑器修改目标服务的配置文件并保存。 -2. 选择合适的时间重启**所有**Nebula Graph服务使修改生效。 +2. 选择合适的时间重启**所有** Nebula Graph 服务使修改生效。 diff --git a/docs-2.0/5.configurations-and-logs/1.configurations/2.meta-config.md b/docs-2.0/5.configurations-and-logs/1.configurations/2.meta-config.md index 699b7a02dce..dcfdd6b5c5b 100644 --- a/docs-2.0/5.configurations-and-logs/1.configurations/2.meta-config.md +++ b/docs-2.0/5.configurations-and-logs/1.configurations/2.meta-config.md @@ -1,15 +1,15 @@ -# Meta服务配置 +# Meta 服务配置 -Meta服务提供了两份初始配置文件`nebula-metad.conf.default`和`nebula-metad.conf.production`,方便在不同场景中使用。文件的默认路径为`/usr/local/nebula/etc/`。 +Meta 服务提供了两份初始配置文件`nebula-metad.conf.default`和`nebula-metad.conf.production`,方便在不同场景中使用。文件的默认路径为`/usr/local/nebula/etc/`。 !!! caution - * 不建议修改`local_config`的值为`false`。修改后Nebula Graph服务启动后会先尝试从Meta服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。 + * 不建议修改`local_config`的值为`false`。修改后 Nebula Graph 服务启动后会先尝试从 Meta 服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。 * 不建议修改文档未介绍的配置项,除非已经熟悉源代码并清楚了解配置项作用。 ## 配置文件使用方式 -如需使用初始配置文件,从上述两个文件选择其一,删除后缀`.default`或`.production`,Meta服务才能将其识别为配置文件并从中获取配置信息。 +如需使用初始配置文件,从上述两个文件选择其一,删除后缀`.default`或`.production`,Meta 服务才能将其识别为配置文件并从中获取配置信息。 ## 配置文件参数值说明 @@ -17,25 +17,25 @@ Meta服务提供了两份初始配置文件`nebula-metad.conf.default`和`nebula 如需查看所有的参数及其当前值,参见[配置管理](1.configurations.md)。 -## basics配置 +## basics 配置 | 名称 | 预设值 | 说明 | | :----------- | :----------------------- | :------------------| | `daemonize` | `true` | 是否启动守护进程。 | -| `pid_file` | `pids/nebula-metad.pid` | 记录进程ID的文件。 | -| `timezone_name` | - | 指定Nebula Graph的时区。初始配置文件中未设置该参数,如需使用请手动添加。系统默认值为`UTC+00:00:00`。格式请参见[Specifying the Time Zone with TZ](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html "Click to view the timezone-related content in the GNU C Library manual")。例如,东八区的设置方式为`--timezone_name=UTC+08:00`。 | +| `pid_file` | `pids/nebula-metad.pid` | 记录进程 ID 的文件。 | +| `timezone_name` | - | 指定 Nebula Graph 的时区。初始配置文件中未设置该参数,如需使用请手动添加。系统默认值为`UTC+00:00:00`。格式请参见 [Specifying the Time Zone with TZ](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html "Click to view the timezone-related content in the GNU C Library manual")。例如,东八区的设置方式为`--timezone_name=UTC+08:00`。 | !!! Note - * 在插入[时间类型](../../3.ngql-guide/3.data-types/4.date-and-time.md)的属性值时,Nebula Graph会根据`timezone_name`设置的时区将该时间值(TIMESTAMP类型例外)转换成相应的UTC时间,因此在查询中返回的时间类型属性值为UTC时间。 - * `timezone_name`参数只用于转换Nebula Graph中存储的数据,Nebula Graph进程中其它时区相关数据,例如日志打印的时间等,仍然使用主机系统默认的时区。 + * 在插入[时间类型](../../3.ngql-guide/3.data-types/4.date-and-time.md)的属性值时,Nebula Graph 会根据`timezone_name`设置的时区将该时间值(TIMESTAMP 类型例外)转换成相应的 UTC 时间,因此在查询中返回的时间类型属性值为 UTC 时间。 + * `timezone_name`参数只用于转换 Nebula Graph 中存储的数据,Nebula Graph 进程中其它时区相关数据,例如日志打印的时间等,仍然使用主机系统默认的时区。 -## logging配置 +## logging 配置 | 名称 | 预设值 | 说明 | | :------------- | :------------------------ | :------------------------------------------------ | -| `log_dir` | `logs` | 存放Meta服务日志的目录,建议和数据保存在不同硬盘。 | -| `minloglevel` | `0` | 最小日志级别,即不会记录低于这个级别的日志。可选值为`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph不会记录任何日志。 | +| `log_dir` | `logs` | 存放 Meta 服务日志的目录,建议和数据保存在不同硬盘。 | +| `minloglevel` | `0` | 最小日志级别,即不会记录低于这个级别的日志。可选值为`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph 不会记录任何日志。 | | `v` | `0` | 日志详细级别,值越大,日志记录越详细。可选值为`0`、`1`、`2`、`3`。 | | `logbufsecs` | `0` | 缓冲日志的最大时间,超时后输出到日志文件。`0`表示实时输出。单位:秒。 | |`redirect_stdout`|`true` |是否将标准输出和标准错误重定向到单独的输出文件。 | @@ -43,38 +43,38 @@ Meta服务提供了两份初始配置文件`nebula-metad.conf.default`和`nebula |`stderr_log_file` |`metad-stderr.log` | 标准错误日志文件名称。 | |`stderrthreshold` | `2` | 要复制到标准错误中的最小日志级别(`minloglevel`)。 | -## networking配置 +## networking 配置 | 名称 | 预设值 | 说明 | | :----------------------- | :---------------- | :---------------------------------------------------- | -| `meta_server_addrs` | `127.0.0.1:9559` | 全部Meta服务的IP地址和端口。多个Meta服务用英文逗号(,)分隔。 | -|`local_ip` | `127.0.0.1` | Meta服务的本地IP地址。本地IP地址用于识别nebula-metad进程,如果是分布式集群或需要远程访问,请修改为对应地址。| -| `port` | `9559` | Meta服务的RPC守护进程监听端口。Meta服务对外端口为`9559`,对内端口为`对外端口+1`,即`9560`,Nebula Graph使用内部端口进行多副本间的交互。 | -| `ws_ip` | `0.0.0.0` | HTTP服务的IP地址。 | -| `ws_http_port` | `19559` | HTTP服务的端口。 | -| `ws_h2_port` | `19560` | HTTP2服务的端口。 | -|`ws_storage_http_port`|`19779`| HTTP协议监听Storage服务的端口,需要和Storage服务配置文件中的`ws_http_port`保持一致。| +| `meta_server_addrs` | `127.0.0.1:9559` | 全部 Meta 服务的 IP 地址和端口。多个 Meta 服务用英文逗号(,)分隔。 | +|`local_ip` | `127.0.0.1` | Meta 服务的本地 IP 地址。本地 IP 地址用于识别 nebula-metad 进程,如果是分布式集群或需要远程访问,请修改为对应地址。| +| `port` | `9559` | Meta 服务的 RPC 守护进程监听端口。Meta 服务对外端口为`9559`,对内端口为`对外端口+1`,即`9560`,Nebula Graph 使用内部端口进行多副本间的交互。 | +| `ws_ip` | `0.0.0.0` | HTTP 服务的 IP 地址。 | +| `ws_http_port` | `19559` | HTTP 服务的端口。 | +| `ws_h2_port` | `19560` | HTTP2 服务的端口。 | +|`ws_storage_http_port`|`19779`| HTTP 协议监听 Storage 服务的端口,需要和 Storage 服务配置文件中的`ws_http_port`保持一致。| |`heartbeat_interval_secs` | `10` | 默认心跳间隔。请确保所有服务的`heartbeat_interval_secs`取值相同,否则会导致系统无法正常工作。单位:秒。 | !!! caution - 必须在配置文件中使用真实的IP地址。否则某些情况下`127.0.0.1/0.0.0.0`无法正确解析。 + 必须在配置文件中使用真实的 IP 地址。否则某些情况下`127.0.0.1/0.0.0.0`无法正确解析。 -## storage配置 +## storage 配置 | 名称 | 预设值 | 说明 | | :------------------- | :------------------------ | :------------------------------------------ | -|`data_path`|`data/meta`|meta数据存储路径。| +|`data_path`|`data/meta`|meta 数据存储路径。| -## misc配置 +## misc 配置 | 名称 | 预设值 | 说明 | | :------------------------- | :-------- | :------------------------ | |`default_parts_num` | `100` | 创建图空间时的默认分片数量。 | |`default_replica_factor` | `1` | 创建图空间时的默认副本数量。 | -## rocksdb options配置 +## rocksdb options 配置 | 名称 | 预设值 | 说明 | | :------------------- | :------------------------ | :------------------------------------------ | -|`rocksdb_wal_sync` |`true` |是否同步RocksDB的WAL日志。| +|`rocksdb_wal_sync` |`true` |是否同步 RocksDB 的 WAL 日志。| diff --git a/docs-2.0/5.configurations-and-logs/1.configurations/3.graph-config.md b/docs-2.0/5.configurations-and-logs/1.configurations/3.graph-config.md index 01fe6993775..e62918eb61f 100644 --- a/docs-2.0/5.configurations-and-logs/1.configurations/3.graph-config.md +++ b/docs-2.0/5.configurations-and-logs/1.configurations/3.graph-config.md @@ -1,15 +1,15 @@ -# Graph服务配置 +# Graph 服务配置 -Graph服务提供了两份初始配置文件`nebula-graphd.conf.default`和`nebula-graphd.conf.production`,方便在不同场景中使用。文件的默认路径为`/usr/local/nebula/etc/`。 +Graph 服务提供了两份初始配置文件`nebula-graphd.conf.default`和`nebula-graphd.conf.production`,方便在不同场景中使用。文件的默认路径为`/usr/local/nebula/etc/`。 !!! caution - * 不建议修改`local_config`的值为`false`。修改后Nebula Graph服务启动后会先尝试从Meta服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。 + * 不建议修改`local_config`的值为`false`。修改后 Nebula Graph 服务启动后会先尝试从 Meta 服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。 * 不建议修改文档未介绍的配置项,除非已经熟悉源代码并完全了解配置项的作用。 ## 配置文件使用方式 -如需使用初始配置文件,从上述两个文件选择其一,删除后缀`.default`或`.production`,Meta服务才能将其识别为配置文件并从中获取配置信息。 +如需使用初始配置文件,从上述两个文件选择其一,删除后缀`.default`或`.production`,Meta 服务才能将其识别为配置文件并从中获取配置信息。 ## 配置文件参数值说明 @@ -17,27 +17,27 @@ Graph服务提供了两份初始配置文件`nebula-graphd.conf.default`和`nebu 如需查看所有的参数及其当前值,参见[配置管理](1.configurations.md)。 -## basics配置 +## basics 配置 | 名称 | 预设值 | 说明 | | ----------------- | ----------------------- | ------------------| | `daemonize` | `true` | 是否启动守护进程。 | -| `pid_file` | `pids/nebula-graphd.pid`| 记录进程ID的文件。 | +| `pid_file` | `pids/nebula-graphd.pid`| 记录进程 ID 的文件。 | |`enable_optimizer` |`true` | 是否启用优化器。| -| `timezone_name` | - | 指定Nebula Graph的时区。初始配置文件中未设置该参数,使用需手动添加。系统默认值为`UTC+00:00:00`。格式请参见[Specifying the Time Zone with TZ](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html "Click to view the timezone-related content in the GNU C Library manual")。例如,东八区的设置方式为`--timezone_name=UTC+08:00`。 | +| `timezone_name` | - | 指定 Nebula Graph 的时区。初始配置文件中未设置该参数,使用需手动添加。系统默认值为`UTC+00:00:00`。格式请参见 [Specifying the Time Zone with TZ](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html "Click to view the timezone-related content in the GNU C Library manual")。例如,东八区的设置方式为`--timezone_name=UTC+08:00`。 | | `local_config` | `true` | 是否从配置文件获取配置信息。 | !!! Note - * 在插入[时间类型](../../3.ngql-guide/3.data-types/4.date-and-time.md)的属性值时,Nebula Graph会根据`timezone_name`设置的时区将该时间值(TIMESTAMP类型例外)转换成相应的UTC时间,因此在查询中返回的时间类型属性值为UTC时间。 - * `timezone_name`参数只用于转换Nebula Graph中存储的数据,Nebula Graph进程中其它时区相关数据,例如日志打印的时间等,仍然使用主机系统默认的时区。 + * 在插入[时间类型](../../3.ngql-guide/3.data-types/4.date-and-time.md) 的属性值时,Nebula Graph 会根据`timezone_name`设置的时区将该时间值(TIMESTAMP 类型例外)转换成相应的 UTC 时间,因此在查询中返回的时间类型属性值为 UTC 时间。 + * `timezone_name`参数只用于转换 Nebula Graph 中存储的数据,Nebula Graph 进程中其它时区相关数据,例如日志打印的时间等,仍然使用主机系统默认的时区。 -## logging配置 +## logging 配置 | 名称 | 预设值 | 说明 | | ------------- | ------------------------ | ------------------------------------------------ | -| `log_dir` | `logs` | 存放Graph服务日志的目录,建议和数据保存在不同硬盘。 | -| `minloglevel` | `0` | 最小日志级别,即不会记录低于这个级别的日志。可选值为`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph不会记录任何日志。 | +| `log_dir` | `logs` | 存放 Graph 服务日志的目录,建议和数据保存在不同硬盘。 | +| `minloglevel` | `0` | 最小日志级别,即不会记录低于这个级别的日志。可选值为`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph 不会记录任何日志。 | | `v` | `0` | 日志详细级别,值越大,日志记录越详细。可选值为`0`、`1`、`2`、`3`。 | | `logbufsecs` | `0` | 缓冲日志的最大时间,超时后输出到日志文件。`0`表示实时输出。单位:秒。 | |`redirect_stdout`|`true` |是否将标准输出和标准错误重定向到单独的输出文件。 | @@ -45,68 +45,68 @@ Graph服务提供了两份初始配置文件`nebula-graphd.conf.default`和`nebu |`stderr_log_file` |`graphd-stderr.log` | 标准错误日志文件名称。 | |`stderrthreshold` | `2` | 要复制到标准错误中的最小日志级别(`minloglevel`)。 | -## query配置 +## query 配置 | 名称 | 预设值 | 说明 | | ------------------- | ------------------------ | ------------------------------------------ | |`accept_partial_success` |`false` |是否将部分成功视为错误。此配置仅适用于只读请求,写请求总是将部分成功视为错误。| -|`session_reclaim_interval_secs`|`10`| 将Session信息发送给Meta服务的间隔。单位:秒。| -|`max_allowed_query_size`|`4194304`|最大查询语句长度。单位:字节。默认为`4194304`,即4MB。| +|`session_reclaim_interval_secs`|`10`| 将 Session 信息发送给 Meta 服务的间隔。单位:秒。| +|`max_allowed_query_size`|`4194304`|最大查询语句长度。单位:字节。默认为`4194304`,即 4MB。| -## networking配置 +## networking 配置 | 名称 | 预设值 | 说明 | | ----------------------- | ---------------- | ---------------------------------------------------- | -| `meta_server_addrs` | `127.0.0.1:9559` | 全部Meta服务的IP地址和端口。多个Meta服务用英文逗号(,)分隔。 | -|`local_ip` | `127.0.0.1` | Graph服务的本地IP地址。本地IP地址用于识别nebula-graphd进程,如果是分布式集群或需要远程访问,请修改为对应地址。| +| `meta_server_addrs` | `127.0.0.1:9559` | 全部 Meta 服务的 IP 地址和端口。多个 Meta 服务用英文逗号(,)分隔。 | +|`local_ip` | `127.0.0.1` | Graph 服务的本地 IP 地址。本地 IP 地址用于识别 nebula-graphd 进程,如果是分布式集群或需要远程访问,请修改为对应地址。| |`listen_netdev` |`any` |监听的网络设备。 | -| `port` | `9669` | Graph服务的RPC守护进程监听端口。 | -|`reuse_port` |`false` | 是否启用SO_REUSEPORT。 | -|`listen_backlog` |`1024` | socket监听的连接队列最大长度,调整本参数需要同时调整`net.core.somaxconn`。 | +| `port` | `9669` | Graph 服务的 RPC 守护进程监听端口。 | +|`reuse_port` |`false` | 是否启用 SO_REUSEPORT。 | +|`listen_backlog` |`1024` | socket 监听的连接队列最大长度,调整本参数需要同时调整`net.core.somaxconn`。 | |`client_idle_timeout_secs` |`0` | 空闲连接的超时时间。`0`表示永不超时。单位:秒。 | |`session_idle_timeout_secs` |`0` | 空闲会话的超时时间。`0`表示永不超时。单位:秒。 | |`num_accept_threads` |`1` | 接受传入连接的线程数。 | -|`num_netio_threads` |`0` | 网络IO线程数。`0`表示CPU核数。 | -|`num_worker_threads` |`0` | 执行用户查询的线程数。`0`表示CPU核数。 | -| `ws_ip` | `0.0.0.0` | HTTP服务的IP地址。 | -| `ws_http_port` | `19669` | HTTP服务的端口。 | -| `ws_h2_port` | `19670` | HTTP2服务的端口。 | +|`num_netio_threads` |`0` | 网络 IO 线程数。`0`表示 CPU 核数。 | +|`num_worker_threads` |`0` | 执行用户查询的线程数。`0`表示 CPU 核数。 | +| `ws_ip` | `0.0.0.0` | HTTP 服务的 IP 地址。 | +| `ws_http_port` | `19669` | HTTP 服务的端口。 | +| `ws_h2_port` | `19670` | HTTP2 服务的端口。 | |`heartbeat_interval_secs` | `10` | 默认心跳间隔。请确保所有服务的`heartbeat_interval_secs`取值相同,否则会导致系统无法正常工作。单位:秒。 | -|`storage_client_timeout_ms`|-| Graph服务与Storage服务的RPC连接超时时间。初始配置文件中未设置该参数,使用需手动添加。默认值为`60000`毫秒。| -|`ws_meta_http_port`|`19559`|HTTP协议监听Meta服务的端口,需要和Meta服务配置文件中的`ws_http_port`保持一致。| +|`storage_client_timeout_ms`|-| Graph 服务与 Storage 服务的 RPC 连接超时时间。初始配置文件中未设置该参数,使用需手动添加。默认值为`60000`毫秒。| +|`ws_meta_http_port`|`19559`|HTTP 协议监听 Meta 服务的端口,需要和 Meta 服务配置文件中的`ws_http_port`保持一致。| !!! caution - 必须在配置文件中使用真实的IP地址。否则某些情况下`127.0.0.1/0.0.0.0`无法正确解析。 + 必须在配置文件中使用真实的 IP 地址。否则某些情况下`127.0.0.1/0.0.0.0`无法正确解析。 -## charset and collate配置 +## charset and collate 配置 | 名称 | 预设值 | 说明 | | ------------------- | ---------------- | ------------------------------------------ | | `default_charset` | `utf8` | 创建图空间时的默认字符集。 | | `default_collate` | `utf8_bin` | 创建图空间时的默认排序规则。 | -## authorization配置 +## authorization 配置 | 名称 | 预设值 | 说明 | | ------------------- | ---------------- | ------------------------------------------ | |`enable_authorize` |`false` |用户登录时是否进行身份验证。身份验证详情请参见[身份验证](../../7.data-security/1.authentication/1.authentication.md)。| |`auth_type` |`password` |用户登录的身份验证方式。取值为`password`、`ldap`、`cloud`。| -## memory配置 +## memory 配置 | 名称 | 预设值 | 说明 | | ------------------- | ------------------------ | ------------------------------------------ | -| `system_memory_high_watermark_ratio` | - |内存高水位报警机制的触发阈值,默认为`0.9`。系统内存占用率高于该值会触发报警机制,Nebula Graph会停止接受查询。| +| `system_memory_high_watermark_ratio` | - |内存高水位报警机制的触发阈值,默认为`0.9`。系统内存占用率高于该值会触发报警机制,Nebula Graph 会停止接受查询。| -## experimental配置 +## experimental 配置 | 名称 | 预设值 | 说明 | | ------------------- | ------------------------ | ------------------------------------------ | |`enable_experimental_feature`|`false`|实验性功能开关。可选值为`true`和`false`。当前支持的实验性功能请参见下文。| -### experimental功能说明 +### experimental 功能说明 | 名称 | 说明 | | ------------------- | ------------------------------------------| -|TOSS | TOSS(Transaction on Storage Side)功能,用于保证对边进行`INSERT`、`UPDATE`或`UPSERT`操作的最终一致性(因为逻辑上的一条边对应着硬盘上的两个键值对)。暂不支持`DELETE`操作。开启后会增加相关操作的时延约1倍。| +|TOSS | TOSS(Transaction on Storage Side)功能,用于保证对边进行`INSERT`、`UPDATE`或`UPSERT`操作的最终一致性(因为逻辑上的一条边对应着硬盘上的两个键值对)。暂不支持`DELETE`操作。开启后会增加相关操作的时延约 1 倍。| diff --git a/docs-2.0/5.configurations-and-logs/1.configurations/4.storage-config.md b/docs-2.0/5.configurations-and-logs/1.configurations/4.storage-config.md index b457ae9e245..c451f5fb730 100644 --- a/docs-2.0/5.configurations-and-logs/1.configurations/4.storage-config.md +++ b/docs-2.0/5.configurations-and-logs/1.configurations/4.storage-config.md @@ -1,15 +1,15 @@ -# Storage服务配置 +# Storage 服务配置 -Storage服务提供了两份初始配置文件`nebula-storaged.conf.default`和`nebula-storaged.conf.production`,方便在不同场景中使用。文件的默认路径为`/usr/local/nebula/etc/`。 +Storage 服务提供了两份初始配置文件`nebula-storaged.conf.default`和`nebula-storaged.conf.production`,方便在不同场景中使用。文件的默认路径为`/usr/local/nebula/etc/`。 !!! caution - * 不建议修改`local_config`的值为`false`。修改后Nebula Graph服务启动后会先尝试从Meta服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。 + * 不建议修改`local_config`的值为`false`。修改后 Nebula Graph 服务启动后会先尝试从 Meta 服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。 * 不建议修改文档未介绍的配置项,除非已经熟悉源代码并完全了解配置项的作用。 ## 配置文件使用方式 -如需使用初始配置文件,从上述两个文件选择其一,删除后缀`.default`或`.production`,Meta服务才能将其识别为配置文件并从中获取配置信息。 +如需使用初始配置文件,从上述两个文件选择其一,删除后缀`.default`或`.production`,Meta 服务才能将其识别为配置文件并从中获取配置信息。 ## 配置文件参数值说明 @@ -17,30 +17,30 @@ Storage服务提供了两份初始配置文件`nebula-storaged.conf.default`和` !!! Note - Raft Listener的配置和Storage服务配置不同,详情请参见[部署Raft listener](../../4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md)。 + Raft Listener 的配置和 Storage 服务配置不同,详情请参见[部署 Raft listener](../../4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md)。 如需查看所有的参数及其当前值,参见[配置管理](1.configurations.md)。 -## basics配置 +## basics 配置 | 名称 | 预设值 | 说明 | | :----------- | :----------------------- | :------------------| | `daemonize` | `true` | 是否启动守护进程。 | -| `pid_file` | `pids/nebula-storaged.pid` | 记录进程ID的文件。 | -| `timezone_name` | - | 指定Nebula Graph的时区。初始配置文件中未设置该参数,如需使用请手动添加。系统默认值为`UTC+00:00:00`。格式请参见[Specifying the Time Zone with TZ](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html "Click to view the timezone-related content in the GNU C Library manual")。例如,东八区的设置方式为`--timezone_name=UTC+08:00`。 | +| `pid_file` | `pids/nebula-storaged.pid` | 记录进程 ID 的文件。 | +| `timezone_name` | - | 指定 Nebula Graph 的时区。初始配置文件中未设置该参数,如需使用请手动添加。系统默认值为`UTC+00:00:00`。格式请参见 [Specifying the Time Zone with TZ](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html "Click to view the timezone-related content in the GNU C Library manual")。例如,东八区的设置方式为`--timezone_name=UTC+08:00`。 | | `local_config` | `true` | 是否从配置文件获取配置信息。 | !!! Note - * 在插入[时间类型](../../3.ngql-guide/3.data-types/4.date-and-time.md)的属性值时,Nebula Graph会根据`timezone_name`设置的时区将该时间值(TIMESTAMP类型例外)转换成相应的UTC时间,因此在查询中返回的时间类型属性值为UTC时间。 - * `timezone_name`参数只用于转换Nebula Graph中存储的数据,Nebula Graph进程中其它时区相关数据,例如日志打印的时间等,仍然使用主机系统默认的时区。 + * 在插入[时间类型](../../3.ngql-guide/3.data-types/4.date-and-time.md)的属性值时,Nebula Graph 会根据`timezone_name`设置的时区将该时间值(TIMESTAMP 类型例外)转换成相应的 UTC 时间,因此在查询中返回的时间类型属性值为 UTC 时间。 + * `timezone_name`参数只用于转换 Nebula Graph 中存储的数据,Nebula Graph 进程中其它时区相关数据,例如日志打印的时间等,仍然使用主机系统默认的时区。 -## logging配置 +## logging 配置 | 名称 | 预设值 | 说明 | | :------------- | :------------------------ | :------------------------------------------------ | -| `log_dir` | `logs` | 存放Storage服务日志的目录,建议和数据保存在不同硬盘。 | -| `minloglevel` | `0` | 最小日志级别,即不会记录低于这个级别的日志。可选值为`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph不会记录任何日志。 | +| `log_dir` | `logs` | 存放 Storage 服务日志的目录,建议和数据保存在不同硬盘。 | +| `minloglevel` | `0` | 最小日志级别,即不会记录低于这个级别的日志。可选值为`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph 不会记录任何日志。 | | `v` | `0` | 日志详细级别,值越大,日志记录越详细。可选值为`0`、`1`、`2`、`3`。 | | `logbufsecs` | `0` | 缓冲日志的最大时间,超时后输出到日志文件。`0`表示实时输出。单位:秒。 | |`redirect_stdout`|`true` |是否将标准输出和标准错误重定向到单独的输出文件。 | @@ -48,70 +48,70 @@ Storage服务提供了两份初始配置文件`nebula-storaged.conf.default`和` |`stderr_log_file` |`storaged-stderr.log` | 标准错误日志文件名称。 | |`stderrthreshold` | `2` | 要复制到标准错误中的最小日志级别(`minloglevel`)。 | -## networking配置 +## networking 配置 | 名称 | 预设值 | 说明 | | :----------------------- | :---------------- | :---------------------------------------------------- | -| `meta_server_addrs` | `127.0.0.1:9559` | 全部Meta服务的IP地址和端口。多个Meta服务用英文逗号(,)分隔。 | -|`local_ip` | `127.0.0.1` | Storage服务的本地IP地址。本地IP地址用于识别nebula-storaged进程,如果是分布式集群或需要远程访问,请修改为对应地址。| -| `port` | `9779` | Storage服务的RPC守护进程监听端口。Storage服务对外端口为`9779`,对内端口为`9777`、`9778`和`9780`,Nebula Graph使用内部端口进行多副本间的交互。 | -| `ws_ip` | `0.0.0.0` | HTTP服务的IP地址。 | -| `ws_http_port` | `19779` | HTTP服务的端口。 | -| `ws_h2_port` | `19780` | HTTP2服务的端口。 | +| `meta_server_addrs` | `127.0.0.1:9559` | 全部 Meta 服务的 IP 地址和端口。多个 Meta 服务用英文逗号(,)分隔。 | +|`local_ip` | `127.0.0.1` | Storage 服务的本地 IP 地址。本地 IP 地址用于识别 nebula-storaged 进程,如果是分布式集群或需要远程访问,请修改为对应地址。| +| `port` | `9779` | Storage 服务的 RPC 守护进程监听端口。Storage 服务对外端口为`9779`,对内端口为`9777`、`9778`和`9780`,Nebula Graph 使用内部端口进行多副本间的交互。 | +| `ws_ip` | `0.0.0.0` | HTTP 服务的 IP 地址。 | +| `ws_http_port` | `19779` | HTTP 服务的端口。 | +| `ws_h2_port` | `19780` | HTTP2 服务的端口。 | |`heartbeat_interval_secs` | `10` | 默认心跳间隔。请确保所有服务的`heartbeat_interval_secs`取值相同,否则会导致系统无法正常工作。单位:秒。 | !!! caution - 必须在配置文件中使用真实的IP地址。否则某些情况下`127.0.0.1/0.0.0.0`无法正确解析。 + 必须在配置文件中使用真实的 IP 地址。否则某些情况下`127.0.0.1/0.0.0.0`无法正确解析。 -## raft配置 +## raft 配置 | 名称 | 预设值 | 说明 | | :--------------------------- | :-------- | :------------------------ | -|`raft_heartbeat_interval_secs`| `30` | Raft选举超时时间。单位:秒。 | -|`raft_rpc_timeout_ms` | `500` | Raft客户端的远程过程调用(RPC)超时时间。单位:毫秒。 | -|`wal_ttl` | `14400` | Raft WAL的生存时间。单位:秒。 | +|`raft_heartbeat_interval_secs`| `30` | Raft 选举超时时间。单位:秒。 | +|`raft_rpc_timeout_ms` | `500` | Raft 客户端的远程过程调用(RPC)超时时间。单位:毫秒。 | +|`wal_ttl` | `14400` | Raft WAL 的生存时间。单位:秒。 | -## disk配置 +## disk 配置 | 名称 | 预设值 | 说明 | | :--------------------------| :-------------- | :------------------------ | -|`data_path` | `data/storage` | 数据存储路径,多个路径用英文逗号(,)分隔。一个RocksDB实例对应一个路径。 | -|`minimum_reserved_bytes`|`268435456`|每个数据存储路径的剩余空间最小值,低于该值时,可能会导致集群数据写入失败。单位:字节。默认为`1073741824`,即1GB。| +|`data_path` | `data/storage` | 数据存储路径,多个路径用英文逗号(,)分隔。一个 RocksDB 实例对应一个路径。 | +|`minimum_reserved_bytes`|`268435456`|每个数据存储路径的剩余空间最小值,低于该值时,可能会导致集群数据写入失败。单位:字节。默认为`1073741824`,即 1GB。| |`rocksdb_batch_size` | `4096` | 批量操作的缓存大小。单位:字节。 | -|`rocksdb_block_cache` | `4` | BlockBasedTable的默认块缓存大小。单位:兆(MB)。 | +|`rocksdb_block_cache` | `4` | BlockBasedTable 的默认块缓存大小。单位:兆(MB)。 | |`engine_type` | `rocksdb` | 存储引擎类型。 | |`rocksdb_compression` | `lz4` | 压缩算法,可选值为`no`、`snappy`、`lz4`、`lz4hc`、`zlib`、`bzip2`和`zstd`。 | |`rocksdb_compression_per_level` | - | 为不同级别设置不同的压缩算法。 | -|`enable_rocksdb_statistics` | `false` | 是否启用RocksDB的数据统计。 | -|`rocksdb_stats_level` | `kExceptHistogramOrTimers` | RocksDB的数据统计级别。可选值为`kExceptHistogramOrTimers`(禁用计时器统计,跳过柱状图统计)、`kExceptTimers`(跳过计时器统计)、`kExceptDetailedTimers`(收集除互斥锁和压缩花费时间之外的所有统计数据)、`kExceptTimeForMutex`收集除互斥锁花费时间之外的所有统计数据)和`kAll`(收集所有统计数据)。 | -|`enable_rocksdb_prefix_filtering` | `true` | 是否启用prefix bloom filter,启用时可以提升图遍历速度,但是会增加内存消耗。 | -|`enable_rocksdb_whole_key_filtering` | `false` | 是否启用whole key bloom filter。 | -|`rocksdb_filtering_prefix_length` | `12` | 每个key的prefix长度。可选值为`12`(分片ID+点ID)和`16`(分片ID+点ID+TagID/Edge typeID)。单位:字节。 | -|`enable_partitioned_index_filter`|- |设置为`true`可以降低bloom过滤器占用的内存大小,但是在某些随机寻道(random-seek)的情况下,可能会降低读取性能。| +|`enable_rocksdb_statistics` | `false` | 是否启用 RocksDB 的数据统计。 | +|`rocksdb_stats_level` | `kExceptHistogramOrTimers` | RocksDB 的数据统计级别。可选值为`kExceptHistogramOrTimers`(禁用计时器统计,跳过柱状图统计)、`kExceptTimers`(跳过计时器统计)、`kExceptDetailedTimers`(收集除互斥锁和压缩花费时间之外的所有统计数据)、`kExceptTimeForMutex`收集除互斥锁花费时间之外的所有统计数据)和`kAll`(收集所有统计数据)。 | +|`enable_rocksdb_prefix_filtering` | `true` | 是否启用 prefix bloom filter,启用时可以提升图遍历速度,但是会增加内存消耗。 | +|`enable_rocksdb_whole_key_filtering` | `false` | 是否启用 whole key bloom filter。 | +|`rocksdb_filtering_prefix_length` | `12` | 每个 key 的 prefix 长度。可选值为`12`(分片 ID+点 ID)和`16`(分片 ID+点 ID+TagID/Edge typeID)。单位:字节。 | +|`enable_partitioned_index_filter`|- |设置为`true`可以降低 bloom 过滤器占用的内存大小,但是在某些随机寻道(random-seek)的情况下,可能会降低读取性能。| -## misc配置 +## misc 配置 !!! caution - 下表中的`snapshot`与Nebula Graph快照是不同的概念,这里的`snapshot`指Raft同步过程中leader上的存量数据。 + 下表中的`snapshot`与 Nebula Graph 快照是不同的概念,这里的`snapshot`指 Raft 同步过程中 leader 上的存量数据。 | 名称 | 预设值 | 说明 | | :-- | :----- | :--- | -| `snapshot_part_rate_limit` | `8388608` | Raft leader向Raft group中其它成员同步存量数据时的限速。单位:字节/秒。 | -| `snapshot_batch_size` | `1048576` | Raft leader向Raft group中其它成员同步存量数据时每批发送的数据量。单位:字节。 | -| `rebuild_index_part_rate_limit` | `4194304` | 重建索引过程中,Raft leader向Raft group中其它成员同步索引数据时的限速。单位:字节/秒。 | -| `rebuild_index_batch_size` | `1048576` | 重建索引过程中,Raft leader向Raft group中其它成员同步索引数据时每批发送的数据量。单位:字节。 | +| `snapshot_part_rate_limit` | `8388608` | Raft leader 向 Raft group 中其它成员同步存量数据时的限速。单位:字节/秒。 | +| `snapshot_batch_size` | `1048576` | Raft leader 向 Raft group 中其它成员同步存量数据时每批发送的数据量。单位:字节。 | +| `rebuild_index_part_rate_limit` | `4194304` | 重建索引过程中,Raft leader 向 Raft group 中其它成员同步索引数据时的限速。单位:字节/秒。 | +| `rebuild_index_batch_size` | `1048576` | 重建索引过程中,Raft leader 向 Raft group 中其它成员同步索引数据时每批发送的数据量。单位:字节。 | -## rocksdb options配置 +## rocksdb options 配置 | 名称 | 预设值 | 说明 | | :------------------- | :------------------------ | :------------------------------------------ | -|`rocksdb_db_options` |`{}` |RocksDB database选项。| -|`rocksdb_column_family_options` |`{"write_buffer_size":"67108864",`
`"max_write_buffer_number":"4",`
`"max_bytes_for_level_base":"268435456"}` |RocksDB column family选项。| -|`rocksdb_block_based_table_options` |`{"block_size":"8192"}` |RocksDB block based table选项。| +|`rocksdb_db_options` |`{}` |RocksDB database 选项。| +|`rocksdb_column_family_options` |`{"write_buffer_size":"67108864",`
`"max_write_buffer_number":"4",`
`"max_bytes_for_level_base":"268435456"}` |RocksDB column family 选项。| +|`rocksdb_block_based_table_options` |`{"block_size":"8192"}` |RocksDB block based table 选项。| -rocksdb options配置的格式为`{"":""}`,多个选项用英文逗号(,)隔开。 +rocksdb options 配置的格式为`{"":""}`,多个选项用英文逗号(,)隔开。 `rocksdb_db_options`和`rocksdb_column_family_options`支持的选项如下: @@ -153,11 +153,11 @@ rocksdb options配置的格式为`{"":""}`,多个 max_bytes_for_level_multiplier disable_auto_compactions ``` -参数的详细说明请参见[RocksDB官方文档](https://rocksdb.org/)。 +参数的详细说明请参见 [RocksDB 官方文档](https://rocksdb.org/)。 ## 超级节点处理(出入边数量极多的点) -在每个点出发的查询获取到边时,直接截断。目的是避免超级节点的邻边过多,单个查询占用过多的硬盘和内存。截取前 `max_edge_returned_per_vertex` 个边,多余的边不返回。该参数作用于全局,不用于单个space。 +在每个点出发的查询获取到边时,直接截断。目的是避免超级节点的邻边过多,单个查询占用过多的硬盘和内存。截取前 `max_edge_returned_per_vertex` 个边,多余的边不返回。该参数作用于全局,不用于单个 space。 |属性名 | 默认值 | 说明 | | :------------------- | :------------------------ | :------------------------------------------ | diff --git a/docs-2.0/5.configurations-and-logs/1.configurations/6.kernel-config.md b/docs-2.0/5.configurations-and-logs/1.configurations/6.kernel-config.md index 5cb0de056be..908401d47df 100644 --- a/docs-2.0/5.configurations-and-logs/1.configurations/6.kernel-config.md +++ b/docs-2.0/5.configurations-and-logs/1.configurations/6.kernel-config.md @@ -1,12 +1,12 @@ # Linux 内核配置 -本文介绍与Nebula Graph相关的Linux内核配置,并介绍如何修改配置。 +本文介绍与 Nebula Graph 相关的 Linux 内核配置,并介绍如何修改配置。 ## 资源控制 -### ulimit注意事项 +### ulimit 注意事项 -命令`ulimit`用于为当前shell会话设置资源阈值,注意事项如下: +命令`ulimit`用于为当前 shell 会话设置资源阈值,注意事项如下: - `ulimit`所做的更改仅对当前会话或子进程生效。 @@ -17,7 +17,7 @@ - 修改系统级别或调整硬性阈值,请编辑文件`/etc/security/limits.conf`。这种方式需要重新登录才生效。 ### ulimit -c -`ulimit -c`用于限制core文件的大小,建议设置为`unlimited`,命令如下: +`ulimit -c`用于限制 core 文件的大小,建议设置为`unlimited`,命令如下: ```bash ulimit -c unlimited @@ -25,7 +25,7 @@ ulimit -c unlimited ### ulimit -n -`ulimit -n`用于限制打开文件的数量,建议设置为超过10万,例如: +`ulimit -n`用于限制打开文件的数量,建议设置为超过 10 万,例如: ```bash ulimit -n 130000 @@ -35,15 +35,15 @@ ulimit -n 130000 ### vm.swappiness -`vm.swappiness`是触发虚拟内存(swap)的空闲内存百分比。值越大,使用swap的可能性就越大,建议设置为0,表示首先删除页缓存。需要注意的是,0表示**尽量**不使用swap。 +`vm.swappiness`是触发虚拟内存(swap)的空闲内存百分比。值越大,使用 swap 的可能性就越大,建议设置为 0,表示首先删除页缓存。需要注意的是,0 表示**尽量**不使用 swap。 ### vm.min_free_kbytes -`vm.min_free_kbytes`用于设置Linux虚拟机保留的最小空闲千字节数。如果系统内存足够,建议设置较大值。例如物理内存为128 GB,可以将`vm.min_free_kbytes`设置为5 GB。如果值太小,会导致系统无法申请足够的连续物理内存。 +`vm.min_free_kbytes`用于设置 Linux 虚拟机保留的最小空闲千字节数。如果系统内存足够,建议设置较大值。例如物理内存为 128 GB,可以将`vm.min_free_kbytes`设置为 5 GB。如果值太小,会导致系统无法申请足够的连续物理内存。 ### vm.max_map_count -`vm.max_map_count`用于限制单个进程的VMA(虚拟内存区域)数量。默认值为`65530`,对于绝大多数应用程序来说已经足够。如果应用程序因为内存消耗过大而报错,请增大本参数的值。 +`vm.max_map_count`用于限制单个进程的 VMA(虚拟内存区域)数量。默认值为`65530`,对于绝大多数应用程序来说已经足够。如果应用程序因为内存消耗过大而报错,请增大本参数的值。 ### vm.dirty_* @@ -51,7 +51,7 @@ ulimit -n 130000 ### Transparent huge page -为了降低延迟,用户必须关闭THP(transparent huge page)。命令如下: +为了降低延迟,用户必须关闭 THP(transparent huge page)。命令如下: ```bash root# echo never > /sys/kernel/mm/transparent_hugepage/enabled @@ -63,15 +63,15 @@ root# swapoff -a && swapon -a ### net.ipv4.tcp_slow_start_after_idle -`net.ipv4.tcp_slow_start_after_idle`默认值为1,会导致闲置一段时间后拥塞窗口超时,建议设置为`0`,尤其适合大带宽高延迟场景。 +`net.ipv4.tcp_slow_start_after_idle`默认值为 1,会导致闲置一段时间后拥塞窗口超时,建议设置为`0`,尤其适合大带宽高延迟场景。 ### net.core.somaxconn -`net.core.somaxconn`用于限制socket监听的连接队列数量。默认值为`128`。对于有大量突发连接的场景,建议设置为不低于`1024`。 +`net.core.somaxconn`用于限制 socket 监听的连接队列数量。默认值为`128`。对于有大量突发连接的场景,建议设置为不低于`1024`。 ### net.ipv4.tcp_max_syn_backlog -`net.ipv4.tcp_max_syn_backlog`用于限制处于SYN_RECV(半连接)状态的TCP连接数量。默认值为`128`。对于有大量突发连接的场景,建议设置为不低于`1024`。 +`net.ipv4.tcp_max_syn_backlog`用于限制处于 SYN_RECV(半连接)状态的 TCP 连接数量。默认值为`128`。对于有大量突发连接的场景,建议设置为不低于`1024`。 ### net.core.netdev_max_backlog @@ -79,15 +79,15 @@ root# swapoff -a && swapon -a ### net.ipv4.tcp_keepalive_* -`net.ipv4.tcp_keepalive_*`是一系列保持TCP连接存活的参数。对于使用四层透明负载均衡的应用程序,如果空闲连接异常断开,请增大`tcp_keepalive_time`和`tcp_keepalive_intvl`的值。 +`net.ipv4.tcp_keepalive_*`是一系列保持 TCP 连接存活的参数。对于使用四层透明负载均衡的应用程序,如果空闲连接异常断开,请增大`tcp_keepalive_time`和`tcp_keepalive_intvl`的值。 ### net.ipv4.tcp_wmem/rmem -TCP套接字发送/接收缓冲池的最小、最大、默认空间。对于大连接,建议设置为`带宽(GB)*往返时延(ms)`。 +TCP 套接字发送/接收缓冲池的最小、最大、默认空间。对于大连接,建议设置为`带宽 (GB) *往返时延 (ms)`。 ### scheduler -对于SSD设备,建议将`scheduler`设置为`noop`或者`none`,路径为`/sys/block/DEV_NAME/queue/scheduler`。 +对于 SSD 设备,建议将`scheduler`设置为`noop`或者`none`,路径为`/sys/block/DEV_NAME/queue/scheduler`。 ## 其他参数 @@ -97,7 +97,7 @@ TCP套接字发送/接收缓冲池的最小、最大、默认空间。对于大 ## 修改参数 -### sysctl命令 +### sysctl 命令 - `sysctl ` @@ -109,13 +109,8 @@ TCP套接字发送/接收缓冲池的最小、最大、默认空间。对于大 - `sysctl -p []`  - 从指定配置文件里加载Linux系统参数,默认从`/etc/sysctl.conf`加载。 + 从指定配置文件里加载 Linux 系统参数,默认从`/etc/sysctl.conf`加载。 ### prlimit -命令`prlimit`可以获取和设置进程资源的限制,结合`sudo`可以修改硬阈值,例如,`prlimit --nofile=140000 --pid=$$`调整当前进程允许的打开文件的最大数量为`140000`,立即生效,此命令仅支持RedHat 7u或更高版本。 - - - - - +命令`prlimit`可以获取和设置进程资源的限制,结合`sudo`可以修改硬阈值,例如,`prlimit --nofile=140000 --pid=$$`调整当前进程允许的打开文件的最大数量为`140000`,立即生效,此命令仅支持 RedHat 7u 或更高版本。 diff --git a/docs-2.0/5.configurations-and-logs/2.log-management/logs.md b/docs-2.0/5.configurations-and-logs/2.log-management/logs.md index ee650b66036..85d6f3dee34 100644 --- a/docs-2.0/5.configurations-and-logs/2.log-management/logs.md +++ b/docs-2.0/5.configurations-and-logs/2.log-management/logs.md @@ -1,24 +1,24 @@ # 日志配置 -Nebula Graph使用[glog](https://github.com/google/glog)打印日志,使用[gflags](https://gflags.github.io/gflags/)控制日志级别,并在运行时通过HTTP接口动态修改日志级别,方便跟踪问题。 +Nebula Graph 使用 [glog](https://github.com/google/glog) 打印日志,使用 [gflags](https://gflags.github.io/gflags/) 控制日志级别,并在运行时通过 HTTP 接口动态修改日志级别,方便跟踪问题。 ## 日志目录 日志的默认目录为`/usr/local/nebula/logs/`。 -如果在Nebula Graph运行过程中删除日志目录,日志不会继续打印,但是不会影响业务。重启服务可以恢复正常。 +如果在 Nebula Graph 运行过程中删除日志目录,日志不会继续打印,但是不会影响业务。重启服务可以恢复正常。 ## 配置说明 -- `minloglevel`:最小日志级别,即不会记录低于这个级别的日志。可选值为`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph不会记录任何日志。 +- `minloglevel`:最小日志级别,即不会记录低于这个级别的日志。可选值为`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph 不会记录任何日志。 - `v`:日志详细级别,值越大,日志记录越详细。可选值为`0`、`1`、`2`、`3`。 -Meta服务、Graph服务和Storage服务的日志级别可以在各自的配置文件中查看,默认路径为`/usr/local/nebula/etc/`。 +Meta 服务、Graph 服务和 Storage 服务的日志级别可以在各自的配置文件中查看,默认路径为`/usr/local/nebula/etc/`。 ## 查看日志级别 -使用如下命令查看当前所有的gflags参数(包括日志参数): +使用如下命令查看当前所有的 gflags 参数(包括日志参数): ```bash $ curl :/flags @@ -26,18 +26,18 @@ $ curl :/flags |参数|说明| |:---|:---| -|`ws_ip`|HTTP服务的IP地址,可以在配置文件中查看。默认值为`127.0.0.1`。| -|`ws_port`|HTTP服务的端口,可以在配置文件中查看。默认值分别为`19559`(Meta)、`19669`(Graph)`19779`(Storage)。| +|`ws_ip`|HTTP 服务的 IP 地址,可以在配置文件中查看。默认值为`127.0.0.1`。| +|`ws_port`|HTTP 服务的端口,可以在配置文件中查看。默认值分别为`19559`(Meta)、`19669`(Graph)`19779`(Storage)。| 示例如下: -- 查看Meta服务当前的最小日志级别: +- 查看 Meta 服务当前的最小日志级别: ```bash $ curl 127.0.0.1:19559/flags | grep 'minloglevel' ``` -- 查看Storage服务当前的日志详细级别: +- 查看 Storage 服务当前的日志详细级别: ```bash $ curl 127.0.0.1:19779/flags | grep -w 'v' @@ -55,8 +55,8 @@ $ curl -X PUT -H "Content-Type: application/json" -d '{"":[,"": |:---|:---| |`key`|待修改的日志类型,可选值请参见[配置说明](#_3)。| |`value`|日志级别,可选值请参见[配置说明](#_3)。| -|`ws_ip`|HTTP服务的IP地址,可以在配置文件中查看。默认值为`127.0.0.1`。| -|`ws_port`|HTTP服务的端口,可以在配置文件中查看。默认值分别为`19559`(Meta)、`19669`(Graph)`19779`(Storage)。| +|`ws_ip`|HTTP 服务的 IP 地址,可以在配置文件中查看。默认值为`127.0.0.1`。| +|`ws_port`|HTTP 服务的端口,可以在配置文件中查看。默认值分别为`19559`(Meta)、`19669`(Graph)`19779`(Storage)。| 示例如下: @@ -67,7 +67,7 @@ $ curl -X PUT -H "Content-Type: application/json" -d '{"minloglevel":0,"v":3}' " ``` -如果在Nebula Graph运行时修改了日志级别,重启服务后会恢复为配置文件中设置的级别,如果需要永久修改,请修改[配置文件](../1.configurations/1.configurations.md)。 +如果在 Nebula Graph 运行时修改了日志级别,重启服务后会恢复为配置文件中设置的级别,如果需要永久修改,请修改[配置文件](../1.configurations/1.configurations.md)。 ## RocksDB 日志 diff --git a/docs-2.0/6.monitor-and-metrics/1.query-performance-metrics.md b/docs-2.0/6.monitor-and-metrics/1.query-performance-metrics.md index 253d1616761..cd55460bddc 100644 --- a/docs-2.0/6.monitor-and-metrics/1.query-performance-metrics.md +++ b/docs-2.0/6.monitor-and-metrics/1.query-performance-metrics.md @@ -1,18 +1,18 @@ -# 查询Nebula Graph监控指标 +# 查询 Nebula Graph 监控指标 -Nebula Graph支持多种方式查询服务的监控指标,本文将介绍最基础的方式,即通过HTTP端口查询。 +Nebula Graph 支持多种方式查询服务的监控指标,本文将介绍最基础的方式,即通过 HTTP 端口查询。 ## 监控指标说明 -Nebula Graph的每个监控指标都由三个部分组成,中间用英文句号(.)隔开,例如`num_queries.sum.600`。不同的Nebula Graph服务支持查询的监控指标也不同。指标结构的说明如下。 +Nebula Graph 的每个监控指标都由三个部分组成,中间用英文句号(.)隔开,例如`num_queries.sum.600`。不同的 Nebula Graph 服务支持查询的监控指标也不同。指标结构的说明如下。 |类别|示例|说明| |:---|:---|:---| |指标名称|`num_queries`|简单描述指标的含义。| -|统计类型|`sum`|指标统计的方法。当前支持SUM、COUNT、AVG、RATE和P分位数(P75、P95、P99、P99.9)。| -|统计时间|`600`|指标统计的时间范围,当前支持5秒、60秒、600秒和3600秒,分别表示最近5秒、最近1分钟、最近10分钟和最近1小时。| +|统计类型|`sum`|指标统计的方法。当前支持 SUM、COUNT、AVG、RATE 和 P 分位数(P75、P95、P99、P99.9)。| +|统计时间|`600`|指标统计的时间范围,当前支持 5 秒、60 秒、600 秒和 3600 秒,分别表示最近 5 秒、最近 1 分钟、最近 10 分钟和最近 1 小时。| -## 通过HTTP端口查询监控指标 +## 通过 HTTP 端口查询监控指标 ### 语法 @@ -22,20 +22,20 @@ curl -G "http://:/stats?stats= [&format=json]" |选项|说明| |:---|:---| -|`ip`|服务器的IP地址,可以在安装目录内查看配置文件获取。| -|`port`|服务器的HTTP端口,可以在安装目录内查看配置文件获取。默认情况下,Meta服务端口为19559,Graph服务端口为19669,Storage服务端口为19779。| +|`ip`|服务器的 IP 地址,可以在安装目录内查看配置文件获取。| +|`port`|服务器的 HTTP 端口,可以在安装目录内查看配置文件获取。默认情况下,Meta 服务端口为 19559,Graph 服务端口为 19669,Storage 服务端口为 19779。| |`metric_name_list`|监控指标名称,多个监控指标用英文逗号(,)隔开。| -|`&format=json`|将结果以JSON格式返回。| +|`&format=json`|将结果以 JSON 格式返回。| !!! Note - 如果Nebula Graph服务部署在容器中,需要执行`docker-compose ps`命令查看映射到容器外部的端口,然后通过该端口查询。 + 如果 Nebula Graph 服务部署在容器中,需要执行`docker-compose ps`命令查看映射到容器外部的端口,然后通过该端口查询。 ### 示例 - 查询单个监控指标 - 查询Graph服务中,最近10分钟的请求总数。 + 查询 Graph 服务中,最近 10 分钟的请求总数。 ```bash $ curl -G "http://192.168.8.40:19669/stats?stats=num_queries.sum.600" @@ -44,7 +44,7 @@ curl -G "http://:/stats?stats= [&format=json]" - 查询多个监控指标 - 查询Meta服务中,最近1分钟的心跳平均延迟和最近10分钟P99心跳(1%最慢的心跳)的平均延迟。 + 查询 Meta 服务中,最近 1 分钟的心跳平均延迟和最近 10 分钟 P99 心跳(1%最慢的心跳)的平均延迟。 ```bash $ curl -G "http://192.168.8.40:19559/stats?stats=heartbeat_latency_us.avg.60,heartbeat_latency_us.p99.600" @@ -52,9 +52,9 @@ curl -G "http://:/stats?stats= [&format=json]" heartbeat_latency_us.p99.600=985 ``` -- 查询监控指标并以JSON格式返回 +- 查询监控指标并以 JSON 格式返回 - 查询Storage服务中,最近10分钟新增的点数量,并以JSON格式返回结果。 + 查询 Storage 服务中,最近 10 分钟新增的点数量,并以 JSON 格式返回结果。 ```bash $ curl -G "http://192.168.8.40:19779/stats?stats=num_add_vertices.sum.600&format=json" @@ -92,4 +92,3 @@ curl -G "http://:/stats?stats= [&format=json]" num_heartbeats.sum.600=394 num_heartbeats.sum.3600=2364 ``` - diff --git a/docs-2.0/7.data-security/1.authentication/1.authentication.md b/docs-2.0/7.data-security/1.authentication/1.authentication.md index 674ea371e8f..0c0865b9984 100644 --- a/docs-2.0/7.data-security/1.authentication/1.authentication.md +++ b/docs-2.0/7.data-security/1.authentication/1.authentication.md @@ -2,34 +2,34 @@ 身份验证用于将会话映射到特定用户,从而实现访问控制。 -当客户端连接到Nebula Graph时,Nebula Graph会创建一个会话,会话中存储连接的各种信息,如果开启了身份验证,就会将会话映射到对应的用户。 +当客户端连接到 Nebula Graph 时,Nebula Graph 会创建一个会话,会话中存储连接的各种信息,如果开启了身份验证,就会将会话映射到对应的用户。 !!! Note - 默认情况下,身份验证功能是关闭的,用户可以使用root用户名和任意密码连接到Nebula Graph。 + 默认情况下,身份验证功能是关闭的,用户可以使用 root 用户名和任意密码连接到 Nebula Graph。 -Nebula Graph支持两种身份验证方式:本地身份验证和LDAP验证。 +Nebula Graph 支持两种身份验证方式:本地身份验证和 LDAP 验证。 ## 本地身份验证 -本地身份验证是指在服务器本地存储用户名、加密密码,当用户尝试访问Nebula Graph时,将进行身份验证。 +本地身份验证是指在服务器本地存储用户名、加密密码,当用户尝试访问 Nebula Graph 时,将进行身份验证。 ### 启用本地身份验证 1. 编辑配置文件`nebula-graphd.conf`(默认目录为`/usr/local/nebula/etc/`),设置`--enable_authorize=true`并保存退出。 -2. 重启Nebula Graph服务。 +2. 重启 Nebula Graph 服务。 !!! Note - 开启身份验证后,默认的God角色账号为`root`,密码为`nebula`。角色详情请参见[内置角色权限](3.role-list.md)。 + 开启身份验证后,默认的 God 角色账号为`root`,密码为`nebula`。角色详情请参见[内置角色权限](3.role-list.md)。 -## OpenLDAP验证 +## OpenLDAP 验证 -OpenLDAP是轻型目录访问协议(LDAP)的开源实现,可以实现账号集中管理。 +OpenLDAP 是轻型目录访问协议(LDAP)的开源实现,可以实现账号集中管理。 -### 启用OpenLDAP验证 +### 启用 OpenLDAP 验证 !!! Enterpriseonly - 当前仅企业版支持集成OpenLDAP进行身份验证,详情请参见[使用OpenLDAP进行身份验证](4.ldap.md)。 + 当前仅企业版支持集成 OpenLDAP 进行身份验证,详情请参见[使用 OpenLDAP 进行身份验证](4.ldap.md)。 diff --git a/docs-2.0/7.data-security/1.authentication/2.management-user.md b/docs-2.0/7.data-security/1.authentication/2.management-user.md index 04b62ec2d79..a43206057e2 100644 --- a/docs-2.0/7.data-security/1.authentication/2.management-user.md +++ b/docs-2.0/7.data-security/1.authentication/2.management-user.md @@ -1,18 +1,17 @@ # 用户管理 -用户管理是Nebula Graph访问控制中不可或缺的组成部分,本文将介绍用户管理的相关语法。 +用户管理是 Nebula Graph 访问控制中不可或缺的组成部分,本文将介绍用户管理的相关语法。 -开启[身份验证](1.authentication.md)后,用户需要使用已创建的用户才能连接Nebula Graph,而且连接后可以进行的操作也取决于该用户拥有的[角色权限](3.role-list.md)。 +开启[身份验证](1.authentication.md)后,用户需要使用已创建的用户才能连接 Nebula Graph,而且连接后可以进行的操作也取决于该用户拥有的[角色权限](3.role-list.md)。 !!! Note - * 默认情况下,身份验证功能是关闭的,用户可以使用root用户名和任意密码连接到Nebula Graph。 + * 默认情况下,身份验证功能是关闭的,用户可以使用 root 用户名和任意密码连接到 Nebula Graph。 * 修改权限后,对应的用户需要重新登录才能生效。 - ## 创建用户(`CREATE USER`) -执行`CREATE USER`语句可以创建新的Nebula Graph用户。当前仅**God**角色用户(即`root`用户)能够执行`CREATE USER`语句。 +执行`CREATE USER`语句可以创建新的 Nebula Graph 用户。当前仅** God **角色用户(即`root`用户)能够执行`CREATE USER`语句。 - 语法 @@ -28,7 +27,7 @@ ## 授权用户(`GRANT ROLE`) -执行`GRANT ROLE`语句可以将指定图空间的内置角色权限授予用户。当前仅**God**角色用户和**Admin**角色用户能够执行`GRANT ROLE`语句。角色权限的说明,请参见[内置角色权限](3.role-list.md)。 +执行`GRANT ROLE`语句可以将指定图空间的内置角色权限授予用户。当前仅** God **角色用户和** Admin **角色用户能够执行`GRANT ROLE`语句。角色权限的说明,请参见[内置角色权限](3.role-list.md)。 - 语法 @@ -44,7 +43,7 @@ ## 撤销用户权限(`REVOKE ROLE`) -执行`REVOKE ROLE`语句可以撤销用户的指定图空间的内置角色权限。当前仅**God**角色用户和**Admin**角色用户能够执行`REVOKE ROLE`语句。角色权限的说明,请参见[内置角色权限](3.role-list.md)。 +执行`REVOKE ROLE`语句可以撤销用户的指定图空间的内置角色权限。当前仅** God **角色用户和** Admin **角色用户能够执行`REVOKE ROLE`语句。角色权限的说明,请参见[内置角色权限](3.role-list.md)。 - 语法 @@ -97,7 +96,7 @@ ## 修改用户密码(`ALTER USER`) -执行`ALTER USER`语句可以修改用户密码,修改时不需要提供旧密码。当前仅**God**角色用户(即`root`用户)能够执行`ALTER USER`语句。 +执行`ALTER USER`语句可以修改用户密码,修改时不需要提供旧密码。当前仅** God **角色用户(即`root`用户)能够执行`ALTER USER`语句。 - 语法 @@ -113,7 +112,7 @@ ## 删除用户(`DROP USER`) -执行`DROP USER`语句可以删除用户。当前仅**God**角色用户能够执行`DROP USER`语句。 +执行`DROP USER`语句可以删除用户。当前仅** God **角色用户能够执行`DROP USER`语句。 !!! Note @@ -133,7 +132,7 @@ ## 查看用户列表(`SHOW USERS`) -执行`SHOW USERS`语句可以查看用户列表。当前仅**God**角色用户能够执行`SHOW USERS`语句。 +执行`SHOW USERS`语句可以查看用户列表。当前仅** God **角色用户能够执行`SHOW USERS`语句。 - 语法 diff --git a/docs-2.0/7.data-security/1.authentication/3.role-list.md b/docs-2.0/7.data-security/1.authentication/3.role-list.md index 4da1a0fb450..7a40151744c 100644 --- a/docs-2.0/7.data-security/1.authentication/3.role-list.md +++ b/docs-2.0/7.data-security/1.authentication/3.role-list.md @@ -4,47 +4,47 @@ ## 内置角色 -Nebula Graph内置了多种角色,说明如下: +Nebula Graph 内置了多种角色,说明如下: - God - - 初始最高权限角色,拥有**所有操作**的权限。类似于Linux中的`root`和Windows中的`administrator`。 + - 初始最高权限角色,拥有**所有操作**的权限。类似于 Linux 中的`root`和 Windows 中的`administrator`。 - - Meta服务初始化时,会自动创建God角色用户`root`,密码为`nebula`。 + - Meta 服务初始化时,会自动创建 God 角色用户`root`,密码为`nebula`。 !!! caution "注意" 请及时修改`root`用户的密码,保证数据安全。 - - 一个集群只能有一个God角色用户,该用户可以管理集群内所有图空间。 + - 一个集群只能有一个 God 角色用户,该用户可以管理集群内所有图空间。 - - 不支持手动授权God角色,只能使用默认God角色用户`root`。 + - 不支持手动授权 God 角色,只能使用默认 God 角色用户`root`。 - Admin - - 对权限内的图空间拥有Schema和data的**读写**权限。 + - 对权限内的图空间拥有 Schema 和 data 的**读写**权限。 - 可以将权限内的图空间授权给其他用户。 !!! caution "注意" - 只能授权低于ADMIN级别的角色给其他用户。 + 只能授权低于 ADMIN 级别的角色给其他用户。 - DBA - - 对权限内的图空间拥有Schema和data的**读写**权限。 + - 对权限内的图空间拥有 Schema 和 data 的**读写**权限。 - 无法将权限内的图空间授权给其他用户。 - User - - 对权限内的图空间拥有Schema的**只读**权限。 + - 对权限内的图空间拥有 Schema 的**只读**权限。 - - 对权限内的图空间拥有data的**读写**权限。 + - 对权限内的图空间拥有 data 的**读写**权限。 - Guest - - 对权限内的图空间拥有Schema和data的**只读**权限。 + - 对权限内的图空间拥有 Schema 和 data 的**只读**权限。 !!! Note @@ -59,7 +59,7 @@ Nebula Graph内置了多种角色,说明如下: |Read space|Y|Y|Y|Y|Y|`USE`、`DESCRIBE SPACE`| |Write space|Y|||||`CREATE SPACE`、`DROP SPACE`、`CREATE SNAPSHOT`、`DROP SNAPSHOT`、`BALANCE DATA`、`BALANCE DATA STOP`、`BALANCE DATA REMOVE`、`BALANCE LEADER`、`ADMIN`、`CONFIG`、`INGEST`、`DOWNLOAD`、`BUILD TAG INDEX`、`BUILD EDGE INDEX`| |Read schema|Y|Y|Y|Y|Y|`DESCRIBE TAG`、`DESCRIBE EDGE`、`DESCRIBE TAG INDEX`、`DESCRIBE EDGE INDEX`| - |Write schema|Y|Y|Y|||`CREATE TAG`、`ALTER TAG`、`CREATE EDGE`、`ALTER EDGE`、`DROP TAG`、`DROP EDGE`、`CREATE TAG INDEX`、`CREATE EDGE INDEX`、`DROP TAG INDEX`、`DROP EDGE INDEX`| + |Write schema|Y|Y|Y|||`CREATE TAG`、`ALTER TAG`、`CREATE EDGE`、`ALTER EDGE`、`DROP TAG`、`DELETE TAG`、`DROP EDGE`、`CREATE TAG INDEX`、`CREATE EDGE INDEX`、`DROP TAG INDEX`、`DROP EDGE INDEX`| |Write user|Y|||||`CREATE USER`、`DROP USER`、`ALTER USER`| |Write role|Y|Y||||`GRANT`、`REVOKE`| |Read data|Y|Y|Y|Y|Y|`GO`、`SET`、`PIPE`、`MATCH`、`ASSIGNMENT`、`LOOKUP`、`YIELD`、`ORDER BY`、`FETCH VERTICES`、`Find`、`FETCH EDGES`、`FIND PATH`、`LIMIT`、`GROUP BY`、`RETURN`| @@ -69,5 +69,5 @@ Nebula Graph内置了多种角色,说明如下: !!! caution - Show operations为特殊操作,只会在自身权限内执行。例如`SHOW SPACES`,每个角色都可以执行,但是只会返回自身权限内的图空间。 - 只有God角色可以执行`SHOW USERS`和`SHOW SNAPSHOTS`语句。 + Show operations 为特殊操作,只会在自身权限内执行。例如`SHOW SPACES`,每个角色都可以执行,但是只会返回自身权限内的图空间。 + 只有 God 角色可以执行`SHOW USERS`和`SHOW SNAPSHOTS`语句。 diff --git a/docs-2.0/7.data-security/1.authentication/4.ldap.md b/docs-2.0/7.data-security/1.authentication/4.ldap.md index 8b77bb8b81f..8ea8b581d32 100644 --- a/docs-2.0/7.data-security/1.authentication/4.ldap.md +++ b/docs-2.0/7.data-security/1.authentication/4.ldap.md @@ -1,6 +1,6 @@ -# 使用OpenLDAP进行身份验证 +# 使用 OpenLDAP 进行身份验证 -本文介绍如何将Nebula Graph连接到OpenLDAP服务器,使用OpenLDAP中定义的DN(Distinguished Name)和密码进行身份验证。 +本文介绍如何将 Nebula Graph 连接到 OpenLDAP 服务器,使用 OpenLDAP 中定义的 DN(Distinguished Name)和密码进行身份验证。 !!! enterpriseonly @@ -8,31 +8,31 @@ ## 认证方式 -启用OpenLDAP身份验证后,输入用户的账号和密码登录Nebula Graph时,Nebula Graph会在Meta服务中查找登录账号是否存在,如果账号存在,再根据认证方式去OpenLDAP中找到对应的DN,验证密码。 +启用 OpenLDAP 身份验证后,输入用户的账号和密码登录 Nebula Graph 时,Nebula Graph 会在 Meta 服务中查找登录账号是否存在,如果账号存在,再根据认证方式去 OpenLDAP 中找到对应的 DN,验证密码。 -OpenLDAP支持的认证方式有两种:简单绑定认证和搜索绑定认证。 +OpenLDAP 支持的认证方式有两种:简单绑定认证和搜索绑定认证。 ### 简单绑定认证(SimpleBindAuth) -简单绑定认证会根据登录账号和Graph服务配置信息,拼接成OpenLDAP可以识别的DN,然后根据DN和密码,在OpenLDAP上进行验证。 +简单绑定认证会根据登录账号和 Graph 服务配置信息,拼接成 OpenLDAP 可以识别的 DN,然后根据 DN 和密码,在 OpenLDAP 上进行验证。 ### 搜索绑定认证(SearchBindAuth) -搜索绑定认证会读取Graph服务配置信息,查询配置信息中的`uid`和登录账号是否匹配,如果匹配,就读取这个DN,然后用DN和密码,在OpenLDAP上进行验证。 +搜索绑定认证会读取 Graph 服务配置信息,查询配置信息中的`uid`和登录账号是否匹配,如果匹配,就读取这个 DN,然后用 DN 和密码,在 OpenLDAP 上进行验证。 ## 前提条件 -- 已安装[OpenLDAP](https://www.openldap.org/)。 +- 已安装 [OpenLDAP](https://www.openldap.org/)。 -- 已在OpenLDAP上导入用户的账号和密码信息。 +- 已在 OpenLDAP 上导入用户的账号和密码信息。 -- OpenLDAP所在服务器已开放相应认证端口。 +- OpenLDAP 所在服务器已开放相应认证端口。 ## 操作步骤 -以OpenLDAP上已存在的账号`test2`、密码`passwdtest2`为例进行演示。 +以 OpenLDAP 上已存在的账号`test2`、密码`passwdtest2`为例进行演示。 -1. [连接Nebula Graph](../../4.deployment-and-installation/connect-to-nebula-graph.md),创建与OpenLDAP中对应的影子账号`test2`并授权。 +1. [连接 Nebula Graph](../../4.deployment-and-installation/connect-to-nebula-graph.md),创建与 OpenLDAP 中对应的影子账号`test2`并授权。 ```ngql nebula> CREATE USER test2 WITH PASSWORD ''; @@ -41,7 +41,7 @@ OpenLDAP支持的认证方式有两种:简单绑定认证和搜索绑定认证 !!! note - Nebula Graph内创建用户时,密码可以任意设置。 + Nebula Graph 内创建用户时,密码可以任意设置。 2. 编辑配置文件`nebula-graphd.conf`(默认目录为`/usr/local/nebula/etc/`): @@ -54,15 +54,15 @@ OpenLDAP支持的认证方式有两种:简单绑定认证和搜索绑定认证 --enable_authorize=true # 身份验证方式:password、ldap、cloud --auth_type=ldap - # OpenLDAP服务器地址 + # OpenLDAP 服务器地址 --ldap_server=192.168.8.211 - # OpenLDAP服务器端口 + # OpenLDAP 服务器端口 --ldap_port=389 - # OpenLDAP中的Schema名称 + # OpenLDAP 中的 Schema 名称 --ldap_scheme=ldap - # DN前缀 + # DN 前缀 --ldap_prefix=uid= - # DN后缀 + # DN 后缀 --ldap_suffix=,ou=it,dc=sys,dc=com ``` @@ -75,17 +75,17 @@ OpenLDAP支持的认证方式有两种:简单绑定认证和搜索绑定认证 --enable_authorize=true # 身份验证方式:password、ldap、cloud --auth_type=ldap - # OpenLDAP服务器地址 + # OpenLDAP 服务器地址 --ldap_server=192.168.8.211 - # OpenLDAP服务器端口 + # OpenLDAP 服务器端口 --ldap_port=389 - # OpenLDAP中的Schema名称 + # OpenLDAP 中的 Schema 名称 --ldap_scheme=ldap - # 绑定目标对象的DN + # 绑定目标对象的 DN --ldap_basedn=ou=it,dc=sys,dc=com ``` -3. [重启Nebula Graph服务](../../4.deployment-and-installation/manage-service.md),让新配置生效。 +3. [重启 Nebula Graph 服务](../../4.deployment-and-installation/manage-service.md),让新配置生效。 4. 进行登录测试。 @@ -98,4 +98,4 @@ OpenLDAP支持的认证方式有两种:简单绑定认证和搜索绑定认证 !!! note - 使用OpenLDAP进行身份验证后,本地用户(包括`root`)无法正常登录。 + 使用 OpenLDAP 进行身份验证后,本地用户(包括`root`)无法正常登录。 diff --git a/docs-2.0/7.data-security/2.backup-restore/1.what-is-br.md b/docs-2.0/7.data-security/2.backup-restore/1.what-is-br.md index cc2edd63108..c76bbe5ac7c 100644 --- a/docs-2.0/7.data-security/2.backup-restore/1.what-is-br.md +++ b/docs-2.0/7.data-security/2.backup-restore/1.what-is-br.md @@ -1,82 +1,82 @@ -# 什么是Backup&Restore +# 什么是 Backup&Restore -Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮助备份Nebula Graph的图空间数据,或者通过备份文件恢复数据。 +Backup&Restore(简称 BR)是一款命令行界面(CLI)工具,可以帮助备份 Nebula Graph 的图空间数据,或者通过备份文件恢复数据。 ## 功能 - 一键操作备份和恢复数据。 - 支持基于以下备份文件恢复数据: - - 本地磁盘(SSD或HDD) - - Hadoop分布式文件系统(HDFS) + - 本地磁盘(SSD 或 HDD) + - Hadoop 分布式文件系统(HDFS) - 阿里云对象存储(Alibaba Cloud OSS) - 亚马逊对象存储(Amazon S3)(TODO:coding) - 支持备份整个 Nebula Graph 集群,暂不支持指定图空间数据。 ## 限制 -- Nebula Graph版本需要为v{{ nebula.release }}。 +- Nebula Graph 版本需要为 v{{ nebula.release }}。 - 数据备份仅支持全量备份,不支持增量备份。 - Nebula Listener 暂时不支持备份,且全文索引也不支持备份。 - 如果备份数据到本地磁盘,备份的文件将会放置在每个服务器的本地路径中。也可以在本地挂载 NFS 文件系统,以便将备份数据还原到不同的主机上。 - 备份图空间只能恢复到原集群,不能跨集群恢复。 -- 数据备份过程中,指定图空间中的DDL和DML语句将会阻塞,我们建议在业务低峰期进行操作,例如凌晨2点至5点。 +- 数据备份过程中,指定图空间中的 DDL 和 DML 语句将会阻塞,我们建议在业务低峰期进行操作,例如凌晨 2 点至 5 点。 - 数据恢复仅支持在相同拓扑的集群上进行,即原集群和目标集群的主机数量必须相同。 - 数据恢复需要删除数据并重启,建议离线进行。 - + ## 工作原理 ### 备份 -为了备份数据,BR会发送备份请求给leader的metad进程,触发备份。详细说明如下: +为了备份数据,BR 会发送备份请求给 leader 的 metad 进程,触发备份。详细说明如下: -1. 验证BR访问Meta服务器和Storage服务器的SSH登录信息。 +1. 验证 BR 访问 Meta 服务器和 Storage 服务器的 SSH 登录信息。 !!! Note - 如果必须使用云存储,例如Alibaba Cloud OSS或Amazon S3,还需要验证它们的客户端安装和配置。 + 如果必须使用云存储,例如 Alibaba Cloud OSS 或 Amazon S3,还需要验证它们的客户端安装和配置。 -2. BR发起请求创建备份文件。 -3. leader的metad进程被锁定。 +2. BR 发起请求创建备份文件。 +3. leader 的 metad 进程被锁定。 !!! Note - 从此时起至第9步结束,无法在指定图空间内执行任何nGQL的DDL语句。 + 从此时起至第 9 步结束,无法在指定图空间内执行任何 nGQL 的 DDL 语句。 -4. leader的metad进程阻塞指定图空间的写请求。 +4. leader 的 metad 进程阻塞指定图空间的写请求。 !!! Note - 从此时起至第7步结束,无法在指定图空间内执行任何nGQL的DML语句,但是可以执行DQL语句。 + 从此时起至第 7 步结束,无法在指定图空间内执行任何 nGQL 的 DML 语句,但是可以执行 DQL 语句。 -5. leader的metad进程发送请求至storaged进程,请求快照文件名称。 -6. leader的metad进程扫描本地RocksDB文件,输出为SST(Static Sorted Table)格式文件。 -7. leader的metad进程解除阻塞指定图空间的写请求。 +5. leader 的 metad 进程发送请求至 storaged 进程,请求快照文件名称。 +6. leader 的 metad 进程扫描本地 RocksDB 文件,输出为 SST(Static Sorted Table)格式文件。 +7. leader 的 metad 进程解除阻塞指定图空间的写请求。 !!! Note - 从此时起,可以在指定图空间内执行nGQL的DML语句。 + 从此时起,可以在指定图空间内执行 nGQL 的 DML 语句。 -8. leader的metad进程回应BR,包含的Meta数据和快照信息如下: - - thrift格式信息 +8. leader 的 metad 进程回应 BR,包含的 Meta 数据和快照信息如下: + - thrift 格式信息 - 图空间分区信息 - - 每个分区的Raft日志提交ID + - 每个分区的 Raft 日志提交 ID - 快照信息(每个快照存储进程的目录) - - Meta服务器SST格式文件名称 + - Meta 服务器 SST 格式文件名称 - 备份文件名称 -9. leader的metad进程解除锁定。 +9. leader 的 metad 进程解除锁定。 !!! Note - 从此时起,可以在指定图空间内执行任何nGQL的DDL语句。 + 从此时起,可以在指定图空间内执行任何 nGQL 的 DDL 语句。 -10. BR通过SSH登录至leader所在的Meta服务器和所有Storage服务器,然后备份文件。 -11. 如果使用的是Alibaba Cloud OSS或Amazon S3,BR会调用命令将备份文件上传至云存储中。 +10. BR 通过 SSH 登录至 leader 所在的 Meta 服务器和所有 Storage 服务器,然后备份文件。 +11. 如果使用的是 Alibaba Cloud OSS 或 Amazon S3,BR 会调用命令将备份文件上传至云存储中。 !!! Note 本步骤会大量读取磁盘,建议使用万兆网络保证速率。如果上传过程中出现网络错误,备份会失败,必须重新执行备份操作。目前备份过程不支持断点续传。 -12. BR发起请求清理Storage服务器的快照,备份完成。 +12. BR 发起请求清理 Storage 服务器的快照,备份完成。 下图展示了备份的具体流程。 @@ -95,29 +95,29 @@ Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮 恢复过程的详细说明如下: -1. 验证BR访问Meta服务器和Storage服务器的SSH登录信息。 +1. 验证 BR 访问 Meta 服务器和 Storage 服务器的 SSH 登录信息。 !!! Note - 如果必须使用云存储,例如Alibaba Cloud OSS或Amazon S3,还需要验证它们的客户端安装和配置。 + 如果必须使用云存储,例如 Alibaba Cloud OSS 或 Amazon S3,还需要验证它们的客户端安装和配置。 -2. BR从外部存储或云存储中下载Meta信息(非完整数据)。 -3. BR验证集群的拓扑结构,确保原集群和目标集群的主机数量一致。 -4. BR远程停止Meta服务和Storage服务。 -5. BR通过SSH登录至leader所在的Meta服务器和所有Storage服务器,然后删除现有的数据文件。 -6. 现有数据文件删除后,Meta服务器和所有Storage服务器从外部存储或云存储中下载备份文件。 -7. 备份文件下载完成后,BR启动Meta服务。 -8. BR调用`br restore`命令更改指定metad进程的分区信息。 -9. BR启动Storage服务,恢复过程完成。 +2. BR 从外部存储或云存储中下载 Meta 信息(非完整数据)。 +3. BR 验证集群的拓扑结构,确保原集群和目标集群的主机数量一致。 +4. BR 远程停止 Meta 服务和 Storage 服务。 +5. BR 通过 SSH 登录至 leader 所在的 Meta 服务器和所有 Storage 服务器,然后删除现有的数据文件。 +6. 现有数据文件删除后,Meta 服务器和所有 Storage 服务器从外部存储或云存储中下载备份文件。 +7. 备份文件下载完成后,BR 启动 Meta 服务。 +8. BR 调用`br restore`命令更改指定 metad 进程的分区信息。 +9. BR 启动 Storage 服务,恢复过程完成。 下图展示了恢复的具体流程。 ![The figure shows the restoration process](https://docs.nebula-graph.io/2.0/figs/ng-ug-002.png "Implementation of restoration") -## 如何使用BR +## 如何使用 BR -可以按照如下步骤使用BR: +可以按照如下步骤使用 BR: -1. [编译BR](2.compile-br.md) -2. [使用BR备份数据](3.br-backup-data.md) -3. [使用BR恢复数据](4.br-restore-data.md) +1. [编译 BR](2.compile-br.md) +2. [使用 BR 备份数据](3.br-backup-data.md) +3. [使用 BR 恢复数据](4.br-restore-data.md) diff --git a/docs-2.0/7.data-security/2.backup-restore/2.compile-br.md b/docs-2.0/7.data-security/2.backup-restore/2.compile-br.md index 9e0452da309..d6b4116510f 100644 --- a/docs-2.0/7.data-security/2.backup-restore/2.compile-br.md +++ b/docs-2.0/7.data-security/2.backup-restore/2.compile-br.md @@ -1,11 +1,11 @@ -# 编译BR +# 编译 BR -目前,BR还没有作为一个包提供。需要先编译BR。 +目前,BR 还没有作为一个包提供。需要先编译 BR。 ## 准备工作 -- 安装 [Go](https://github.com/golang/go "Click to go to GitHub") 1.14.x或更新版本。 -- 安装make。 +- 安装 [Go](https://github.com/golang/go "Click to go to GitHub") 1.14.x 或更新版本。 +- 安装 make。 ## 操作步骤 @@ -21,7 +21,7 @@ cd nebula-br ``` -3. 编译BR。 +3. 编译 BR。 ```bash make diff --git a/docs-2.0/7.data-security/2.backup-restore/3.br-backup-data.md b/docs-2.0/7.data-security/2.backup-restore/3.br-backup-data.md index 442c2f1eef6..6bad9f2e070 100644 --- a/docs-2.0/7.data-security/2.backup-restore/3.br-backup-data.md +++ b/docs-2.0/7.data-security/2.backup-restore/3.br-backup-data.md @@ -1,30 +1,30 @@ -# 使用BR备份数据 +# 使用 BR 备份数据 -BR编译成功后,可以备份整个图空间的数据,本文介绍如何使用BR备份数据。 +BR 编译成功后,可以备份整个图空间的数据,本文介绍如何使用 BR 备份数据。 ## 准备工作 -- BR编译完成。如何编译BR,请参见[编译BR](2.compile-br.md)。 +- BR 编译完成。如何编译 BR,请参见[编译 BR](2.compile-br.md)。 -- 确认Nebula Graph服务正在运行中。 +- 确认 Nebula Graph 服务正在运行中。 -- BR可以免密登录服务器,即在BR机器上的账号可以通过SSH免密登录到Meta服务器和Storage服务器。详情请参见[SSH tunnels with keys](http://alexander.holbreich.org/ssh-tunnel-without-password/)。 +- BR 可以免密登录服务器,即在 BR 机器上的账号可以通过 SSH 免密登录到 Meta 服务器和 Storage 服务器。详情请参见 [SSH tunnels with keys](http://alexander.holbreich.org/ssh-tunnel-without-password/)。 -- 如果使用Alibaba Cloud OSS或Amazon S3保存备份文件,请确保Meta服务器、Storage服务器和BR机器都已安装相应的客户端。详情请参见[Alibaba Cloud ossutil文档](https://www.alibabacloud.com/help/zh/doc-detail/120075.htm#concept-303829)和[Amazon S3 CLI文档](https://docs.amazonaws.cn/cli/latest/userguide/cli-services-s3.html)。 +- 如果使用 Alibaba Cloud OSS 或 Amazon S3 保存备份文件,请确保 Meta 服务器、Storage 服务器和 BR 机器都已安装相应的客户端。详情请参见 [Alibaba Cloud ossutil 文档](https://www.alibabacloud.com/help/zh/doc-detail/120075.htm#concept-303829) 和 [Amazon S3 CLI 文档](https://docs.amazonaws.cn/cli/latest/userguide/cli-services-s3.html)。 !!! Note - 请创建软链接方便使用ossutil命令。命令为`ln -s // /usr/local/bin/ossutil`,根据实际路径和系统替换内容。 + 请创建软链接方便使用 ossutil 命令。命令为`ln -s // /usr/local/bin/ossutil`,根据实际路径和系统替换内容。 -- 如果在本地保存备份文件,需要在Meta服务器、Storage服务器和BR机器上创建绝对路径相同的目录,并记录绝对路径,同时需要保证账号对该目录有写权限。 +- 如果在本地保存备份文件,需要在 Meta 服务器、Storage 服务器和 BR 机器上创建绝对路径相同的目录,并记录绝对路径,同时需要保证账号对该目录有写权限。 !!! Note - 在生产环境中,我们建议用户将NFS (Network File System)存储设备挂载到Meta服务器、Storage服务器和BR机器上进行本地备份,或者使用Alibaba Cloud OSS、Amazon S3进行远程备份。否则当需要通过本地文件恢复数据时,必须手动将这些备份文件移动到指定目录,会导致数据冗余和某些问题。更多信息,请参见[使用BR恢复数据](4.br-restore-data.md)。 + 在生产环境中,我们建议用户将 NFS (Network File System)存储设备挂载到 Meta 服务器、Storage 服务器和 BR 机器上进行本地备份,或者使用 Alibaba Cloud OSS、Amazon S3 进行远程备份。否则当需要通过本地文件恢复数据时,必须手动将这些备份文件移动到指定目录,会导致数据冗余和某些问题。更多信息,请参见[使用 BR 恢复数据](4.br-restore-data.md)。 ## 操作步骤 -运行以下命令对整个集群进行全量备份操作. +运行以下命令对整个集群进行全量备份操作。 !!! Note @@ -55,4 +55,4 @@ $ ./bin/br backup full --meta --storage --user / /usr/local/bin/ossutil`,根据实际路径和系统替换内容。 + 请创建软链接方便使用 ossutil 命令。命令为`ln -s // /usr/local/bin/ossutil`,根据实际路径和系统替换内容。 ## 操作步骤 @@ -50,7 +50,6 @@ +----------------------------+---------------------+------------------+-------------+---------------+ ``` - 2. 用户可以使用以下命令恢复数据: ``` [root]# ./bin/br restore full --meta --storage --name --user diff --git a/docs-2.0/7.data-security/3.manage-snapshot.md b/docs-2.0/7.data-security/3.manage-snapshot.md index 68291c8c674..dc25f925365 100644 --- a/docs-2.0/7.data-security/3.manage-snapshot.md +++ b/docs-2.0/7.data-security/3.manage-snapshot.md @@ -1,12 +1,12 @@ # 管理快照 -Nebula Graph提供快照(snapshot)功能,用于保存集群当前时间点的数据状态,当出现数据丢失或误操作时,可以通过快照恢复数据。 +Nebula Graph 提供快照(snapshot)功能,用于保存集群当前时间点的数据状态,当出现数据丢失或误操作时,可以通过快照恢复数据。 ## 前提条件 -Nebula Graph的[身份认证](1.authentication/1.authentication.md)功能默认是关闭的,此时任何用户都能使用快照功能。 +Nebula Graph 的[身份认证](1.authentication/1.authentication.md)功能默认是关闭的,此时任何用户都能使用快照功能。 -如果身份认证开启,仅God角色用户可以使用快照功能。关于角色说明,请参见[内置角色权限](1.authentication/3.role-list.md)。 +如果身份认证开启,仅 God 角色用户可以使用快照功能。关于角色说明,请参见[内置角色权限](1.authentication/3.role-list.md)。 ## 注意事项 @@ -18,11 +18,11 @@ Nebula Graph的[身份认证](1.authentication/1.authentication.md)功能默认 ## 快照路径 -Nebula Graph创建的快照以目录的形式存储,例如`SNAPSHOT_2021_03_09_08_43_12`,后缀`2021_03_09_08_43_12`根据创建时间(UTC)自动生成。 +Nebula Graph 创建的快照以目录的形式存储,例如`SNAPSHOT_2021_03_09_08_43_12`,后缀`2021_03_09_08_43_12`根据创建时间(UTC)自动生成。 -创建快照时,快照目录会自动在leader Meta服务器和所有Storage服务器的目录`checkpoints`内创建。 +创建快照时,快照目录会自动在 leader Meta 服务器和所有 Storage 服务器的目录`checkpoints`内创建。 -为了快速定位快照所在路径,可以使用Linux命令`find`。例如: +为了快速定位快照所在路径,可以使用 Linux 命令`find`。例如: ```bash $ find |grep 'SNAPSHOT_2021_03_09_08_43_12' @@ -62,9 +62,9 @@ nebula> SHOW SNAPSHOTS; |参数|说明| |:---|:---| -|`Name`|快照名称,前缀为`SNAPSHOT`,表示该文件为快照文件,后缀为快照创建的时间点(UTC时间)。| +|`Name`|快照名称,前缀为`SNAPSHOT`,表示该文件为快照文件,后缀为快照创建的时间点(UTC 时间)。| |`Status`|快照状态。`VALID`表示快照有效,`INVALID`表示快照无效。| -|`Hosts`|创建快照时所有Storage服务器的IP地址和端口。| +|`Hosts`|创建快照时所有 Storage 服务器的 IP 地址和端口。| ## 删除快照 @@ -88,9 +88,9 @@ nebula> SHOW SNAPSHOTS; ## 恢复快照 -当前未提供恢复快照命令,需要手动拷贝快照文件到对应的文件夹内,也可以通过shell脚本进行操作。实现逻辑如下: +当前未提供恢复快照命令,需要手动拷贝快照文件到对应的文件夹内,也可以通过 shell 脚本进行操作。实现逻辑如下: -1. 创建快照后,会在leader Meta服务器和所有Storage服务器的安装目录内生成`checkpoints`目录,保存创建的快照。以本文为例,当存在2个图空间时,创建的快照分别保存在`/usr/local/nebula/data/meta/nebula/0/checkpoints`、`/usr/local/nebula/data/storage/nebula/3/checkpoints`和`/usr/local/nebula/data/storage/nebula/4/checkpoints`中。 +1. 创建快照后,会在 leader Meta 服务器和所有 Storage 服务器的安装目录内生成`checkpoints`目录,保存创建的快照。以本文为例,当存在 2 个图空间时,创建的快照分别保存在`/usr/local/nebula/data/meta/nebula/0/checkpoints`、`/usr/local/nebula/data/storage/nebula/3/checkpoints`和`/usr/local/nebula/data/storage/nebula/4/checkpoints`中。 ```bash $ ls /usr/local/nebula/data/meta/nebula/0/checkpoints/ @@ -105,12 +105,11 @@ nebula> SHOW SNAPSHOTS; !!! caution - 需要同时覆盖所有Meta节点的data和wal目录,因为存在重启集群后发生Meta重新选举leader的情况,如果不覆盖所有Meta节点,新的leader使用的还是最新的Meta数据,导致恢复失败。 - + 需要同时覆盖所有 Meta 节点的 data 和 wal 目录,因为存在重启集群后发生 Meta 重新选举 leader 的情况,如果不覆盖所有 Meta 节点,新的 leader 使用的还是最新的 Meta 数据,导致恢复失败。 diff --git a/docs-2.0/7.data-security/4.ssl.md b/docs-2.0/7.data-security/4.ssl.md index c18d29b02ee..b8e2b08f26a 100644 --- a/docs-2.0/7.data-security/4.ssl.md +++ b/docs-2.0/7.data-security/4.ssl.md @@ -1,50 +1,50 @@ -# SSL加密 +# SSL 加密 -Nebula Graph支持在客户端、Graph服务、Meta服务和Storage服务之间进行SSL加密传输,本文介绍如何设置SSL加密。 +Nebula Graph 支持在客户端、Graph 服务、Meta 服务和 Storage 服务之间进行 SSL 加密传输,本文介绍如何设置 SSL 加密。 ## 注意事项 -开启SSL加密会轻微影响性能。 +开启 SSL 加密会轻微影响性能。 ## 参数介绍 | 参数 | 默认值 | 说明 | | ---------------- | ------- | ------------------------------| -| `cert_path` | - | PEM证书的路径。 | +| `cert_path` | - | PEM 证书的路径。 | | `key_path` | - | 密钥证书的路径。 | | `password_path` | - | 密码文件证书的路径。 | -| `ca_path` | - | 受信任CA证书文件的路径。 | -| `enable_ssl` | `false` | 是否开启SSL加密。 | -| `enable_graph_ssl` | `false` | 是否仅在Graph服务上开启SSL加密。 | -| `enable_meta_ssl` | `false` | 是否仅在Meta服务上开启SSL加密。 | +| `ca_path` | - | 受信任 CA 证书文件的路径。 | +| `enable_ssl` | `false` | 是否开启 SSL 加密。 | +| `enable_graph_ssl` | `false` | 是否仅在 Graph 服务上开启 SSL 加密。 | +| `enable_meta_ssl` | `false` | 是否仅在 Meta 服务上开启 SSL 加密。 | ## 证书模式 -为了使用SSL加密,必须有SSL证书。Nebula Graph支持两种证书模式: +为了使用 SSL 加密,必须有 SSL 证书。Nebula Graph 支持两种证书模式: - 自签名证书模式 需要自行制作签名证书。需要根据加密策略,在对应的配置文件内设置`cert_path`、`key_path`和`password_path`。 -- CA签名证书模式 +- CA 签名证书模式 需要在认证机构(Certificate Authority)申请签名证书。需要根据加密策略,在对应的配置文件内设置`cert_path`、`key_path`和`ca_path`。 ## 加密策略 -Nebula Graph支持三种加密策略。加密涉及的具体进程请参见[详细说明](https://github.com/vesoft-inc/nebula/blob/a67d166b284cae1b534bf8d19c936ee38bf12e29/docs/rfcs/0001-ssl-transportation.md#usage-explanation)。 +Nebula Graph 支持三种加密策略。加密涉及的具体进程请参见[详细说明](https://github.com/vesoft-inc/nebula/blob/a67d166b284cae1b534bf8d19c936ee38bf12e29/docs/rfcs/0001-ssl-transportation.md#usage-explanation)。 -- 对客户端、Graph服务、Meta服务和Storage服务之间的传输数据加密。 +- 对客户端、Graph 服务、Meta 服务和 Storage 服务之间的传输数据加密。 需要修改`nebula-graphd.conf`、`nebula-metad.conf`和`nebula-storaged.conf`配置文件,设置`enable_ssl = true`。 -- 对客户端和Graph服务之间的传输数据加密。 +- 对客户端和 Graph 服务之间的传输数据加密。 - 适用于集群设置在同一个机房内,仅对外开放Graph服务的端口。因为其他服务可以通过内部网络通信,无需加密。需要修改`nebula-graphd.conf`配置文件,设置`enable_graph_ssl = true`。 + 适用于集群设置在同一个机房内,仅对外开放 Graph 服务的端口。因为其他服务可以通过内部网络通信,无需加密。需要修改`nebula-graphd.conf`配置文件,设置`enable_graph_ssl = true`。 -- 对集群中Meta服务相关的传输数据加密。 +- 对集群中 Meta 服务相关的传输数据加密。 - 适用于向meta服务传输需保密的信息。需要修改`nebula-graphd.conf`、`nebula-metad.conf`和`nebula-storaged.conf`配置文件,设置`enable_meta_ssl = true`。 + 适用于向 meta 服务传输需保密的信息。需要修改`nebula-graphd.conf`、`nebula-metad.conf`和`nebula-storaged.conf`配置文件,设置`enable_meta_ssl = true`。 ## 使用方式 @@ -52,7 +52,7 @@ Nebula Graph支持三种加密策略。加密涉及的具体进程请参见[详 2. 在对应的配置文件内增加证书配置和策略配置。 - 例如使用自签名证书,并对客户端、Graph服务、Meta服务和Storage服务之间的数据传输进行加密。需要对三个配置文件都进行如下设置: + 例如使用自签名证书,并对客户端、Graph 服务、Meta 服务和 Storage 服务之间的数据传输进行加密。需要对三个配置文件都进行如下设置: ```bash --cert_path=xxxxxx @@ -61,4 +61,4 @@ Nebula Graph支持三种加密策略。加密涉及的具体进程请参见[详 --enable_ssl=true ``` -3. 客户端设置安全套接字并添加受信任的CA。示例代码请参见[nebula-test-run.py](https://github.com/vesoft-inc/nebula/blob/{{nebula.branch}}/tests/nebula-test-run.py)。 +3. 客户端设置安全套接字并添加受信任的 CA。示例代码请参见 [nebula-test-run.py](https://github.com/vesoft-inc/nebula/blob/{{nebula.branch}}/tests/nebula-test-run.py)。 diff --git a/docs-2.0/7.data-security/5.zone.md b/docs-2.0/7.data-security/5.zone.md index 2a40391d06b..8d4771eebc7 100644 --- a/docs-2.0/7.data-security/5.zone.md +++ b/docs-2.0/7.data-security/5.zone.md @@ -1,46 +1,46 @@ # Group&Zone -Nebula Graph提供Group&Zone功能,可以将Storage节点进行分组管理,实现资源隔离。 +Nebula Graph 提供 Group&Zone 功能,可以将 Storage 节点进行分组管理,实现资源隔离。 ## 背景信息 -用户可以将Storage节点加入某个Zone中,多个Zone构成一个Group。创建图空间时指定Group,就会在Group内的Storage节点上创建及存储图空间。分片及其副本会均匀存储在各个Zone中。如下图所示。 +用户可以将 Storage 节点加入某个 Zone 中,多个 Zone 构成一个 Group。创建图空间时指定 Group,就会在 Group 内的 Storage 节点上创建及存储图空间。分片及其副本会均匀存储在各个 Zone 中。如下图所示。 -![Group&Zone示意图](zone1.png) +![Group&Zone 示意图](zone1.png) -8台启动Storage服务的机器两两组合,加入4个Zone。然后将Zone1、Zone2、Zone3加入Group1,Zone3、Zone4加入Group2。 +8 台启动 Storage 服务的机器两两组合,加入 4 个 Zone。然后将 Zone1、Zone2、Zone3 加入 Group1,Zone3、Zone4 加入 Group2。 -指定Group1创建图空间S1,分片及其副本会均匀存储在Zone1~Zone3,不会存储到Zone4的机器上。 +指定 Group1 创建图空间 S1,分片及其副本会均匀存储在 Zone1~Zone3,不会存储到 Zone4 的机器上。 -指定Group2创建图空间S2,分片及其副本会均匀存储在Zone3~Zone4。不会存储到Zone1和Zone2的机器上。 +指定 Group2 创建图空间 S2,分片及其副本会均匀存储在 Zone3~Zone4。不会存储到 Zone1 和 Zone2 的机器上。 -上述例子简单介绍了Zone功能,用户可以通过合理规划Zone和Group,实现资源隔离。 +上述例子简单介绍了 Zone 功能,用户可以通过合理规划 Zone 和 Group,实现资源隔离。 ## 适用场景 -- 期望将图空间创建在某些指定的Storage节点上,从而达到资源隔离的目的。 +- 期望将图空间创建在某些指定的 Storage 节点上,从而达到资源隔离的目的。 - 集群滚动升级。需要停止一个或多个服务器并更新,然后重新投入使用,直到集群中所有的节点都更新为新版本。 ## 注意事项 -- Zone是Storage节点的集合,每个Storage节点只能加入一个Zone。 +- Zone 是 Storage 节点的集合,每个 Storage 节点只能加入一个 Zone。 -- Zone中可以存储分片的副本,但同一个分片在一个Zone中只能有一个副本。 +- Zone 中可以存储分片的副本,但同一个分片在一个 Zone 中只能有一个副本。 -- 多个Zone可以组成一个Group,方便管理,并且可以进行资源隔离。 +- 多个 Zone 可以组成一个 Group,方便管理,并且可以进行资源隔离。 -- 一个Zone可以加入多个Group。 +- 一个 Zone 可以加入多个 Group。 -- 创建Space时如果指定Group,该图空间的副本将均匀分布在该Group的各个Zone中。 +- 创建 Space 时如果指定 Group,该图空间的副本将均匀分布在该 Group 的各个 Zone 中。 -- 一个Group可以创建多个图空间,但是Group中Zone的数量需要大于等于创建图空间时指定的副本数(`replica_factor`)。 +- 一个 Group 可以创建多个图空间,但是 Group 中 Zone 的数量需要大于等于创建图空间时指定的副本数(`replica_factor`)。 ## 基本语法 ### ADD ZONE -创建Zone,并将Storage节点加入Zone。 +创建 Zone,并将 Storage 节点加入 Zone。 ```ngql ADD ZONE : [,:...]; @@ -54,11 +54,11 @@ nebula> ADD ZONE zone1 192.168.8.111:9779, 192.168.8.129:9779; ### ADD HOST...INTO ZONE -将单个Storage节点加入已创建的Zone。 +将单个 Storage 节点加入已创建的 Zone。 !!! note - 加入之后请使用[BALANCE](../3.ngql-guide/18.operation-and-maintenance-statements/2.balance-syntax.md)命令实现负载均衡。 + 加入之后请使用 [BALANCE](../3.ngql-guide/18.operation-and-maintenance-statements/2.balance-syntax.md) 命令实现负载均衡。 ```ngql ADD HOST : INTO ZONE ; @@ -66,11 +66,11 @@ ADD HOST : INTO ZONE ; ### DROP HOST...FROM ZONE -从Zone中删除单个Storage节点。 +从 Zone 中删除单个 Storage 节点。 !!! note - Group中正在使用的Storage节点无法直接删除,需要先删除关联的图空间,才能删除Storage节点。 + Group 中正在使用的 Storage 节点无法直接删除,需要先删除关联的图空间,才能删除 Storage 节点。 ```ngql DROP HOST : FROM ZONE ; @@ -78,7 +78,7 @@ DROP HOST : FROM ZONE ; ### SHOW ZONES -查看所有Zone。 +查看所有 Zone。 ```ngql SHOW ZONES; @@ -86,7 +86,7 @@ SHOW ZONES; ### DESCRIBE ZONE -查看指定Zone。 +查看指定 Zone。 ```ngql DESCRIBE ZONE ; @@ -95,11 +95,11 @@ DESC ZONE ; ### DROP ZONE -删除Zone。 +删除 Zone。 !!! note - 已加入Group的Zone无法直接删除,需要先从Group中剔除该Zone,或删除所属的Group后,才能删除Zone。 + 已加入 Group 的 Zone 无法直接删除,需要先从 Group 中剔除该 Zone,或删除所属的 Group 后,才能删除 Zone。 ```ngql DROP ZONE ; @@ -107,7 +107,7 @@ DROP ZONE ; ### ADD GROUP -创建Group,并将Zone加入Group。 +创建 Group,并将 Zone 加入 Group。 ```ngql ADD GROUP [,...]; @@ -121,11 +121,11 @@ nebula> ADD GROUP group1 zone1,zone2; ### ADD ZONE...INTO GROUP -将单个Zone加入已创建的Group。 +将单个 Zone 加入已创建的 Group。 !!! note - 加入之后请使用[BALANCE](../3.ngql-guide/18.operation-and-maintenance-statements/2.balance-syntax.md)命令实现负载均衡。 + 加入之后请使用 [BALANCE](../3.ngql-guide/18.operation-and-maintenance-statements/2.balance-syntax.md) 命令实现负载均衡。 ```ngql ADD ZONE INTO GROUP ; @@ -133,11 +133,11 @@ ADD ZONE INTO GROUP ; ### DROP ZONE...FROM GROUP -从GROUP中删除单个Zone。 +从 GROUP 中删除单个 Zone。 !!! note - Group中正在使用的Zone无法直接删除,需要先删除关联的图空间,才能删除Zone。 + Group 中正在使用的 Zone 无法直接删除,需要先删除关联的图空间,才能删除 Zone。 ```ngql DROP ZONE FROM GROUP ; @@ -145,7 +145,7 @@ DROP ZONE FROM GROUP ; ### SHOW GROUPS -查看所有Group。 +查看所有 Group。 ```ngql SHOW GROUPS; @@ -153,7 +153,7 @@ SHOW GROUPS; ### DESCRIBE GROUP -查看指定Group。 +查看指定 Group。 ```ngql DESCRIBE GROUP ; @@ -162,11 +162,11 @@ DESC GROUP ; ### DROP GROUP -删除Group。 +删除 Group。 !!! note - 正在使用的Group无法直接删除,需要先删除关联的图空间,才能删除Group。 + 正在使用的 Group 无法直接删除,需要先删除关联的图空间,才能删除 Group。 ```ngql DROP GROUP ; diff --git a/docs-2.0/8.service-tuning/2.graph-modeling.md b/docs-2.0/8.service-tuning/2.graph-modeling.md index 9e55d63d778..d68ccf9063e 100644 --- a/docs-2.0/8.service-tuning/2.graph-modeling.md +++ b/docs-2.0/8.service-tuning/2.graph-modeling.md @@ -1,6 +1,6 @@ # 图建模设计 -本文介绍在Nebula Graph项目中成功应用的一些图建模和系统设计的通用建议。 +本文介绍在 Nebula Graph 项目中成功应用的一些图建模和系统设计的通用建议。 !!! Note @@ -12,7 +12,7 @@ ### 设计和评估最重要的查询语句 -在测试环节中,通常会验证各种各样的查询语句,以全面评估系统能力。但在大多数生产场景下,每个集群被频繁调用的查询语句的类型并不会太多;根据20-80原则,针对重要的查询语句进行建模优化。 +在测试环节中,通常会验证各种各样的查询语句,以全面评估系统能力。但在大多数生产场景下,每个集群被频繁调用的查询语句的类型并不会太多;根据 20-80 原则,针对重要的查询语句进行建模优化。 ### Tag 与 Edge type 之间没有绑定关系 @@ -20,13 +20,13 @@ ### Tag/Edge type 预先定义了一组属性 -建立Tag(或者Edge type)时,需要指定对应的属性。通常称为 Schema。 +建立 Tag(或者 Edge type)时,需要指定对应的属性。通常称为 Schema。 ### 区分“经常改变的部分”和“不经常改变的部分” 改变指的是业务模型和数据模型上的改变(元信息),不是数据自身的改变。 -一些图数据库产品是schema-free的设计,所以在数据模型上,不论是图拓扑结构还是属性,都可以非常自由。属性可以建模转变为图拓扑,反之亦然。这类系统通常对于图拓扑的访问有特别的优化。 +一些图数据库产品是 schema-free 的设计,所以在数据模型上,不论是图拓扑结构还是属性,都可以非常自由。属性可以建模转变为图拓扑,反之亦然。这类系统通常对于图拓扑的访问有特别的优化。 而 Nebula Graph {{ nebula.release }} 是强 Schema 的(行存型)系统,这意味着业务数据模型中的部分是“不应该经常改变的”,例如属性 Schema 应该避免改变。类似于 MySQL 中 ALTER TABLE 是应该尽量避免的操作。 @@ -36,7 +36,7 @@ ### 广度优先大于深度优先 -- Nebula Graph 基于图拓扑结构进行深度图遍历的性能较低,广度优先遍历以及获取属性的性能较好。例如,模型a包括姓名、年龄、眼睛颜色三种属性,建议创建一个Tag`person`,然后为它添加姓名、年龄、眼睛颜色的属性。如果创建一个包含眼睛颜色的Tag和一个Edge type`has`,然后创建一个边用来表示人拥有的眼睛颜色,这种建模方法会降低遍历性能。 +- Nebula Graph 基于图拓扑结构进行深度图遍历的性能较低,广度优先遍历以及获取属性的性能较好。例如,模型 a 包括姓名、年龄、眼睛颜色三种属性,建议创建一个 Tag`person`,然后为它添加姓名、年龄、眼睛颜色的属性。如果创建一个包含眼睛颜色的 Tag 和一个 Edge type`has`,然后创建一个边用来表示人拥有的眼睛颜色,这种建模方法会降低遍历性能。 - “通过边属性获取边”的性能与“通过点属性获取点”的性能是接近的。在一些数据库中,会建议将边上的属性重新建模为中间节点的属性:例如 `(src)-[edge {P1, P2}]->(dst)`,`edge` 上有属性 `P1, P2`,会建议建模为 `(src)-[edge1]->(i_node {P1, P2})-[edge2]->(dst)`。在 Nebula Graph {{ nebula.release }} 中可以直接使用 `(src)-[edge {P1, P2}]->(dst)`,减少遍历深度有助于性能。 @@ -52,27 +52,27 @@ 因此,通常同一条边没有必要反向再冗余插入一次。 -### 合理设置Tag属性 +### 合理设置 Tag 属性 -在图建模中,请将一组类似的平级属性放入同一个Tag,即按不同概念进行分组。 +在图建模中,请将一组类似的平级属性放入同一个 Tag,即按不同概念进行分组。 ### 正确使用索引 -使用属性索引可以通过属性查找到 VID。但是索引会导致写性能下降90%甚至更多,只有在根据点或边的属性定位点或边时才使用索引。 +使用属性索引可以通过属性查找到 VID。但是索引会导致写性能下降 90%甚至更多,只有在根据点或边的属性定位点或边时才使用索引。 -### 合理设计VID +### 合理设计 VID -参考[点VID一节](../1.introduction/3.vid.md)。 +参考[点 VID 一节](../1.introduction/3.vid.md)。 ### 长文本 -为边创建属性时请勿使用长文本:这些属性会被[存储2份](../1.introduction/3.nebula-graph-architecture/4.storage-service.md),导致写入放大问题(write amplification)。此时建议将长文本放在 HBase/ES 中,将其地址存放在 Nebula Graph 中。 +为边创建属性时请勿使用长文本:这些属性会被[存储 2 份](../1.introduction/3.nebula-graph-architecture/4.storage-service.md),导致写入放大问题(write amplification)。此时建议将长文本放在 HBase/ES 中,将其地址存放在 Nebula Graph 中。 -## 不能支持动态图(时序图) +## 不能支持动态图(时序图) -在某些场景下,图需要同时带有时序信息,以描述整个图的结构随着时间变化的情况[^twitter]。 +在某些场景下,图需要同时带有时序信息,以描述整个图的结构随着时间变化的情况 [^twitter]。 -Nebula Graph {{ nebula.release }} 的边可以使用 Rank 字段存放时间信息(int64),但是点上没有字段可以存放时间信息(存放在属性会被新写入覆盖)。因此不能支持动态时序图。 +Nebula Graph {{ nebula.release }} 的边可以使用 Rank 字段存放时间信息 (int64),但是点上没有字段可以存放时间信息(存放在属性会被新写入覆盖)。因此不能支持动态时序图。 ![image](sequence.png) diff --git a/docs-2.0/8.service-tuning/3.system-design.md b/docs-2.0/8.service-tuning/3.system-design.md index aecacb69ae1..72a97ac9338 100644 --- a/docs-2.0/8.service-tuning/3.system-design.md +++ b/docs-2.0/8.service-tuning/3.system-design.md @@ -1,10 +1,10 @@ # 系统设计建议 -## 选择QPS优先或时延优先 +## 选择 QPS 优先或时延优先 -- Nebula Graph {{ nebula.release }} 更擅长处理(互联网式的)有大量并发的小请求。也即:虽然全图很大(万亿点边),但是每个请求要访问到的子图本身并不大(几百万个点边)——单个请求时延不大;但这类请求的并发数量特别多——QPS大。 +- Nebula Graph {{ nebula.release }} 更擅长处理(互联网式的)有大量并发的小请求。也即:虽然全图很大(万亿点边),但是每个请求要访问到的子图本身并不大(几百万个点边)——单个请求时延不大;但这类请求的并发数量特别多——QPS 大。 -- 但对于一些交互分析型的场景,并发请求的数量不多,而每个请求要访问的子图本身特别大(亿以上)。为降低时延,可以在应用程序中将一个大的请求,拆分为多个小请求,并发发送给多个graphd。这样可以降低单个大请求的时延,降低单个graphd的内存占用。另外,也可以使用[图计算功能 Nebula Algorithm](../nebula-algorithm.md)。 +- 但对于一些交互分析型的场景,并发请求的数量不多,而每个请求要访问的子图本身特别大(亿以上)。为降低时延,可以在应用程序中将一个大的请求,拆分为多个小请求,并发发送给多个 graphd。这样可以降低单个大请求的时延,降低单个 graphd 的内存占用。另外,也可以使用[图计算功能 Nebula Algorithm](../nebula-algorithm.md)。 ## 水平扩展或垂直扩展 @@ -12,15 +12,15 @@ Nebula Graph {{ nebula.release }} 支持水平扩展: + Storaged 的水平扩展: - - 增加storaged的机器数量,可以大体线性增加集群的整体能力,包括增加整体QPS和降低时延。 + - 增加 storaged 的机器数量,可以大体线性增加集群的整体能力,包括增加整体 QPS 和降低时延。 - - 但由于 partition 数量在 CREATE SPACE 时已固定,因此单个 partition 的服务能力只由单服务器决定——例如:获取单个点的属性(`FETCH`)、单个点开始的广度优先遍历(`GO`) + - 但由于 partition 数量在 CREATE SPACE 时已固定,因此单个 partition 的服务能力只由单服务器决定——例如:获取单个点的属性 (`FETCH`)、单个点开始的广度优先遍历 (`GO`) + Graphd 的水平扩展: - 来自客户端的每个请求,都由且仅由一个 graphd 处理,其他 graphd 不会参与处理该请求。 - - 因此增加 graphd 机器数量,可以增加集群整体QPS,但不能降低单个请求时延。 + - 因此增加 graphd 机器数量,可以增加集群整体 QPS,但不能降低单个请求时延。 + Metad 不支持水平扩展。 @@ -29,7 +29,7 @@ Nebula Graph {{ nebula.release }} 支持水平扩展: ## 数据传输与优化 - 读写平衡。Nebula Graph 适合读写平衡性的在线场景,也即 OLTP 型的的“并发的发生写入与读取”;而非数仓 OLAP 型的“一次写入多次读取”。 -- 选择不同的写入方式。大批量的数据写入可以使用sst加载的方式;小批量的写入使用`INSERT`语句。 +- 选择不同的写入方式。大批量的数据写入可以使用 sst 加载的方式;小批量的写入使用`INSERT`语句。 - 选择合适的时间运行 COMPACTION 和 BALANCE,来分别优化数据格式和存储分布。 - Nebula Graph {{ nebula.release }} 不支持关系型数据库意义上的事务和隔离性,更接近 NoSQL。 diff --git a/docs-2.0/8.service-tuning/4.plan.md b/docs-2.0/8.service-tuning/4.plan.md index de14c47ba87..fbcc994449f 100644 --- a/docs-2.0/8.service-tuning/4.plan.md +++ b/docs-2.0/8.service-tuning/4.plan.md @@ -1,6 +1,5 @@ # 执行计划 -Nebula Graph {{ nebula.release }} 实现了基于规则的执行计划。用户无法改变执行计划,无法进行查询的预编译(及相应的计划缓存),无法通过指定索引来加速查询。 - -要查看执行计划及执行概要,请参考[EXPLAIN和PROFILE](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md)。 +Nebula Graph {{ nebula.release }} 实现了基于规则的执行计划。用户无法改变执行计划,无法进行查询的预编译(及相应的计划缓存),无法通过指定索引来加速查询。 +要查看执行计划及执行概要,请参考 [EXPLAIN 和 PROFILE](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md)。 diff --git a/docs-2.0/8.service-tuning/compaction.md b/docs-2.0/8.service-tuning/compaction.md index abc383c8d0c..aec848fa10a 100644 --- a/docs-2.0/8.service-tuning/compaction.md +++ b/docs-2.0/8.service-tuning/compaction.md @@ -1,20 +1,20 @@ # Compaction -本文介绍Compaction的相关信息。 +本文介绍 Compaction 的相关信息。 -Nebula Graph中,`Compaction`是最重要的后台操作,对性能有极其重要的影响。 +Nebula Graph 中,`Compaction`是最重要的后台操作,对性能有极其重要的影响。 -`Compaction`操作会读取硬盘上的数据,然后重组数据结构和索引,然后再写回硬盘,可以成倍提升读取性能。将大量数据写入Nebula Graph后,为了提高读取性能,需要手动触发`Compaction`操作(全量`Compaction`)。 +`Compaction`操作会读取硬盘上的数据,然后重组数据结构和索引,然后再写回硬盘,可以成倍提升读取性能。将大量数据写入 Nebula Graph 后,为了提高读取性能,需要手动触发`Compaction`操作(全量`Compaction`)。 !!! Note - `Compaction`操作会长时间占用硬盘的IO,建议在业务低峰期(例如凌晨)执行该操作。 + `Compaction`操作会长时间占用硬盘的 IO,建议在业务低峰期(例如凌晨)执行该操作。 -Nebula Graph有两种类型的`Compaction`操作:自动`Compaction`和全量`Compaction`。 +Nebula Graph 有两种类型的`Compaction`操作:自动`Compaction`和全量`Compaction`。 ## 自动`Compaction` -自动`Compaction`是在系统读取数据、写入数据或系统重启时自动触发`Compaction`操作,提升短时间内的读取性能。默认情况下,自动`Compaction`是开启状态,可能在业务高峰期触发,导致意外抢占IO影响业务。 +自动`Compaction`是在系统读取数据、写入数据或系统重启时自动触发`Compaction`操作,提升短时间内的读取性能。默认情况下,自动`Compaction`是开启状态,可能在业务高峰期触发,导致意外抢占 IO 影响业务。 - 数据导入完成后,请执行`SUBMIT JOB COMPACT`。 @@ -91,7 +91,7 @@ nebula> SHOW JOB ; - 为控制`Compaction`的读写速率,请在配置文件`nebula-storaged.conf`中设置如下参数: ```bash - # 读写速率限制为20MB/S。 + # 读写速率限制为 20MB/S。 --rate_limit=20 (in MB/s) ``` @@ -114,7 +114,7 @@ Level Files Size Score Read(GB) Rn(GB) Rnp1(GB) Write(GB) Wnew(GB) Mov ### 可以同时在多个图空间执行全量`Compaction`操作吗? -可以,但是此时的硬盘IO会很高,可能会影响效率。 +可以,但是此时的硬盘 IO 会很高,可能会影响效率。 ### 全量`Compaction`操作会耗费多长时间? @@ -126,4 +126,4 @@ Level Files Size Score Read(GB) Rn(GB) Rnp1(GB) Write(GB) Wnew(GB) Mov ### 全量`Compaction`操作开始后可以停止吗? -不可以停止,必须等待操作完成。这是RocksDB的限制。 +不可以停止,必须等待操作完成。这是 RocksDB 的限制。 diff --git a/docs-2.0/8.service-tuning/load-balance.md b/docs-2.0/8.service-tuning/load-balance.md index 0d8786d322d..5974a46b37a 100644 --- a/docs-2.0/8.service-tuning/load-balance.md +++ b/docs-2.0/8.service-tuning/load-balance.md @@ -1,20 +1,20 @@ -# Storage负载均衡 +# Storage 负载均衡 -用户可以使用`BALANCE`语句平衡分片和Raft leader的分布,或者删除冗余的Storage服务器。 +用户可以使用`BALANCE`语句平衡分片和 Raft leader 的分布,或者删除冗余的 Storage 服务器。 ## 均衡分片分布 -`BALANCE DATA`语句会开始一个任务,将Nebula Graph集群中的分片平均分配到所有Storage服务器。通过创建和执行一组子任务来迁移数据和均衡分片分布。 +`BALANCE DATA`语句会开始一个任务,将 Nebula Graph 集群中的分片平均分配到所有 Storage 服务器。通过创建和执行一组子任务来迁移数据和均衡分片分布。 !!! danger - 不要停止集群中的任何机器或改变机器的IP地址,直到所有子任务完成,否则后续子任务会失败。 + 不要停止集群中的任何机器或改变机器的 IP 地址,直到所有子任务完成,否则后续子任务会失败。 ### 示例 -以横向扩容Nebula Graph为例,集群中增加新的Storage服务器后,新服务器上没有分片。 +以横向扩容 Nebula Graph 为例,集群中增加新的 Storage 服务器后,新服务器上没有分片。 -1. 执行命令[`SHOW HOSTS`](../3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md)检查分片的分布。 +1. 执行命令 [`SHOW HOSTS`](../3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md) 检查分片的分布。 ```ngql nebual> SHOW HOSTS; @@ -41,7 +41,7 @@ +------------+ ``` -3. 根据返回的任务ID,执行命令`BALANCE DATA `检查任务状态。 +3. 根据返回的任务 ID,执行命令`BALANCE DATA `检查任务状态。 ```ngql nebula> BALANCE DATA 1614237867; @@ -60,7 +60,7 @@ !!! Note - `BALANCE DATA`不会均衡leader的分布。均衡leader请参见[均衡leader分布](#leader)。 + `BALANCE DATA`不会均衡 leader 的分布。均衡 leader 请参见[均衡 leader 分布](#leader)。 ```ngql nebula> SHOW HOSTS; @@ -76,7 +76,7 @@ +-------------+------+----------+--------------+-----------------------------------+------------------------+ ``` -如果有子任务失败,请重新执行`BALANCE DATA`。如果重做负载均衡仍然不能解决问题,请到[Nebula Graph社区](https://discuss.nebula-graph.com.cn/)寻求帮助。 +如果有子任务失败,请重新执行`BALANCE DATA`。如果重做负载均衡仍然不能解决问题,请到 [Nebula Graph 社区](https://discuss.nebula-graph.com.cn/)寻求帮助。 ## 停止负载均衡任务 @@ -84,29 +84,29 @@ - 如果没有正在执行的负载均衡任务,会返回错误。 -- 如果有正在执行的负载均衡任务,会返回停止的任务ID(`balance_id`)。 +- 如果有正在执行的负载均衡任务,会返回停止的任务 ID(`balance_id`)。 `BALANCE DATA STOP`不会停止正在执行的子任务,而是取消所有后续子任务。用户可以执行命令`BALANCE DATA `检查停止的任务状态。 一旦所有子任务都完成或停止,用户可以再次执行命令`BALANCE DATA`。 -- 如果前一个负载均衡任务的任何一个子任务失败,Nebula Graph会重新启动之前的负载均衡任务。 +- 如果前一个负载均衡任务的任何一个子任务失败,Nebula Graph 会重新启动之前的负载均衡任务。 -- 如果前一个负载均衡任务的任何一个子任务都没有失败,Nebula Graph会启动一个新的的负载均衡任务。 +- 如果前一个负载均衡任务的任何一个子任务都没有失败,Nebula Graph 会启动一个新的的负载均衡任务。 ## 重置负载均衡任务 如果停止负载均衡任务后重新执行仍然失败,可以尝试用命令`BALANCE DATA RESET PLAN`重置负载均衡任务,该操作会清空旧的任务。之后再使用`BALANCE DATA`命令,会新建负载均衡任务,而不是执行旧的任务。 -## 移除Storage服务器 +## 移除 Storage 服务器 -移除指定的Storage服务器来缩小集群规模,可以使用命令`BALANCE DATA REMOVE `。 +移除指定的 Storage 服务器来缩小集群规模,可以使用命令`BALANCE DATA REMOVE `。 ### 示例 -如果需要移除以下两台Storage服务器。 +如果需要移除以下两台 Storage 服务器。 -|服务器名称|IP地址|端口| +|服务器名称|IP 地址|端口| |:---|:---|:---| |storage3|192.168.0.8|9779| |storage4|192.168.0.9|9779| @@ -117,15 +117,15 @@ BALANCE DATA REMOVE 192.168.0.8:9779,192.168.0.9:9779; ``` -Nebula Graph将启动一个负载均衡任务,迁移storage3和storage4中的分片,然后将服务器从集群中移除。 +Nebula Graph 将启动一个负载均衡任务,迁移 storage3 和 storage4 中的分片,然后将服务器从集群中移除。 !!! note 已下线节点状态会显示为 OFFLINE。该记录一天后删除,或更改 meta 配置项 `removed_threshold_sec`。 -## 均衡leader分布 +## 均衡 leader 分布 -`BALANCE DATA`只能均衡分片分布,不能均衡Raft leader分布。用户可以使用命令`BALANCE LEADER`均衡leader分布。 +`BALANCE DATA`只能均衡分片分布,不能均衡 Raft leader 分布。用户可以使用命令`BALANCE LEADER`均衡 leader 分布。 ### 示例 @@ -151,4 +151,4 @@ nebula> SHOW HOSTS; !!! caution - 在 Nebula Graph {{ nebula.release }} 中,Leader 切换会导致短时的大量请求错误(Storage Error `E_RPC_FAILURE`),处理方法见[FAQ](../20.appendix/0.FAQ.md)。 + 在 Nebula Graph {{ nebula.release }} 中,Leader 切换会导致短时的大量请求错误(Storage Error `E_RPC_FAILURE`),处理方法见 [FAQ](../20.appendix/0.FAQ.md)。 diff --git a/docs-2.0/8.service-tuning/practice.md b/docs-2.0/8.service-tuning/practice.md index f8503384317..a9cea623c74 100644 --- a/docs-2.0/8.service-tuning/practice.md +++ b/docs-2.0/8.service-tuning/practice.md @@ -1,6 +1,6 @@ # 实践案例 -Nebula Graph在各行各业都有应用,本文介绍部分实践案例。更多实践分享内容请参见[博客](https://nebula-graph.com.cn/posts/)。 +Nebula Graph 在各行各业都有应用,本文介绍部分实践案例。更多实践分享内容请参见[博客](https://nebula-graph.com.cn/posts/)。 ## 业务场景 @@ -12,22 +12,30 @@ Nebula Graph在各行各业都有应用,本文介绍部分实践案例。更 ## 内核 -- [MATCH中变长Pattern的实现](https://nebula-graph.com.cn/posts/nebula-graph-source-code-reading-06/) +- [MATCH 中变长 Pattern 的实现](https://nebula-graph.com.cn/posts/nebula-graph-source-code-reading-06/) -- [如何向Nebula Graph增加一个测试用例](https://nebula-graph.com.cn/posts/bdd-testing-practice-add-test-case/) +- [如何向 Nebula Graph 增加一个测试用例](https://nebula-graph.com.cn/posts/bdd-testing-practice-add-test-case/) -- [基于BDD理论的Nebula集成测试框架重构(上)](https://nebula-graph.com.cn/posts/bdd-testing-practice/) +- [基于 BDD 理论的 Nebula 集成测试框架重构(上)](https://nebula-graph.com.cn/posts/bdd-testing-practice/) -- [基于BDD理论的Nebula集成测试框架重构(下)](https://nebula-graph.com.cn/posts/bdd-testing-practice-volume-2/) +- [基于 BDD 理论的 Nebula 集成测试框架重构(下)](https://nebula-graph.com.cn/posts/bdd-testing-practice-volume-2/) -- [解析Nebula Graph子图设计及实践](https://nebula-graph.com.cn/posts/nebula-graph-subgraph-introduction/) +- [解析 Nebula Graph 子图设计及实践](https://nebula-graph.com.cn/posts/nebula-graph-subgraph-introduction/) - [基于全文搜索引擎的文本搜索](https://nebula-graph.com.cn/posts/how-fulltext-index-works/) +- [实操 | LDBC 数据导入及 nGQL 实践](https://nebula-graph.com.cn/posts/query-graph-with-ldbc-dataset/) + ## 周边工具 -- [基于Nebula Importer批量导入工具性能验证方案总结](https://nebula-graph.com.cn/posts/nebula-importer-practice/) +- [基于 Nebula Importer 批量导入工具性能验证方案总结](https://nebula-graph.com.cn/posts/nebula-importer-practice/) + +- [详解 Nebula 2.0 性能测试和 Nebula Importer 数据导入调优](https://nebula-graph.com.cn/posts/v2.0-benchmark-and-nebula-importer-optimize/) + +- [Nebula Graph 支持 JDBC 协议](https://nebula-graph.com.cn/posts/what-is-nebula-jdbc/) + +- [Nebula·利器 | Norm 知乎开源的 ORM 工具](https://nebula-graph.com.cn/posts/zhihu-open-source-orm-tool/) -- [详解Nebula 2.0性能测试和Nebula Importer数据导入调优](https://nebula-graph.com.cn/posts/v2.0-benchmark-and-nebula-importer-optimize/) +- [基于 Nebula Graph 的 Betweenness Centrality 算法](https://nebula-graph.com.cn/posts/introduction-to-betweenness-centrality-algorithm/) -- [Nebula Graph支持JDBC协议](https://nebula-graph.com.cn/posts/what-is-nebula-jdbc/) +- [无依赖单机尝鲜 Nebula Exchange 的 SST 导入](https://nebula-graph.com.cn/posts/import-sst-data-without-dependence/) diff --git a/docs-2.0/8.service-tuning/super-node.md b/docs-2.0/8.service-tuning/super-node.md index efdaf208bc1..f1ed3348883 100644 --- a/docs-2.0/8.service-tuning/super-node.md +++ b/docs-2.0/8.service-tuning/super-node.md @@ -5,11 +5,11 @@ 在图论中,超级顶点(稠密点)是指一个点有着极多的相邻边。相邻边可以是出边(我指向谁)或者是入边(谁指向我)。 由于幂律分布的特点,超级顶点现象非常普遍。 -例如社交网络中的影响力领袖(网红大V)、证券市场中的热门股票、银行系统中的四大行、交通网络中的枢纽站、互联网中的高流量网站等、电商网络中的爆款产品。 +例如社交网络中的影响力领袖(网红大 V)、证券市场中的热门股票、银行系统中的四大行、交通网络中的枢纽站、互联网中的高流量网站等、电商网络中的爆款产品。 -在 Nebula Graph {{ nebula.release }} 中,一个`点` 和其`属性`是一个 `Key-Value`(以该点的 `VID` 以及其他元信息作为 `Key`),其 `Out-Edge Key-Value` 和 `In-Edge Key-Value` 都存储在同一个 partition 中(具体原理详见[存储架构](../1.introduction/3.nebula-graph-architecture/4.storage-service.md),并且以 LSM-tree 的形式组织存放在硬盘(和缓存)中。 +在 Nebula Graph {{ nebula.release }} 中,一个`点` 和其`属性`是一个 `Key-Value`(以该点的 `VID` 以及其他元信息作为 `Key`),其 `Out-Edge Key-Value` 和 `In-Edge Key-Value` 都存储在同一个 partition 中(具体原理详见[存储架构](../1.introduction/3.nebula-graph-architecture/4.storage-service.md),并且以 LSM-tree 的形式组织存放在硬盘(和缓存)中。 -因此不论是`从该点出发的有向遍历`,或者`以该点为终点的有向遍历`,都会涉及到大量的`顺序 IO 扫描`(最理想情况,当完成[Compact](../8.service-tuning/compaction.md)操作之后),或者大量的`随机 IO`(有关于`该点`和其`出入边`频繁的写入)。 +因此不论是`从该点出发的有向遍历`,或者`以该点为终点的有向遍历`,都会涉及到大量的`顺序 IO 扫描`(最理想情况,当完成 [Compact](../8.service-tuning/compaction.md) 操作之后),或者大量的`随机 IO`(有关于`该点`和其`出入边`频繁的写入)。 经验上说,当一个点的出入度超过 1 万时,就可以视为是稠密点。需要考虑一些特殊的设计和处理。 @@ -40,24 +40,24 @@ Nebula Graph {{ nebula.release }} 属性索引的设计复用了存储模块 Roc - 删除多条边,合并为一条 - 例如,一个转账场景: `(账户A)-[转账]->(账户B)`。每次`转账`建模为`一条AB之间的边`,那么`(账户A)`和`(账户B)`之间会有着数万十次转账的场景。 + 例如,一个转账场景: `(账户 A)-[转账]->(账户 B)`。每次`转账`建模为`一条 AB 之间的边`,那么`(账户 A)`和`(账户 B)`之间会有着数万十次转账的场景。 按日、周、或者月为粒度,合并陈旧的转账明细。也就是批量删除陈旧的边,改为少量的边“月总额”和“次数。而保留最近月的转账明细。 - 拆分相同类型的边,变为多种不同类型的边 - 例如,`(机场)<-[depart]-(航班)`场景,每个架次航班的离港,都建模为一条航班和机场之间的边。那么大型机场的离港航班会极多。 + 例如,`(机场)<-[depart]-(航班)`场景,每个架次航班的离港,都建模为一条航班和机场之间的边。那么大型机场的离港航班会极多。 - 根据不同的`航空公司`将 `depart` 这个Edge type拆分更细的Edge type,如 `depart_ceair`, `depart_csair` 等。在查询(图遍历)时,指定离港的航空公司。 + 根据不同的`航空公司`将 `depart` 这个 Edge type 拆分更细的 Edge type,如 `depart_ceair`, `depart_csair` 等。在查询(图遍历)时,指定离港的航空公司。 - 切分顶点本身 - 例如,对于`(人)-[借款]->(银行)`的借款网络,某大型银行A的借款次数和借款人会非常的多。 + 例如,对于`(人)-[借款]->(银行)`的借款网络,某大型银行 A 的借款次数和借款人会非常的多。 可以将该大行节点 A 拆分为多个相关联的子节点 A1、A2、A3, ```text - (人1)-[借款]->(银行A1), (人2)-[借款]->(银行A2), (人2)-[借款]->(银行A3); - (银行A1)-[属于]->(银行A), (银行A2)-[属于]->(银行A), (银行A3)-[属于]->(银行A). + (人 1)-[借款]->(银行 A1), (人 2)-[借款]->(银行 A2), (人 2)-[借款]->(银行 A3); + (银行 A1)-[属于]->(银行 A), (银行 A2)-[属于]->(银行 A), (银行 A3)-[属于]->(银行 A). ``` 这里的 A1、A2、A3 既可以是 A 真实的三个分行(例如北京、上海、浙江),也可以是三个按某种规则设立的虚拟分行,例如按借款金额划分 `A1: 1-1000, A2: 1001-10000, A3: 10000+`。这样,查询时对于 A 的任何操作,都转变为为对于 A1、A2、A3 的三次单独操作。 diff --git a/docs-2.0/README.md b/docs-2.0/README.md index 1736a44ef90..f1cf5f35d6c 100644 --- a/docs-2.0/README.md +++ b/docs-2.0/README.md @@ -1,14 +1,14 @@ -# 欢迎阅读Nebula Graph {{ nebula.release }} 文档 +# 欢迎阅读 Nebula Graph {{ nebula.release }} 文档 !!! Note "确认正在阅读最新的版本" - 本文档更新时间{{ now().year }}-{{ now().month }}-{{ now().day }}, [GitHub commit](https://github.com/vesoft-inc/nebula-docs/commits/v{{nebula.release}}) {{ git.short_commit }}。 + 本文档更新时间{{ now().year }}-{{ now().month }}-{{ now().day }},[GitHub commit](https://github.com/vesoft-inc/nebula-docs/commits/v{{nebula.release}}) {{ git.short_commit }}。 -Nebula Graph是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。 +Nebula Graph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。 ## 快速开始 @@ -26,12 +26,10 @@ Graph 完全指南》](https://docs.nebula-graph.com.cn/site/pdf/NebulaGraph-boo - [论坛](https://discuss.nebula-graph.com.cn/) - [项目主页](https://nebula-graph.com.cn/) - [系列视频](https://space.bilibili.com/472621355) -- [思维导图](20.appendix/mind-map.md) - [English](https://docs.nebula-graph.io/) ## 图例说明 - -- 下载[pulsar-spark-connector_2.11](https://oss-cdn.nebula-graph.com.cn/jar-packages/pulsar-spark-connector_2.11.zip),解压到本地Maven库的目录`io/streamnative/connectors`中。 + +- 下载 [pulsar-spark-connector_2.11](https://oss-cdn.nebula-graph.com.cn/jar-packages/pulsar-spark-connector_2.11.zip),解压到本地 Maven 库的目录`io/streamnative/connectors`中。 ### 操作步骤 @@ -37,7 +37,7 @@ cd nebula-exchange/nebula-exchange ``` -3. 打包Nebula Exchange。 +3. 打包 Nebula Exchange。 ```bash mvn clean package -Dmaven.test.skip=true -Dgpg.skip -Dmaven.javadoc.skip=true @@ -67,9 +67,9 @@ 在`target`目录下,用户可以找到`exchange-2.x.y.jar`文件。 !!! note - JAR文件版本号会因Nebula Java Client的发布版本而变化。用户可以在[Releases页面](https://github.com/vesoft-inc/nebula-java/releases)查看最新版本。 + JAR 文件版本号会因 Nebula Java Client 的发布版本而变化。用户可以在 [Releases 页面](https://github.com/vesoft-inc/nebula-java/releases)查看最新版本。 -迁移数据时,用户可以参考配置文件[`target/classes/application.conf`](https://github.com/vesoft-inc/nebula-exchange/blob/master/nebula-exchange/src/main/resources/application.conf)。 +迁移数据时,用户可以参考配置文件 [`target/classes/application.conf`](https://github.com/vesoft-inc/nebula-exchange/blob/master/nebula-exchange/src/main/resources/application.conf)。 ### 下载依赖包失败 @@ -77,7 +77,7 @@ - 检查网络设置,确认网络正常。 -- 修改Maven安装目录下`libexec/conf/settings.xml`文件的`mirror`部分: +- 修改 Maven 安装目录下`libexec/conf/settings.xml`文件的`mirror`部分: ```text diff --git a/docs-2.0/nebula-exchange/ex-ug-toc.md b/docs-2.0/nebula-exchange/ex-ug-toc.md deleted file mode 100644 index 5b58bd5ff7d..00000000000 --- a/docs-2.0/nebula-exchange/ex-ug-toc.md +++ /dev/null @@ -1,25 +0,0 @@ -# Nebula Exchange 用户手册 - -- 认识 Nebula Exchange - - [什么是 Nebula Exchange](about-exchange/ex-ug-what-is-exchange.md) - - [使用限制](about-exchange/ex-ug-limitations.md) - - [名词解释](about-exchange/ex-ug-terms.md) -- [编译 Exchange](ex-ug-compile.md) -- 操作指南 - - [导入Apache Parquet数据](use-exchange/ex-ug-import-from-parquet.md) - - [导入Apache ORC数据](use-exchange/ex-ug-import-from-orc.md) - - [导入JSON数据](use-exchange/ex-ug-import-from-json.md) - - [导入CSV数据](use-exchange/ex-ug-import-from-csv.md) - - [导入Neo4j数据](use-exchange/ex-ug-import-from-neo4j.md) - - [导入Apache HBase™数据](use-exchange/ex-ug-import-from-hbase.md) - - [导入Hive数据](use-exchange/ex-ug-import-from-hive.md) - - [导入MySQL数据](use-exchange/ex-ug-import-from-mysql.md) - - [导入Kafka数据](use-exchange/ex-ug-import-from-kafka.md) - - [导入Pulsar数据](use-exchange/ex-ug-import-from-pulsar.md) - - 导入SST文件(TODO:doc) -- 参数说明 - - [配置说明](parameter-reference/ex-ug-parameter.md) - - [导入命令参数](parameter-reference/ex-ug-para-import-command.md) -- [常见问题](ex-ug-FAQ.md) -- 错误信息(TODO:doc) - diff --git a/docs-2.0/nebula-exchange/parameter-reference/ex-ug-para-import-command.md b/docs-2.0/nebula-exchange/parameter-reference/ex-ug-para-import-command.md index 759cdddde83..e05ac7e6c27 100644 --- a/docs-2.0/nebula-exchange/parameter-reference/ex-ug-para-import-command.md +++ b/docs-2.0/nebula-exchange/parameter-reference/ex-ug-para-import-command.md @@ -1,6 +1,6 @@ # 导入命令参数 -完成配置文件修改后,可以运行以下命令将指定来源的数据导入Nebula Graph数据库。 +完成配置文件修改后,可以运行以下命令将指定来源的数据导入 Nebula Graph 数据库。 - 首次导入 @@ -8,20 +8,20 @@ /bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c ``` -- 导入reload文件 +- 导入 reload 文件 - 如果首次导入时有一些数据导入失败,会将导入失败的数据存入reload文件,可以用参数`-r`尝试导入reload文件。 + 如果首次导入时有一些数据导入失败,会将导入失败的数据存入 reload 文件,可以用参数`-r`尝试导入 reload 文件。 ```bash /bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c -r "" ``` !!! note - JAR文件版本号以实际编译得到的JAR文件名称为准。 + JAR 文件版本号以实际编译得到的 JAR 文件名称为准。 !!! note - 如果使用[yarn-cluster模式](https://spark-reference-doc-cn.readthedocs.io/zh_CN/latest/deploy-guide/running-on-yarn.html)提交任务,请参考如下示例: + 如果使用 [yarn-cluster 模式](https://spark-reference-doc-cn.readthedocs.io/zh_CN/latest/deploy-guide/running-on-yarn.html)提交任务,请参考如下示例: ```bash $SPARK_HOME/bin/spark-submit --master yarn-cluster \ @@ -38,10 +38,10 @@ | 参数 | 是否必需 | 默认值 | 说明 | | :--- | :--- | :--- | :--- | | `--class`  | 是 | 无 | 指定驱动的主类。 | -| `--master`  | 是 | 无 | 指定Spark集群中master进程的URL。详情请参见[master-urls](https://spark.apache.org/docs/latest/submitting-applications.html#master-urls "点击前往 Apache Spark 文档")。 | +| `--master`  | 是 | 无 | 指定 Spark 集群中 master 进程的 URL。详情请参见 [master-urls](https://spark.apache.org/docs/latest/submitting-applications.html#master-urls "点击前往 Apache Spark 文档")。 | | `-c`  / `--config`  | 是 | 无 | 指定配置文件的路径。 | -| `-h`  / `--hive`  | 否 | `false` | 添加这个参数表示支持从Hive中导入数据。 | +| `-h`  / `--hive`  | 否 | `false` | 添加这个参数表示支持从 Hive 中导入数据。 | | `-D`  / `--dry`  | 否 | `false` | 添加这个参数表示检查配置文件的格式是否符合要求,但不会校验`tags`和`edges`的配置项是否正确。正式导入数据时不能添加这个参数。 | -|-r / --reload | 否 | 无 | 指定需要重新加载的reload文件路径。 | +|-r / --reload | 否 | 无 | 指定需要重新加载的 reload 文件路径。 | -更多Spark的参数配置说明请参见[Spark Configuration](https://spark.apache.org/docs/latest/configuration.html#runtime-environment)。 +更多 Spark 的参数配置说明请参见 [Spark Configuration](https://spark.apache.org/docs/latest/configuration.html#runtime-environment)。 diff --git a/docs-2.0/nebula-exchange/parameter-reference/ex-ug-parameter.md b/docs-2.0/nebula-exchange/parameter-reference/ex-ug-parameter.md index ca6b0e8a267..48b30248a79 100644 --- a/docs-2.0/nebula-exchange/parameter-reference/ex-ug-parameter.md +++ b/docs-2.0/nebula-exchange/parameter-reference/ex-ug-parameter.md @@ -1,70 +1,70 @@ # 配置说明 -本文介绍使用Nebula Exchange时如何修改配置文件[`application.conf`](https://github.com/vesoft-inc/nebula-exchange/blob/master/nebula-exchange/src/main/resources/application.conf)。 +本文介绍使用 Nebula Exchange 时如何修改配置文件 [`application.conf`](https://github.com/vesoft-inc/nebula-exchange/blob/master/nebula-exchange/src/main/resources/application.conf)。 -修改配置文件之前,建议根据数据源复制并修改文件名称,便于区分。例如数据源为CSV文件,可以复制为`csv_application.conf`。 +修改配置文件之前,建议根据数据源复制并修改文件名称,便于区分。例如数据源为 CSV 文件,可以复制为`csv_application.conf`。 配置文件的内容主要分为如下几类: -- Spark相关配置 +- Spark 相关配置 -- Hive配置(可选) +- Hive 配置(可选) -- Nebula Graph相关配置 +- Nebula Graph 相关配置 - 点配置 - 边配置 -## Spark相关配置 +## Spark 相关配置 -本文只列出部分Spark参数,更多参数请参见[官方文档](https://spark.apache.org/docs/latest/configuration.html#application-properties)。 +本文只列出部分 Spark 参数,更多参数请参见[官方文档](https://spark.apache.org/docs/latest/configuration.html#application-properties)。 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`spark.app.name`|string|-|否|Spark驱动程序名称。| -|`spark.driver.cores`|int|`1`|否|驱动程序使用的CPU核数,仅适用于集群模式。| -|`spark.driver.maxResultSize`|string|`1G`|否|单个Spark操作(例如collect)时,所有分区的序列化结果的总大小限制(字节为单位)。最小值为1M,0表示无限制。| -|`spark.executor.memory`|string|`1G`|否|Spark驱动程序使用的内存量,可以指定单位,例如512M、1G。| -|`spark.cores.max`|int|`16`|否|当驱动程序以“粗粒度”共享模式在独立部署集群或Mesos集群上运行时,跨集群(而非从每台计算机)请求应用程序的最大CPU核数。如果未设置,则值为Spark的独立集群管理器上的`spark.deploy.defaultCores`或Mesos上的infinite(所有可用的内核)。| +|`spark.app.name`|string|-|否|Spark 驱动程序名称。| +|`spark.driver.cores`|int|`1`|否|驱动程序使用的 CPU 核数,仅适用于集群模式。| +|`spark.driver.maxResultSize`|string|`1G`|否|单个 Spark 操作(例如 collect)时,所有分区的序列化结果的总大小限制(字节为单位)。最小值为 1M,0 表示无限制。| +|`spark.executor.memory`|string|`1G`|否|Spark 驱动程序使用的内存量,可以指定单位,例如 512M、1G。| +|`spark.cores.max`|int|`16`|否|当驱动程序以“粗粒度”共享模式在独立部署集群或 Mesos 集群上运行时,跨集群(而非从每台计算机)请求应用程序的最大 CPU 核数。如果未设置,则值为 Spark 的独立集群管理器上的`spark.deploy.defaultCores`或 Mesos 上的 infinite(所有可用的内核)。| -## Hive配置(可选) +## Hive 配置(可选) -如果Spark和Hive部署在不同集群,才需要配置连接Hive的参数,否则请忽略这些配置。 +如果 Spark 和 Hive 部署在不同集群,才需要配置连接 Hive 的参数,否则请忽略这些配置。 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`hive.warehouse`|string|-|是|HDFS中的warehouse路径。用双引号括起路径,以`hdfs://`开头。| -|`hive.connectionURL`|string|-|是|JDBC连接的URL。例如`"jdbc:mysql://127.0.0.1:3306/hive_spark?characterEncoding=UTF-8"`。| +|`hive.warehouse`|string|-|是|HDFS 中的 warehouse 路径。用双引号括起路径,以`hdfs://`开头。| +|`hive.connectionURL`|string|-|是|JDBC 连接的 URL。例如`"jdbc:mysql://127.0.0.1:3306/hive_spark?characterEncoding=UTF-8"`。| |`hive.connectionDriverName`|string|`"com.mysql.jdbc.Driver"`|是|驱动名称。| |`hive.connectionUserName`|list\[string\]|-|是|连接的用户名。| |`hive.connectionPassword`|list\[string\]|-|是|用户名对应的密码。| -## Nebula Graph相关配置 +## Nebula Graph 相关配置 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`nebula.address.graph`|list\[string\]|`["127.0.0.1:9669"]`|是|所有Graph服务的地址,包括IP和端口,多个地址用英文逗号(,)分隔。格式为`["ip1:port1","ip2:port2","ip3:port3"]`。| -|`nebula.address.meta`|list\[string\]|`["127.0.0.1:9559"]`|是|所有Meta服务的地址,包括IP和端口,多个地址用英文逗号(,)分隔。格式为`["ip1:port1","ip2:port2","ip3:port3"]`。| -|`nebula.user`|string|-|是|拥有Nebula Graph写权限的用户名。| +|`nebula.address.graph`|list\[string\]|`["127.0.0.1:9669"]`|是|所有 Graph 服务的地址,包括 IP 和端口,多个地址用英文逗号(,)分隔。格式为`["ip1:port1","ip2:port2","ip3:port3"]`。| +|`nebula.address.meta`|list\[string\]|`["127.0.0.1:9559"]`|是|所有 Meta 服务的地址,包括 IP 和端口,多个地址用英文逗号(,)分隔。格式为`["ip1:port1","ip2:port2","ip3:port3"]`。| +|`nebula.user`|string|-|是|拥有 Nebula Graph 写权限的用户名。| |`nebula.pswd`|string|-|是|用户名对应的密码。| |`nebula.space`|string|-|是|需要导入数据的的图空间名称。| -|`nebula.ssl.enable.graph`|bool|`false`|是|开启Exchange与Graph服务之间的[SSL加密](https://en.wikipedia.org/wiki/Transport_Layer_Security)传输。当值为`true`时开启,下方的SSL相关参数生效。如果Exchange运行在多机集群上,在设置以下SSL相关路径时,需要在每台机器的相同路径都存储相应的文件。| -|`nebula.ssl.sign`|string|`ca`|是|签名方式,可选值:`ca`(CA签名)或`self`(自签名)。| -|`nebula.ssl.ca.param.caCrtFilePath`|string|`"/path/caCrtFilePath"`|是|`nebula.ssl.sign`的值为`ca`时生效,用于指定CA证书的存储路径。| -|`nebula.ssl.ca.param.crtFilePath`|string|`"/path/crtFilePath"`|是|`nebula.ssl.sign`的值为`ca`时生效,用于指定CRT证书的存储路径。| +|`nebula.ssl.enable.graph`|bool|`false`|是|开启 Exchange 与 Graph 服务之间的 [SSL 加密](https://en.wikipedia.org/wiki/Transport_Layer_Security)传输。当值为`true`时开启,下方的 SSL 相关参数生效。如果 Exchange 运行在多机集群上,在设置以下 SSL 相关路径时,需要在每台机器的相同路径都存储相应的文件。| +|`nebula.ssl.sign`|string|`ca`|是|签名方式,可选值:`ca`(CA 签名)或`self`(自签名)。| +|`nebula.ssl.ca.param.caCrtFilePath`|string|`"/path/caCrtFilePath"`|是|`nebula.ssl.sign`的值为`ca`时生效,用于指定 CA 证书的存储路径。| +|`nebula.ssl.ca.param.crtFilePath`|string|`"/path/crtFilePath"`|是|`nebula.ssl.sign`的值为`ca`时生效,用于指定 CRT 证书的存储路径。| |`nebula.ssl.ca.param.keyFilePath`|string|`"/path/keyFilePath"`|是|`nebula.ssl.sign`的值为`ca`时生效,用于指定私钥文件的存储路径。| -|`nebula.ssl.self.param.crtFilePath`|string|`"/path/crtFilePath"`|是|`nebula.ssl.sign`的值为`self`时生效,用于指定CRT证书的存储路径。| +|`nebula.ssl.self.param.crtFilePath`|string|`"/path/crtFilePath"`|是|`nebula.ssl.sign`的值为`self`时生效,用于指定 CRT 证书的存储路径。| |`nebula.ssl.self.param.keyFilePath`|string|`"/path/keyFilePath"`|是|`nebula.ssl.sign`的值为`self`时生效,用于指定私钥文件的存储路径。| |`nebula.ssl.self.param.password`|string|`"nebula"`|是|`nebula.ssl.sign`的值为`self`时生效,用于指定密码文件的存储路径。| -|`nebula.path.local`|string|`"/tmp"`|否|导入SST文件时需要设置本地SST文件路径。| -|`nebula.path.remote`|string|`"/sst"`|否|导入SST文件时需要设置远端SST文件路径。| -|`nebula.path.hdfs.namenode`|string|`"hdfs://name_node:9000"`|否|导入SST文件时需要设置HDFS的namenode。| -|`nebula.connection.timeout`|int|`3000`|否|Thrift连接的超时时间,单位为 ms。| -|`nebula.connection.retry`|int|`3`|否|Thrift连接重试次数。| -|`nebula.execution.retry`|int|`3`|否|nGQL语句执行重试次数。| -|`nebula.error.max`|int|`32`|否|导入过程中的最大失败次数。当失败次数达到最大值时,提交的Spark作业将自动停止。| -|`nebula.error.output`|string|`/tmp/errors`|否|输出错误日志的路径。错误日志保存执行失败的nGQL语句。| +|`nebula.path.local`|string|`"/tmp"`|否|导入 SST 文件时需要设置本地 SST 文件路径。| +|`nebula.path.remote`|string|`"/sst"`|否|导入 SST 文件时需要设置远端 SST 文件路径。| +|`nebula.path.hdfs.namenode`|string|`"hdfs://name_node:9000"`|否|导入 SST 文件时需要设置 HDFS 的 namenode。| +|`nebula.connection.timeout`|int|`3000`|否|Thrift 连接的超时时间,单位为 ms。| +|`nebula.connection.retry`|int|`3`|否|Thrift 连接重试次数。| +|`nebula.execution.retry`|int|`3`|否|nGQL 语句执行重试次数。| +|`nebula.error.max`|int|`32`|否|导入过程中的最大失败次数。当失败次数达到最大值时,提交的 Spark 作业将自动停止。| +|`nebula.error.output`|string|`/tmp/errors`|否|输出错误日志的路径。错误日志保存执行失败的 nGQL 语句。| |`nebula.rate.limit`|int|`1024`|否|导入数据时令牌桶的令牌数量限制。| |`nebula.rate.timeout`|int|`1000`|否|令牌桶中拿取令牌的超时时间,单位:毫秒。| @@ -76,150 +76,150 @@ |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.name`|string|-|是|Nebula Graph中定义的Tag名称。| +|`tags.name`|string|-|是|Nebula Graph 中定义的 Tag 名称。| |`tags.type.source`|string|-|是|指定数据源。例如`csv`。| |`tags.type.sink`|string|`client`|是|指定导入方式,可选值为`client`和`SST`。| -|`tags.fields`|list\[string\]|-|是|属性对应的列的表头或列名。如果有表头或列名,请直接使用该名称。如果CSV文件没有表头,用`[_c0, _c1, _c2]`的形式表示第一列、第二列、第三列,以此类推。| -|`tags.nebula.fields`|list\[string\]|-|是|Nebula Graph中定义的属性名称,顺序必须和`tags.fields`一一对应。例如`[_c1, _c2]`对应`[name, age]`,表示第二列为属性name的值,第三列为属性age的值。| -|`tags.vertex.field`|string|-|是|点ID的列。例如CSV文件没有表头时,可以用`_c0`表示第一列的值作为点ID。| -|`tags.batch`|int|`256`|是|单批次写入Nebula Graph的最大点数量。| -|`tags.partition`|int|`32`|是|Spark分片数量。| +|`tags.fields`|list\[string\]|-|是|属性对应的列的表头或列名。如果有表头或列名,请直接使用该名称。如果 CSV 文件没有表头,用`[_c0, _c1, _c2]`的形式表示第一列、第二列、第三列,以此类推。| +|`tags.nebula.fields`|list\[string\]|-|是|Nebula Graph 中定义的属性名称,顺序必须和`tags.fields`一一对应。例如`[_c1, _c2]`对应`[name, age]`,表示第二列为属性 name 的值,第三列为属性 age 的值。| +|`tags.vertex.field`|string|-|是|点 ID 的列。例如 CSV 文件没有表头时,可以用`_c0`表示第一列的值作为点 ID。| +|`tags.batch`|int|`256`|是|单批次写入 Nebula Graph 的最大点数量。| +|`tags.partition`|int|`32`|是|Spark 分片数量。| -### Parquet/JSON/ORC源特有参数 +### Parquet/JSON/ORC 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.path`|string|-|是|HDFS中点数据文件的路径。用双引号括起路径,以`hdfs://`开头。| +|`tags.path`|string|-|是|HDFS 中点数据文件的路径。用双引号括起路径,以`hdfs://`开头。| -### CSV源特有参数 +### CSV 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.path`|string|-|是|HDFS中点数据文件的路径。用双引号括起路径,以`hdfs://`开头。| +|`tags.path`|string|-|是|HDFS 中点数据文件的路径。用双引号括起路径,以`hdfs://`开头。| |`tags.separator`|string|`,`|是|分隔符。默认值为英文逗号(,)。| |`tags.header`|bool|`true`|是|文件是否有表头。| -### Hive源特有参数 +### Hive 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| |`tags.exec`|string|-|是|查询数据源的语句。例如`select name,age from mooc.users`。| -### MaxCompute源特有参数 +### MaxCompute 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.table`|string|-|是|MaxCompute的表名。| -|`tags.project`|string|-|是|MaxCompute的项目名。| -|`tags.odpsUrl`|string|-|是|MaxCompute服务的odpsUrl。地址可根据[阿里云文档](https://help.aliyun.com/document_detail/34951.html)查看。| -|`tags.tunnelUrl`|string|-|是|MaxCompute服务的tunnelUrl。地址可根据[阿里云文档](https://help.aliyun.com/document_detail/34951.html)查看。| -|`tags.accessKeyId`|string|-|是|MaxCompute服务的accessKeyId。| -|`tags.accessKeySecret`|string|-|是|MaxCompute服务的accessKeySecret。| -|`tags.partitionSpec`|string|-|否|MaxCompute表的分区描述。| -|`tags.sentence`|string|-|否|查询数据源的语句。SQL语句中的表名和上方table的值相同。| +|`tags.table`|string|-|是|MaxCompute 的表名。| +|`tags.project`|string|-|是|MaxCompute 的项目名。| +|`tags.odpsUrl`|string|-|是|MaxCompute 服务的 odpsUrl。地址可根据[阿里云文档](https://help.aliyun.com/document_detail/34951.html)查看。| +|`tags.tunnelUrl`|string|-|是|MaxCompute 服务的 tunnelUrl。地址可根据[阿里云文档](https://help.aliyun.com/document_detail/34951.html)查看。| +|`tags.accessKeyId`|string|-|是|MaxCompute 服务的 accessKeyId。| +|`tags.accessKeySecret`|string|-|是|MaxCompute 服务的 accessKeySecret。| +|`tags.partitionSpec`|string|-|否|MaxCompute 表的分区描述。| +|`tags.sentence`|string|-|否|查询数据源的语句。SQL 语句中的表名和上方 table 的值相同。| -### Neo4j源特有参数 +### Neo4j 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| |`tags.exec`|string|-|是|查询数据源的语句。例如`match (n:label) return n.neo4j-field-0`。| -|`tags.server`|string|`"bolt://127.0.0.1:7687"`|是|Neo4j服务器地址。| -|`tags.user`|string|-|是|拥有读取权限的Neo4j用户名。| +|`tags.server`|string|`"bolt://127.0.0.1:7687"`|是|Neo4j 服务器地址。| +|`tags.user`|string|-|是|拥有读取权限的 Neo4j 用户名。| |`tags.password`|string|-|是|用户名对应密码。| -|`tags.database`|string|-|是|Neo4j中保存源数据的数据库名。| +|`tags.database`|string|-|是|Neo4j 中保存源数据的数据库名。| |`tags.check_point_path`|string|`/tmp/test`|否|设置保存导入进度信息的目录,用于断点续传。如果未设置,表示不启用断点续传。| -### MySQL源特有参数 +### MySQL 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.host`|string|-|是|MySQL服务器地址。| -|`tags.port`|string|-|是|MySQL服务器端口。| +|`tags.host`|string|-|是|MySQL 服务器地址。| +|`tags.port`|string|-|是|MySQL 服务器端口。| |`tags.database`|string|-|是|数据库名称。| |`tags.table`|string|-|是|需要作为数据源的表名称。| -|`tags.user`|string|-|是|拥有读取权限的MySQL用户名。| +|`tags.user`|string|-|是|拥有读取权限的 MySQL 用户名。| |`tags.password`|string|-|是|用户名对应密码。| |`tags.sentence`|string|-|是|查询数据源的语句。例如`"select teamid, name from basketball.team order by teamid;"`。| -### ClickHouse源特有参数 +### ClickHouse 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.url`|string|-|是|ClickHouse的JDBC URL。| -|`tags.user`|string|-|是|有读取权限的ClickHouse用户名。| +|`tags.url`|string|-|是|ClickHouse 的 JDBC URL。| +|`tags.user`|string|-|是|有读取权限的 ClickHouse 用户名。| |`tags.password`|string|-|是|用户名对应密码。| -|`tags.numPartition`|string|-|是|ClickHouse分区数。| +|`tags.numPartition`|string|-|是|ClickHouse 分区数。| |`tags.sentence`|string|-|是|查询数据源的语句。| -### Hbase源特有参数 +### Hbase 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.host`|string|`127.0.0.1`|是|Hbase服务器地址。| -|`tags.port`|string|`2181`|是|Hbase服务器端口。| +|`tags.host`|string|`127.0.0.1`|是|Hbase 服务器地址。| +|`tags.port`|string|`2181`|是|Hbase 服务器端口。| |`tags.table`|string|-|是|需要作为数据源的表名称。| |`tags.columnFamily`|string|-|是|表所属的列族(column family)。| -### Pulsar源特有参数 +### Pulsar 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.service`|string|`"pulsar://localhost:6650"`|是|Pulsar服务器地址。| -|`tags.admin`|string|`"http://localhost:8081"`|是|连接pulsar的admin.url。| -|`tags.options.`|string|-|是|Pulsar的选项,可以从`topic`、`topics`和`topicsPattern`选择一个进行配置。| +|`tags.service`|string|`"pulsar://localhost:6650"`|是|Pulsar 服务器地址。| +|`tags.admin`|string|`"http://localhost:8081"`|是|连接 pulsar 的 admin.url。| +|`tags.options.`|string|-|是|Pulsar 的选项,可以从`topic`、`topics`和`topicsPattern`选择一个进行配置。| |`tags.interval.seconds`|int|`10`|是|读取消息的间隔。单位:秒。| -### Kafka源特有参数 +### Kafka 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.service`|string|-|是|Kafka服务器地址。| +|`tags.service`|string|-|是|Kafka 服务器地址。| |`tags.topic`|string|-|是|消息类别。| |`tags.interval.seconds`|int|`10`|是|读取消息的间隔。单位:秒。| -### SST源特有参数 +### SST 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.path`|string|-|是|指定需要生成SST文件的源文件的路径。| +|`tags.path`|string|-|是|指定需要生成 SST 文件的源文件的路径。| -### Nebula Graph源特有参数 +### Nebula Graph 源特有参数 !!! enterpriseonly - Nebula Graph源特有参数用于导出Nebula Graph数据,仅企业版Exchange支持。 + Nebula Graph 源特有参数用于导出 Nebula Graph 数据,仅企业版 Exchange 支持。 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`tags.path`|string|`"hdfs://namenode:9000/path/vertex"`|是|指定CSV文件的存储路径。设置的路径必须不存在,Exchange会自动创建该路径。存储到HDFS服务器时路径格式同默认值,例如`"hdfs://192.168.8.177:9000/vertex/player"`。存储到本地时路径格式为`"file:///path/vertex"`,例如`"file:///home/nebula/vertex/player"`。有多个Tag时必须为每个Tag设置不同的目录。| -|`tags.noField`|bool|`false`|是|当值为`true`时,仅导出VID而不导出属性数据;当值为`false`时导出VID和属性数据。| +|`tags.path`|string|`"hdfs://namenode:9000/path/vertex"`|是|指定 CSV 文件的存储路径。设置的路径必须不存在,Exchange 会自动创建该路径。存储到 HDFS 服务器时路径格式同默认值,例如`"hdfs://192.168.8.177:9000/vertex/player"`。存储到本地时路径格式为`"file:///path/vertex"`,例如`"file:///home/nebula/vertex/player"`。有多个 Tag 时必须为每个 Tag 设置不同的目录。| +|`tags.noField`|bool|`false`|是|当值为`true`时,仅导出 VID 而不导出属性数据;当值为`false`时导出 VID 和属性数据。| |`tags.return.fields`|list|`[]`|是|指定要导出的属性。例如,要导出`name`和`age`属性,需将参数值设置为`["name","age"]`。该参数仅在`tags.noField`的值为`false`时生效。| ## 边配置 对于不同的数据源,边的配置也有所不同,有很多通用参数,也有部分特有参数,配置时需要配置通用参数和不同数据源的特有参数。 -边配置的不同数据源特有参数请参见上方点配置内的特有参数介绍,注意区分tags和edges即可。 +边配置的不同数据源特有参数请参见上方点配置内的特有参数介绍,注意区分 tags 和 edges 即可。 ### 通用参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`edges.name`| string|-|是|Nebula Graph中定义的Edge type名称。| +|`edges.name`| string|-|是|Nebula Graph 中定义的 Edge type 名称。| |`edges.type.source`|string|-|是|指定数据源。例如`csv`。| |`edges.type.sink`|string|`client`|是|指定导入方式,可选值为`client`和`SST`。| -|`edges.fields`|list\[string\]|-|是|属性对应的列的表头或列名。如果有表头或列名,请直接使用该名称。如果CSV文件没有表头,用`[_c0, _c1, _c2]`的形式表示第一列、第二列、第三列,以此类推。| -|`edges.nebula.fields`|list\[string\]|-|是|Nebula Graph中定义的属性名称,顺序必须和`edges.fields`一一对应。例如`[_c2, _c3]`对应`[start_year, end_year]`,表示第三列为开始年份的值,第四列为结束年份的值。| +|`edges.fields`|list\[string\]|-|是|属性对应的列的表头或列名。如果有表头或列名,请直接使用该名称。如果 CSV 文件没有表头,用`[_c0, _c1, _c2]`的形式表示第一列、第二列、第三列,以此类推。| +|`edges.nebula.fields`|list\[string\]|-|是|Nebula Graph 中定义的属性名称,顺序必须和`edges.fields`一一对应。例如`[_c2, _c3]`对应`[start_year, end_year]`,表示第三列为开始年份的值,第四列为结束年份的值。| |`edges.source.field`|string|-|是|边的起始点的列。例如`_c0`表示第一列的值作为边的起始点。| |`edges.target.field`|string|-|是|边的目的点的列。例如`_c1`表示第二列的值作为边的目的点。| -|`edges.ranking`|int|-|否|rank值的列。没有指定时,默认所有rank值为`0`。| -|`edges.batch`|int|`256`|是|单批次写入Nebula Graph的最大边数量。| -|`edges.partition`|int|`32`|是|Spark分片数量。| +|`edges.ranking`|int|-|否|rank 值的列。没有指定时,默认所有 rank 值为`0`。| +|`edges.batch`|int|`256`|是|单批次写入 Nebula Graph 的最大边数量。| +|`edges.partition`|int|`32`|是|Spark 分片数量。| -### Nebula Graph源特有参数 +### Nebula Graph 源特有参数 |参数|数据类型|默认值|是否必须|说明| |:---|:---|:---|:---|:---| -|`edges.path`|string|`"hdfs://namenode:9000/path/edge"`|是|指定CSV文件的存储路径。设置的路径必须不存在,Exchange会自动创建该路径。存储到HDFS服务器时路径格式同默认值,例如`"hdfs://192.168.8.177:9000/edge/follow"`。存储到本地时路径格式为`"file:///path/edge"`,例如`"file:///home/nebula/edge/follow"`。有多个Edge时必须为每个Edge设置不同的目录。| -|`edges.noField`|bool|`false`|是|当值为`true`时,仅导出起始点VID、目的点VID和Rank,而不导出属性数据;当值为`false`时导出起始点VID、目的点VID、Rank和属性数据。| +|`edges.path`|string|`"hdfs://namenode:9000/path/edge"`|是|指定 CSV 文件的存储路径。设置的路径必须不存在,Exchange 会自动创建该路径。存储到 HDFS 服务器时路径格式同默认值,例如`"hdfs://192.168.8.177:9000/edge/follow"`。存储到本地时路径格式为`"file:///path/edge"`,例如`"file:///home/nebula/edge/follow"`。有多个 Edge 时必须为每个 Edge 设置不同的目录。| +|`edges.noField`|bool|`false`|是|当值为`true`时,仅导出起始点 VID、目的点 VID 和 Rank,而不导出属性数据;当值为`false`时导出起始点 VID、目的点 VID、Rank 和属性数据。| |`edges.return.fields`|list|`[]`|是|指定要导出的属性。例如,要导出`start_year`和`end_year`属性,需将参数值设置为`["start_year","end_year"]`。该参数仅在`edges.noField`的值为`false`时生效。| diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-export-from-nebula.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-export-from-nebula.md index 43f64b4c581..e21c69675e5 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-export-from-nebula.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-export-from-nebula.md @@ -1,18 +1,18 @@ -# 导出Nebula Graph数据 +# 导出 Nebula Graph 数据 -本文以一个示例说明如何使用Exchange将Nebula Graph中的数据导出到CSV文件中。 +本文以一个示例说明如何使用 Exchange 将 Nebula Graph 中的数据导出到 CSV 文件中。 !!! enterpriseonly - 仅企业版Exchange支持导出Nebula Graph数据到CSV文件。 + 仅企业版 Exchange 支持导出 Nebula Graph 数据到 CSV 文件。 !!! note - 导出Nebula Graph数据时不支持SSL加密传输。 + 导出 Nebula Graph 数据时不支持 SSL 加密传输。 ## 环境准备 -本示例在Linux系统的虚拟机环境下完成,导出数据前准备的软硬件信息如下。 +本示例在 Linux 系统的虚拟机环境下完成,导出数据前准备的软硬件信息如下。 ### 硬件 @@ -38,7 +38,7 @@ CentOS 7.9.2009 ### 数据集 -在本示例中,作为数据源的Nebula Graph存储着[basketballplayer数据集](https://docs.nebula-graph.io/2.0/basketballplayer-2.X.ngql),其中的Schema要素如下表所示。 +在本示例中,作为数据源的 Nebula Graph 存储着 [basketballplayer 数据集](https://docs.nebula-graph.io/2.0/basketballplayer-2.X.ngql),其中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -49,11 +49,11 @@ CentOS 7.9.2009 ## 操作步骤 -1. 从[Nebula Graph企业版套餐](https://nebula-graph.com.cn/pricing/)中获取企业版Exchange的JAR文件。 +1. 从 [Nebula Graph 企业版套餐](https://nebula-graph.com.cn/pricing/) 中获取企业版 Exchange 的 JAR 文件。 2. 修改配置文件。 - 企业版Exchange提供了导出Nebula Graph数据专用的配置文件模板`export_application.conf`,其中各配置项的说明参见[Exchange配置](../ parameter-reference/ex-ug-parameter.md)。本示例使用的配置文件核心内容如下: + 企业版 Exchange 提供了导出 Nebula Graph 数据专用的配置文件模板`export_application.conf`,其中各配置项的说明参见 [Exchange 配置](../parameter-reference/ex-ug-parameter.md)。本示例使用的配置文件核心内容如下: ```conf ... @@ -112,7 +112,7 @@ CentOS 7.9.2009 } ``` -3. 使用如下命令导出Nebula Graph中的数据。 +3. 使用如下命令导出 Nebula Graph 中的数据。 ```bash /bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange nebula-exchange-x.y.z.jar_path> -c @@ -127,7 +127,7 @@ CentOS 7.9.2009 4. 检查导出的数据。 - 1. 查看目标路径下是否成功生成了CSV文件。 + 1. 查看目标路径下是否成功生成了 CSV 文件。 ```bash $ hadoop fs -ls /vertex/player @@ -145,4 +145,4 @@ CentOS 7.9.2009 -rw-r--r-- 3 nebula supergroup 119 2021-11-05 07:36 /vertex/player/ part-00009-17293020-ba2e-4243-b834-34495c0536b3-c000.csv ``` - 2. 检查CSV文件内容,确定数据导出成功。 + 2. 检查 CSV 文件内容,确定数据导出成功。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-clickhouse.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-clickhouse.md index 32313e76965..e004262850c 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-clickhouse.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-clickhouse.md @@ -1,14 +1,14 @@ -# 导入ClickHouse数据 +# 导入 ClickHouse 数据 -本文以一个示例说明如何使用Exchange将存储在ClickHouse上的数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 ClickHouse 上的数据导入 Nebula Graph。 ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -18,35 +18,35 @@ - Hadoop:2.9.2,伪分布式部署 -- ClickHouse:docker部署yandex/clickhouse-server tag: latest(2021.07.01) +- ClickHouse:docker 部署 yandex/clickhouse-server tag: latest(2021.07.01) -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 已经安装并开启Hadoop服务。 +- 已经安装并开启 Hadoop 服务。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析数据,按以下步骤在Nebula Graph中创建Schema: +分析数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -55,7 +55,7 @@ | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 在Nebula Graph中创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 在 Nebula Graph 中创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -64,19 +64,19 @@ replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` @@ -84,11 +84,11 @@ ### 步骤 2:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置ClickHouse数据源相关的配置。在本示例中,复制的文件名为`clickhouse_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 ClickHouse 数据源相关的配置。在本示例中,复制的文件名为`clickhouse_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -102,19 +102,19 @@ } } -# Nebula Graph相关配置 +# Nebula Graph 相关配置 nebula: { address:{ - # 以下为Nebula Graph的Graph服务和Meta服务所在机器的IP地址及端口。 + # 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口。 # 如果有多个地址,格式为 "ip1:port","ip2:port","ip3:port"。 # 不同地址之间以英文逗号 (,) 隔开。 graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 填写的账号必须拥有Nebula Graph相应图空间的写数据权限。 + # 填写的账号必须拥有 Nebula Graph 相应图空间的写数据权限。 user: root pswd: nebula - # 填写Nebula Graph中需要写入数据的图空间名称。 + # 填写 Nebula Graph 中需要写入数据的图空间名称。 space: basketballplayer connection { timeout: 3000 @@ -134,34 +134,34 @@ } # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { name: player type: { - # 指定数据源文件格式,设置为ClickHouse。 + # 指定数据源文件格式,设置为 ClickHouse。 source: clickhouse - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # ClickHouse的JDBC URL + # ClickHouse 的 JDBC URL url:"jdbc:clickhouse://192.168.*.*:8123/basketballplayer" user:"user" password:"123456" - # ClickHouse分区数 + # ClickHouse 分区数 numPartition:"5" sentence:"select * from player" - # 在fields里指定player表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 player 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [name,age] nebula.fields: [name,age] - # 指定表中某一列数据为Nebula Graph中点VID的来源。 + # 指定表中某一列数据为 Nebula Graph 中点 VID 的来源。 vertex: { field:playerid # policy:hash @@ -174,7 +174,7 @@ partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { name: team type: { @@ -198,43 +198,43 @@ # 处理边数据 edges: [ - # 设置Edge type follow相关信息 + # 设置 Edge type follow 相关信息 { - # Nebula Graph中对应的Edge type名称。 + # Nebula Graph 中对应的 Edge type 名称。 name: follow type: { - # 指定数据源文件格式,设置为ClickHouse。 + # 指定数据源文件格式,设置为 ClickHouse。 source: clickhouse - # 指定边数据导入Nebula Graph的方式, - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定边数据导入 Nebula Graph 的方式, + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # ClickHouse的JDBC URL + # ClickHouse 的 JDBC URL url:"jdbc:clickhouse://192.168.*.*:8123/basketballplayer" user:"user" password:"123456" - # ClickHouse分区数 + # ClickHouse 分区数 numPartition:"5" sentence:"select * from follow" - # 在fields里指定follow表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 follow 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [degree] nebula.fields: [degree] - # 在source里,将follow表中某一列作为边的起始点数据源。 + # 在 source 里,将 follow 表中某一列作为边的起始点数据源。 source: { field:src_player } - # 在target里,将follow表中某一列作为边的目的点数据源。 + # 在 target 里,将 follow 表中某一列作为边的目的点数据源。 target: { field:dst_player } @@ -246,7 +246,7 @@ partition: 32 } - # 设置Edge type serve相关信息 + # 设置 Edge type serve 相关信息 { name: serve type: { @@ -273,9 +273,9 @@ } ``` -### 步骤 3:向Nebula Graph导入数据 +### 步骤 3:向 Nebula Graph 导入数据 -运行如下命令将ClickHouse数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 ClickHouse 数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -283,7 +283,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -295,14 +295,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 4:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 5:(如有)在Nebula Graph中重建索引 +### 步骤 5:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-csv.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-csv.md index 88ffd0f128b..d16c1efe27f 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-csv.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-csv.md @@ -1,16 +1,16 @@ -# 导入CSV文件数据 +# 导入 CSV 文件数据 -本文以一个示例说明如何使用Exchange将存储在HDFS或本地的CSV文件数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 HDFS 或本地的 CSV 文件数据导入 Nebula Graph。 -如果要向Nebula Graph导入本地CSV文件,请参见[Nebula Importer](https://github.com/vesoft-inc/nebula-importer "Click to go to GitHub")。 +如果要向 Nebula Graph 导入本地 CSV 文件,请参见 [Nebula Importer](https://github.com/vesoft-inc/nebula-importer "Click to go to GitHub")。 ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -20,35 +20,35 @@ - Hadoop:2.9.2 伪分布式部署 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 如果文件存储在HDFS上,需要确认Hadoop服务运行正常。 +- 如果文件存储在 HDFS 上,需要确认 Hadoop 服务运行正常。 -- 如果文件存储在本地且Nebula Graph是集群架构,需要在集群每台机器本地相同目录下放置文件。 +- 如果文件存储在本地且 Nebula Graph 是集群架构,需要在集群每台机器本地相同目录下放置文件。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析CSV文件中的数据,按以下步骤在Nebula Graph中创建Schema: +分析 CSV 文件中的数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -57,7 +57,7 @@ | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 使用Nebula Console创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 使用 Nebula Console 创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -66,43 +66,43 @@ replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` 更多信息,请参见[快速开始](../../2.quick-start/1.quick-start-workflow.md)。 -### 步骤 2:处理CSV文件 +### 步骤 2:处理 CSV 文件 确认以下信息: -1. 处理CSV文件以满足Schema的要求。 +1. 处理 CSV 文件以满足 Schema 的要求。 !!! note - Exchange支持上传有表头或者无表头的CSV文件。 + Exchange 支持上传有表头或者无表头的 CSV 文件。 -2. 获取CSV文件存储路径。 +2. 获取 CSV 文件存储路径。 ### 步骤 3:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置CSV数据源相关的配置。在本示例中,复制的文件名为`csv_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 CSV 数据源相关的配置。在本示例中,复制的文件名为`csv_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -120,17 +120,17 @@ } } - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ - # 指定Graph服务和所有Meta服务的IP地址和端口。 + # 指定 Graph 服务和所有 Meta 服务的 IP 地址和端口。 # 如果有多台服务器,地址之间用英文逗号(,)分隔。 - # 格式: "ip1:port","ip2:port","ip3:port" + # 格式:"ip1:port","ip2:port","ip3:port" graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 指定拥有Nebula Graph写权限的用户名和密码。 + # 指定拥有 Nebula Graph 写权限的用户名和密码。 user: root pswd: nebula @@ -155,34 +155,34 @@ # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: player type: { - # 指定数据源,使用CSV。 + # 指定数据源,使用 CSV。 source: csv - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定CSV文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.csv"。 + # 指定 CSV 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。 path: "hdfs://192.168.*.*:9000/data/vertex_player.csv" - # 如果CSV文件没有表头,使用[_c0, _c1, _c2, ..., _cn]表示其表头,并将列指示为属性值的源。 - # 如果CSV文件有表头,则使用实际的列名。 + # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。 + # 如果 CSV 文件有表头,则使用实际的列名。 fields: [_c1, _c2] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [age, name] - # 指定一个列作为VID的源。 - # vertex的值必须与上述fields或者csv.fields中的列名保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:_c0 # policy:hash @@ -191,45 +191,45 @@ # 指定的分隔符。默认值为英文逗号(,)。 separator: "," - # 如果CSV文件有表头,请将header设置为true。 - # 如果CSV文件没有表头,请将header设置为false。默认值为false。 + # 如果 CSV 文件有表头,请将 header 设置为 true。 + # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。 header: false - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: team type: { - # 指定数据源,使用CSV。 + # 指定数据源,使用 CSV。 source: csv - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定CSV文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.csv"。 + # 指定 CSV 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。 path: "hdfs://192.168.*.*:9000/data/vertex_team.csv" - # 如果CSV文件没有表头,使用[_c0, _c1, _c2, ..., _cn]表示其表头,并将列指示为属性值的源。 - # 如果CSV文件有表头,则使用实际的列名。 + # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。 + # 如果 CSV 文件有表头,则使用实际的列名。 fields: [_c1] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [name] - # 指定一个列作为VID的源。 - # vertex的值必须与上述fields或者csv.fields中的列名保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:_c0 # policy:hash @@ -238,50 +238,49 @@ # 指定的分隔符。默认值为英文逗号(,)。 separator: "," - # 如果CSV文件有表头,请将header设置为true。 - # 如果CSV文件没有表头,请将header设置为false。默认值为false。 + # 如果 CSV 文件有表头,请将 header 设置为 true。 + # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。 header: false - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 如果需要添加更多点,请参考前面的配置进行添加。 ] # 处理边 edges: [ - # 设置Edge type follow相关信息。 + # 设置 Edge type follow 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: follow type: { - # 指定数据源,使用CSV。 + # 指定数据源,使用 CSV。 source: csv - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定CSV文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.csv"。 + # 指定 CSV 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。 path: "hdfs://192.168.*.*:9000/data/edge_follow.csv" - # 如果CSV文件没有表头,使用[_c0, _c1, _c2, ..., _cn]表示其表头,并将列指示为属性值的源。 - # 如果CSV文件有表头,则使用实际的列名。 + # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。 + # 如果 CSV 文件有表头,则使用实际的列名。 fields: [_c2] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [degree] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与上述fields或者csv.fields中的列名保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: _c0 } @@ -292,49 +291,49 @@ # 指定的分隔符。默认值为英文逗号(,)。 separator: "," - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: rank - # 如果CSV文件有表头,请将header设置为true。 - # 如果CSV文件没有表头,请将header设置为false。默认值为false。 + # 如果 CSV 文件有表头,请将 header 设置为 true。 + # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。 header: false - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Edge type serve相关信息。 + # 设置 Edge type serve 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: serve type: { - # 指定数据源,使用CSV。 + # 指定数据源,使用 CSV。 source: csv - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定CSV文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.csv"。 + # 指定 CSV 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。 path: "hdfs://192.168.*.*:9000/data/edge_serve.csv" - # 如果CSV文件没有表头,使用[_c0, _c1, _c2, ..., _cn]表示其表头,并将列指示为属性值的源。 - # 如果CSV文件有表头,则使用实际的列名。 + # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。 + # 如果 CSV 文件有表头,则使用实际的列名。 fields: [_c2,_c3] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [start_year, end_year] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与上述fields或者csv.fields中的列名保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: _c0 } @@ -345,17 +344,17 @@ # 指定的分隔符。默认值为英文逗号(,)。 separator: "," - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: _c5 - # 如果CSV文件有表头,请将header设置为true。 - # 如果CSV文件没有表头,请将header设置为false。默认值为false。 + # 如果 CSV 文件有表头,请将 header 设置为 true。 + # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。 header: false - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } @@ -364,9 +363,9 @@ } ``` -### 步骤 4:向Nebula Graph导入数据 +### 步骤 4:向 Nebula Graph 导入数据 -运行如下命令将CSV文件数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 CSV 文件数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -374,7 +373,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -386,14 +385,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 5:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 6:(如有)在Nebula Graph中重建索引 +### 步骤 6:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-hbase.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-hbase.md index 13b5520c01d..40c8cdb3e45 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-hbase.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-hbase.md @@ -1,12 +1,12 @@ -# 导入HBase数据 +# 导入 HBase 数据 -本文以一个示例说明如何使用Exchange将存储在HBase上的数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 HBase 上的数据导入 Nebula Graph。 ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 -在本示例中,该数据集已经存入HBase中,以`player`、`team`、`follow`和`serve`四个表存储了所有点和边的信息。以下为各个表的部分数据。 +在本示例中,该数据集已经存入 HBase 中,以`player`、`team`、`follow`和`serve`四个表存储了所有点和边的信息。以下为各个表的部分数据。 ```sql hbase(main):002:0> scan "player" @@ -45,7 +45,7 @@ ROW COLUMN+CELL ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -57,33 +57,33 @@ ROW COLUMN+CELL - HBase:2.2.7 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 已经安装并开启Hadoop服务。 +- 已经安装并开启 Hadoop 服务。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析数据,按以下步骤在Nebula Graph中创建Schema: +分析数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -92,7 +92,7 @@ ROW COLUMN+CELL | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 在Nebula Graph中创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 在 Nebula Graph 中创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -101,19 +101,19 @@ ROW COLUMN+CELL replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` @@ -121,11 +121,11 @@ ROW COLUMN+CELL ### 步骤 2:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置HBase数据源相关的配置。在本示例中,复制的文件名为`hbase_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 HBase 数据源相关的配置。在本示例中,复制的文件名为`hbase_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -139,20 +139,19 @@ ROW COLUMN+CELL } } - - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ - # 以下为Nebula Graph的Graph服务和Meta服务所在机器的IP地址及端口。 + # 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口。 # 如果有多个地址,格式为 "ip1:port","ip2:port","ip3:port"。 # 不同地址之间以英文逗号 (,) 隔开。 graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 填写的账号必须拥有Nebula Graph相应图空间的写数据权限。 + # 填写的账号必须拥有 Nebula Graph 相应图空间的写数据权限。 user: root pswd: nebula - # 填写Nebula Graph中需要写入数据的图空间名称。 + # 填写 Nebula Graph 中需要写入数据的图空间名称。 space: basketballplayer connection { timeout: 3000 @@ -172,15 +171,15 @@ ROW COLUMN+CELL } # 处理点 tags: [ - # 设置Tag player相关信息。 - # 如果需要将rowkey设置为数据源,请填写“rowkey”,列族内的列请填写实际列名。 + # 设置 Tag player 相关信息。 + # 如果需要将 rowkey 设置为数据源,请填写“rowkey”, 列族内的列请填写实际列名。 { - # Nebula Graph中对应的Tag名称。 + # Nebula Graph 中对应的 Tag 名称。 name: player type: { - # 指定数据源文件格式,设置为HBase。 + # 指定数据源文件格式,设置为 HBase。 source: hbase - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } host:192.168.*.* @@ -188,26 +187,25 @@ ROW COLUMN+CELL table:"player" columnFamily:"cf" - # 在fields里指定player表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 player 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [age,name] nebula.fields: [age,name] - # 指定表中某一列数据为Nebula Graph中点VID的来源。 - # 例如rowkey作为VID的来源,请填写“rowkey”。 + # 指定表中某一列数据为 Nebula Graph 中点 VID 的来源。 + # 例如 rowkey 作为 VID 的来源,请填写“rowkey”。 vertex:{ field:rowkey } - # 单批次写入 Nebula Graph 的数据条数。 batch: 256 # Spark 分区数量 partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { name: team type: { @@ -231,17 +229,17 @@ ROW COLUMN+CELL # 处理边数据 edges: [ - # 设置Edge type follow相关信息 + # 设置 Edge type follow 相关信息 { - # Nebula Graph中对应的Edge type名称。 + # Nebula Graph 中对应的 Edge type 名称。 name: follow type: { - # 指定数据源文件格式,设置为HBase。 + # 指定数据源文件格式,设置为 HBase。 source: hbase - # 指定边数据导入Nebula Graph的方式, - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定边数据导入 Nebula Graph 的方式, + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } @@ -250,24 +248,22 @@ ROW COLUMN+CELL table:"follow" columnFamily:"cf" - # 在fields里指定follow表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 follow 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [degree] nebula.fields: [degree] - # 在source里,将follow表中某一列作为边的起始点数据源。示例使用rowkey。 - # 在target里,将follow表中某一列作为边的目的点数据源。示例使用列dst_player。 + # 在 source 里,将 follow 表中某一列作为边的起始点数据源。示例使用 rowkey。 + # 在 target 里,将 follow 表中某一列作为边的目的点数据源。示例使用列 dst_player。 source:{ field:rowkey } - target:{ field:dst_player } - # 单批次写入 Nebula Graph 的数据条数。 batch: 256 @@ -275,7 +271,7 @@ ROW COLUMN+CELL partition: 32 } - # 设置Edge type serve相关信息 + # 设置 Edge type serve 相关信息 { name: serve type: { @@ -304,9 +300,9 @@ ROW COLUMN+CELL } ``` -### 步骤 3:向Nebula Graph导入数据 +### 步骤 3:向 Nebula Graph 导入数据 -运行如下命令将HBase数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 HBase 数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -314,7 +310,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -326,14 +322,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 4:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 5:(如有)在Nebula Graph中重建索引 +### 步骤 5:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 \ No newline at end of file +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 \ No newline at end of file diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-hive.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-hive.md index 68c87dc148a..7ebe29a04bf 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-hive.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-hive.md @@ -1,12 +1,12 @@ -# 导入Hive数据 +# 导入 Hive 数据 -本文以一个示例说明如何使用Exchange将存储在Hive上的数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 Hive 上的数据导入 Nebula Graph。 ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 -在本示例中,该数据集已经存入Hive中名为`basketball`的数据库中,以`player`、`team`、`follow`和`serve`四个表存储了所有点和边的信息。以下为各个表的结构。 +在本示例中,该数据集已经存入 Hive 中名为`basketball`的数据库中,以`player`、`team`、`follow`和`serve`四个表存储了所有点和边的信息。以下为各个表的结构。 ```sql scala> spark.sql("describe basketball.player").show @@ -46,11 +46,11 @@ scala> spark.sql("describe basketball.serve").show +----------+---------+-------+ ``` -> **说明**:Hive的数据类型`bigint`与Nebula Graph的`int`对应。 +> **说明**:Hive 的数据类型`bigint`与 Nebula Graph 的`int`对应。 ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -62,33 +62,33 @@ scala> spark.sql("describe basketball.serve").show - Hive:2.3.7,Hive Metastore 数据库为 MySQL 8.0.22 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 已经安装并开启Hadoop服务,并已启动Hive Metastore数据库(本示例中为 MySQL)。 +- 已经安装并开启 Hadoop 服务,并已启动 Hive Metastore 数据库(本示例中为 MySQL)。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析数据,按以下步骤在Nebula Graph中创建Schema: +分析数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -97,7 +97,7 @@ scala> spark.sql("describe basketball.serve").show | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 在Nebula Graph中创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 在 Nebula Graph 中创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -106,27 +106,27 @@ scala> spark.sql("describe basketball.serve").show replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` 更多信息,请参见[快速开始](../../2.quick-start/1.quick-start-workflow.md)。 -### 步骤 2:使用Spark SQL确认Hive SQL语句 +### 步骤 2:使用 Spark SQL 确认 Hive SQL 语句 -启动spark-shell环境后,依次运行以下语句,确认Spark能读取Hive中的数据。 +启动 spark-shell 环境后,依次运行以下语句,确认 Spark 能读取 Hive 中的数据。 ```sql scala> sql("select playerid, age, name from basketball.player").show @@ -152,11 +152,11 @@ scala> sql("select playerid, teamid, start_year, end_year from basketball.serve" ### 步骤 3:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置Hive数据源相关的配置。在本示例中,复制的文件名为`hive_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 Hive 数据源相关的配置。在本示例中,复制的文件名为`hive_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -170,7 +170,7 @@ scala> sql("select playerid, teamid, start_year, end_year from basketball.serve" } } - # 如果Spark和Hive部署在不同集群,才需要配置连接Hive的参数,否则请忽略这些配置。 + # 如果 Spark 和 Hive 部署在不同集群,才需要配置连接 Hive 的参数,否则请忽略这些配置。 #hive: { # waredir: "hdfs://NAMENODE_IP:9000/apps/svr/hive-xxx/warehouse/" # connectionURL: "jdbc:mysql://your_ip:3306/hive_spark?characterEncoding=UTF-8" @@ -179,19 +179,19 @@ scala> sql("select playerid, teamid, start_year, end_year from basketball.serve" # connectionPassword: "password" #} - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ - # 以下为Nebula Graph的Graph服务和所有Meta服务所在机器的IP地址及端口。 + # 以下为 Nebula Graph 的 Graph 服务和所有 Meta 服务所在机器的 IP 地址及端口。 # 如果有多个地址,格式为 "ip1:port","ip2:port","ip3:port"。 # 不同地址之间以英文逗号 (,) 隔开。 graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 填写的账号必须拥有Nebula Graph相应图空间的写数据权限。 + # 填写的账号必须拥有 Nebula Graph 相应图空间的写数据权限。 user: root pswd: nebula - # 填写Nebula Graph中需要写入数据的图空间名称。 + # 填写 Nebula Graph 中需要写入数据的图空间名称。 space: basketballplayer connection { timeout: 3000 @@ -211,27 +211,27 @@ scala> sql("select playerid, teamid, start_year, end_year from basketball.serve" } # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { - # Nebula Graph中对应的Tag名称。 + # Nebula Graph 中对应的 Tag 名称。 name: player type: { - # 指定数据源文件格式,设置为hive。 + # 指定数据源文件格式,设置为 hive。 source: hive - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 设置读取数据库basketball中player表数据的SQL语句 + # 设置读取数据库 basketball 中 player 表数据的 SQL 语句 exec: "select playerid, age, name from basketball.player" - # 在fields里指定player表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 player 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [age,name] nebula.fields: [age,name] - # 指定表中某一列数据为Nebula Graph中点VID的来源。 + # 指定表中某一列数据为 Nebula Graph 中点 VID 的来源。 vertex:{ field:playerid } @@ -242,7 +242,7 @@ scala> sql("select playerid, teamid, start_year, end_year from basketball.serve" # Spark 分区数量 partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { name: team type: { @@ -263,31 +263,31 @@ scala> sql("select playerid, teamid, start_year, end_year from basketball.serve" # 处理边数据 edges: [ - # 设置Edge type follow相关信息 + # 设置 Edge type follow 相关信息 { - # Nebula Graph中对应的Edge type名称。 + # Nebula Graph 中对应的 Edge type 名称。 name: follow type: { - # 指定数据源文件格式,设置为hive。 + # 指定数据源文件格式,设置为 hive。 source: hive - # 指定边数据导入Nebula Graph的方式, - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定边数据导入 Nebula Graph 的方式, + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 设置读取数据库basketball中follow表数据的SQL语句。 + # 设置读取数据库 basketball 中 follow 表数据的 SQL 语句。 exec: "select src_player, dst_player, degree from basketball.follow" - # 在fields里指定follow表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 follow 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [degree] nebula.fields: [degree] - # 在source里,将follow表中某一列作为边的起始点数据源。 - # 在target里,将follow表中某一列作为边的目的点数据源。 + # 在 source 里,将 follow 表中某一列作为边的起始点数据源。 + # 在 target 里,将 follow 表中某一列作为边的目的点数据源。 source: { field: src_player } @@ -303,7 +303,7 @@ scala> sql("select playerid, teamid, start_year, end_year from basketball.serve" partition: 32 } - # 设置Edge type serve相关信息 + # 设置 Edge type serve 相关信息 { name: serve type: { @@ -326,9 +326,9 @@ scala> sql("select playerid, teamid, start_year, end_year from basketball.serve" } ``` -### 步骤 4:向Nebula Graph导入数据 +### 步骤 4:向 Nebula Graph 导入数据 -运行如下命令将Hive数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 Hive 数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c -h @@ -336,7 +336,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -348,14 +348,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 5:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats/)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats/) 查看统计数据。 -### 步骤 6:(如有)在Nebula Graph中重建索引 +### 步骤 6:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 \ No newline at end of file +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 \ No newline at end of file diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-json.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-json.md index d35ca59c732..e6d4d98e754 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-json.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-json.md @@ -1,10 +1,10 @@ -# 导入JSON文件数据 +# 导入 JSON 文件数据 -本文以一个示例说明如何使用Exchange将存储在HDFS或本地的JSON文件数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 HDFS 或本地的 JSON 文件数据导入 Nebula Graph。 ## 数据集 -本文以basketballplayer数据集为例。部分示例数据如下: +本文以 basketballplayer 数据集为例。部分示例数据如下: - player @@ -42,7 +42,7 @@ ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -52,35 +52,35 @@ - Hadoop:2.9.2,伪分布式部署 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 如果文件存储在HDFS上,需要确认Hadoop服务运行正常。 +- 如果文件存储在 HDFS 上,需要确认 Hadoop 服务运行正常。 -- 如果文件存储在本地且Nebula Graph是集群架构,需要在集群每台机器本地相同目录下放置文件。 +- 如果文件存储在本地且 Nebula Graph 是集群架构,需要在集群每台机器本地相同目录下放置文件。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析文件中的数据,按以下步骤在Nebula Graph中创建Schema: +分析文件中的数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -89,7 +89,7 @@ | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 使用Nebula Console创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 使用 Nebula Console 创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -98,39 +98,39 @@ replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` 更多信息,请参见[快速开始](../../2.quick-start/1.quick-start-workflow.md)。 -### 步骤 2:处理JSON文件 +### 步骤 2:处理 JSON 文件 确认以下信息: -1. 处理JSON文件以满足Schema的要求。 +1. 处理 JSON 文件以满足 Schema 的要求。 -2. 获取JSON文件存储路径。 +2. 获取 JSON 文件存储路径。 ### 步骤 3. 修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置JSON数据源相关的配置。在本示例中,复制的文件名为`json_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 JSON 数据源相关的配置。在本示例中,复制的文件名为`json_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -148,17 +148,17 @@ } } - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ - # 指定Graph服务和所有Meta服务的IP地址和端口。 + # 指定 Graph 服务和所有 Meta 服务的 IP 地址和端口。 # 如果有多台服务器,地址之间用英文逗号(,)分隔。 - # 格式: "ip1:port","ip2:port","ip3:port" + # 格式:"ip1:port","ip2:port","ip3:port" graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 指定拥有Nebula Graph写权限的用户名和密码。 + # 指定拥有 Nebula Graph 写权限的用户名和密码。 user: root pswd: nebula @@ -183,118 +183,116 @@ # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: player type: { - # 指定数据源,使用JSON。 + # 指定数据源,使用 JSON。 source: json - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定JSON文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.json"。 + # 指定 JSON 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.json"。 path: "hdfs://192.168.*.*:9000/data/vertex_player.json" - # 在fields里指定JSON文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 JSON 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [age,name] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [age, name] - # 指定一个列作为VID的源。 - # vertex的值必须与JSON文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与 JSON 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:id } - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: team type: { - # 指定数据源,使用JSON。 + # 指定数据源,使用 JSON。 source: json - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定JSON文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.json"。 + # 指定 JSON 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.json"。 path: "hdfs://192.168.*.*:9000/data/vertex_team.json" - # 在fields里指定JSON文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 JSON 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [name] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [name] - # 指定一个列作为VID的源。 - # vertex的值必须与JSON文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与 JSON 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:id } - - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 如果需要添加更多点,请参考前面的配置进行添加。 ] # 处理边 edges: [ - # 设置Edge type follow相关信息。 + # 设置 Edge type follow 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: follow type: { - # 指定数据源,使用JSON。 + # 指定数据源,使用 JSON。 source: json - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定JSON文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.json"。 + # 指定 JSON 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.json"。 path: "hdfs://192.168.*.*:9000/data/edge_follow.json" - # 在fields里指定JSON文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 JSON 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [degree] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [degree] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与JSON文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与 JSON 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: src } @@ -302,45 +300,44 @@ field: dst } - - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: rank - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Edge type serve相关信息。 + # 设置 Edge type serve 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: serve type: { - # 指定数据源,使用JSON。 + # 指定数据源,使用 JSON。 source: json - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定JSON文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.json"。 + # 指定 JSON 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.json"。 path: "hdfs://192.168.*.*:9000/data/edge_serve.json" - # 在fields里指定JSON文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 JSON 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [start_year,end_year] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [start_year, end_year] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与JSON文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与 JSON 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: src } @@ -348,15 +345,13 @@ field: dst } - - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: _c5 - - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } @@ -365,9 +360,9 @@ } ``` -### 步骤 4:向Nebula Graph导入数据 +### 步骤 4:向 Nebula Graph 导入数据 -运行如下命令将JSON文件数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 JSON 文件数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -375,7 +370,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -387,14 +382,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 5:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 6:(如有)在Nebula Graph中重建索引 +### 步骤 6:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-kafka.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-kafka.md index a8df7d82a36..aefbbb6f850 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-kafka.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-kafka.md @@ -1,10 +1,10 @@ -# 导入Kafka数据 +# 导入 Kafka 数据 -本文简单说明如何使用Exchange将存储在Kafka上的数据导入Nebula Graph。 +本文简单说明如何使用 Exchange 将存储在 Kafka 上的数据导入 Nebula Graph。 ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -12,33 +12,33 @@ - Spark:2.4.7,单机版 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 已经安装并开启Kafka服务。 +- 已经安装并开启 Kafka 服务。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析数据,按以下步骤在Nebula Graph中创建Schema: +分析数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -47,7 +47,7 @@ | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 在Nebula Graph中创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 在 Nebula Graph 中创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -56,19 +56,19 @@ replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` @@ -78,13 +78,13 @@ !!! note - 如果部分数据存储在Kafka的value域内,需要自行修改源码,从Kafka中获取value域,将value通过from_json函数解析,然后作为Dataframe返回。 + 如果部分数据存储在 Kafka 的 value 域内,需要自行修改源码,从 Kafka 中获取 value 域,将 value 通过 from_json 函数解析,然后作为 Dataframe 返回。 -编译Exchange后,复制`target/classes/application.conf`文件设置Kafka数据源相关的配置。在本示例中,复制的文件名为`kafka_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 Kafka 数据源相关的配置。在本示例中,复制的文件名为`kafka_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -98,20 +98,19 @@ } } - - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ - # 以下为Nebula Graph的Graph服务和Meta服务所在机器的IP地址及端口。 + # 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口。 # 如果有多个地址,格式为 "ip1:port","ip2:port","ip3:port"。 # 不同地址之间以英文逗号 (,) 隔开。 graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 填写的账号必须拥有Nebula Graph相应图空间的写数据权限。 + # 填写的账号必须拥有 Nebula Graph 相应图空间的写数据权限。 user: root pswd: nebula - # 填写Nebula Graph中需要写入数据的图空间名称。 + # 填写 Nebula Graph 中需要写入数据的图空间名称。 space: basketballplayer connection { timeout: 3000 @@ -131,34 +130,33 @@ } # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { - # Nebula Graph中对应的Tag名称。 + # Nebula Graph 中对应的 Tag 名称。 name: player type: { - # 指定数据源文件格式,设置为Kafka。 + # 指定数据源文件格式,设置为 Kafka。 source: kafka - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # Kafka服务器地址。 + # Kafka 服务器地址。 service: "127.0.0.1:9092" # 消息类别。 topic: "topic_name1" - # Kafka数据有固定的域名称:key、value、topic、partition、offset、timestamp、timestampType。 - # Spark读取为DataFrame后,如果需要指定多个字段,用英文逗号(,)隔开。 - # 在fields里指定字段名称,例如用key对应Nebula中的name, value对应Nebula中的age,示例如下: + # Kafka 数据有固定的域名称:key、value、topic、partition、offset、timestamp、timestampType。 + # Spark 读取为 DataFrame 后,如果需要指定多个字段,用英文逗号(,)隔开。 + # 在 fields 里指定字段名称,例如用 key 对应 Nebula 中的 name, value 对应 Nebula 中的 age,示例如下: fields: [key,value] nebula.fields: [name,age] - # 指定表中某一列数据为Nebula Graph中点VID的来源。 - # 这里的值key和上面的key重复,表示key既作为VID,也作为属性name。 + # 指定表中某一列数据为 Nebula Graph 中点 VID 的来源。 + # 这里的值 key 和上面的 key 重复,表示 key 既作为 VID,也作为属性 name。 vertex:{ field:key } - # 单批次写入 Nebula Graph 的数据条数。 batch: 10 @@ -167,7 +165,7 @@ # 读取消息的间隔。单位:秒。 interval.seconds: 10 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { name: team type: { @@ -190,43 +188,41 @@ # 处理边数据 edges: [ - # 设置Edge type follow相关信息 + # 设置 Edge type follow 相关信息 { - # Nebula Graph中对应的Edge type名称。 + # Nebula Graph 中对应的 Edge type 名称。 name: follow type: { - # 指定数据源文件格式,设置为Kafka。 + # 指定数据源文件格式,设置为 Kafka。 source: kafka - # 指定边数据导入Nebula Graph的方式, - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定边数据导入 Nebula Graph 的方式, + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # Kafka服务器地址。 + # Kafka 服务器地址。 service: "127.0.0.1:9092" # 消息类别。 topic: "topic_name3" - # Kafka数据有固定的域名称:key、value、topic、partition、offset、timestamp、timestampType。 - # Spark读取为DataFrame后,如果需要指定多个字段,用英文逗号(,)隔开。 - # 在fields里指定字段名称,例如用key对应Nebula中的degree,示例如下: + # Kafka 数据有固定的域名称:key、value、topic、partition、offset、timestamp、timestampType。 + # Spark 读取为 DataFrame 后,如果需要指定多个字段,用英文逗号(,)隔开。 + # 在 fields 里指定字段名称,例如用 key 对应 Nebula 中的 degree,示例如下: fields: [key] nebula.fields: [degree] - # 在source里,将topic中某一列作为边的起始点数据源。 - # 在target里,将topic中某一列作为边的目的点数据源。 + # 在 source 里,将 topic 中某一列作为边的起始点数据源。 + # 在 target 里,将 topic 中某一列作为边的目的点数据源。 source:{ field:timestamp } - target:{ field:offset } - # 单批次写入 Nebula Graph 的数据条数。 batch: 10 @@ -237,7 +233,7 @@ interval.seconds: 10 } - # 设置Edge type serve相关信息 + # 设置 Edge type serve 相关信息 { name: serve type: { @@ -265,9 +261,9 @@ } ``` -### 步骤 3:向Nebula Graph导入数据 +### 步骤 3:向 Nebula Graph 导入数据 -运行如下命令将Kafka数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 Kafka 数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -275,7 +271,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -287,14 +283,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 4:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 5:(如有)在Nebula Graph中重建索引 +### 步骤 5:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-maxcompute.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-maxcompute.md index 56efb083903..ef449c4e84a 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-maxcompute.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-maxcompute.md @@ -1,14 +1,14 @@ -# 导入MaxCompute数据 +# 导入 MaxCompute 数据 -本文以一个示例说明如何使用Exchange将存储在MaxCompute上的数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 MaxCompute 上的数据导入 Nebula Graph。 ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -20,33 +20,33 @@ - MaxCompute:阿里云官方版本 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 已经安装并开启Hadoop服务。 +- 已经安装并开启 Hadoop 服务。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析数据,按以下步骤在Nebula Graph中创建Schema: +分析数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -55,7 +55,7 @@ | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 在Nebula Graph中创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 在 Nebula Graph 中创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -64,19 +64,19 @@ replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` @@ -84,11 +84,11 @@ ### 步骤 2:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置MaxCompute数据源相关的配置。在本示例中,复制的文件名为`maxcompute_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 MaxCompute 数据源相关的配置。在本示例中,复制的文件名为`maxcompute_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -102,19 +102,19 @@ } } -# Nebula Graph相关配置 +# Nebula Graph 相关配置 nebula: { address:{ - # 以下为Nebula Graph的Graph服务和Meta服务所在机器的IP地址及端口。 + # 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口。 # 如果有多个地址,格式为 "ip1:port","ip2:port","ip3:port"。 # 不同地址之间以英文逗号 (,) 隔开。 graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 填写的账号必须拥有Nebula Graph相应图空间的写数据权限。 + # 填写的账号必须拥有 Nebula Graph 相应图空间的写数据权限。 user: root pswd: nebula - # 填写Nebula Graph中需要写入数据的图空间名称。 + # 填写 Nebula Graph 中需要写入数据的图空间名称。 space: basketballplayer connection { timeout: 3000 @@ -134,44 +134,44 @@ } # 处理点 tags: [ - # 设置Tag player相关信息 + # 设置 Tag player 相关信息 { name: player type: { - # 指定数据源文件格式,设置为MaxCompute。 + # 指定数据源文件格式,设置为 MaxCompute。 source: maxcompute - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # MaxCompute的表名 + # MaxCompute 的表名 table:player - # MaxCompute的项目名 + # MaxCompute 的项目名 project:project - # MaxCompute服务的odpsUrl和tunnelUrl, + # MaxCompute 服务的 odpsUrl 和 tunnelUrl, # 地址可在 https://help.aliyun.com/document_detail/34951.html 查看。 odpsUrl:"http://service.cn-hangzhou.maxcompute.aliyun.com/api" tunnelUrl:"http://dt.cn-hangzhou.maxcompute.aliyun.com" - # MaxCompute服务的accessKeyId和accessKeySecret。 + # MaxCompute 服务的 accessKeyId 和 accessKeySecret。 accessKeyId:xxx accessKeySecret:xxx - # MaxCompute表的分区描述,该配置可选。 + # MaxCompute 表的分区描述,该配置可选。 partitionSpec:"dt='partition1'" - # 请确保SQL语句中的表名和上方table的值相同,该配置可选。 + # 请确保 SQL 语句中的表名和上方 table 的值相同,该配置可选。 sentence:"select id, name, age, playerid from player where id < 10" - # 在fields里指定player表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 player 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields:[name, age] nebula.fields:[name, age] - # 指定表中某一列数据为Nebula Graph中点VID的来源。 + # 指定表中某一列数据为 Nebula Graph 中点 VID 的来源。 vertex:{ field: playerid } @@ -183,7 +183,7 @@ partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { name: team type: { @@ -210,53 +210,53 @@ # 处理边数据 edges: [ - # 设置Edge type follow相关信息 + # 设置 Edge type follow 相关信息 { - # Nebula Graph中对应的Edge type名称。 + # Nebula Graph 中对应的 Edge type 名称。 name: follow type:{ - # 指定数据源文件格式,设置为MaxCompute。 + # 指定数据源文件格式,设置为 MaxCompute。 source:maxcompute - # 指定边数据导入Nebula Graph的方式, - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定边数据导入 Nebula Graph 的方式, + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink:client } - # MaxCompute的表名 + # MaxCompute 的表名 table:follow - # MaxCompute的项目名 + # MaxCompute 的项目名 project:project - # MaxCompute服务的odpsUrl和tunnelUrl, + # MaxCompute 服务的 odpsUrl 和 tunnelUrl, # 地址可在 https://help.aliyun.com/document_detail/34951.html 查看。 odpsUrl:"http://service.cn-hangzhou.maxcompute.aliyun.com/api" tunnelUrl:"http://dt.cn-hangzhou.maxcompute.aliyun.com" - # MaxCompute服务的accessKeyId和accessKeySecret。 + # MaxCompute 服务的 accessKeyId 和 accessKeySecret。 accessKeyId:xxx accessKeySecret:xxx - # MaxCompute表的分区描述,该配置可选。 + # MaxCompute 表的分区描述,该配置可选。 partitionSpec:"dt='partition1'" - # 请确保SQL语句中的表名和上方table的值相同,该配置可选。 + # 请确保 SQL 语句中的表名和上方 table 的值相同,该配置可选。 sentence:"select * from follow" - # 在fields里指定follow表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 follow 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields:[degree] nebula.fields:[degree] - # 在source里,将follow表中某一列作为边的起始点数据源。 + # 在 source 里,将 follow 表中某一列作为边的起始点数据源。 source:{ field: src_player } - # 在target里,将follow表中某一列作为边的目的点数据源。 + # 在 target 里,将 follow 表中某一列作为边的目的点数据源。 target:{ field: dst_player } @@ -268,7 +268,7 @@ batch:10 } - # 设置Edge type serve相关信息 + # 设置 Edge type serve 相关信息 { name: serve type:{ @@ -298,9 +298,9 @@ } ``` -### 步骤 3:向Nebula Graph导入数据 +### 步骤 3:向 Nebula Graph 导入数据 -运行如下命令将MaxCompute数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 MaxCompute 数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -308,7 +308,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -320,14 +320,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 4:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 5:(如有)在Nebula Graph中重建索引 +### 步骤 5:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-mysql.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-mysql.md index 1bb6083db9a..f9928be0ea9 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-mysql.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-mysql.md @@ -1,12 +1,12 @@ -# 导入MySQL数据 +# 导入 MySQL 数据 -本文以一个示例说明如何使用Exchange将存储在MySQL上的数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 MySQL 上的数据导入 Nebula Graph。 ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 -在本示例中,该数据集已经存入MySQL中名为`basketball`的数据库中,以`player`、`team`、`follow`和`serve`四个表存储了所有点和边的信息。以下为各个表的结构。 +在本示例中,该数据集已经存入 MySQL 中名为`basketball`的数据库中,以`player`、`team`、`follow`和`serve`四个表存储了所有点和边的信息。以下为各个表的结构。 ```sql mysql> desc player; @@ -48,7 +48,7 @@ mysql> desc serve; ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -60,33 +60,33 @@ mysql> desc serve; - MySQL: 8.0.23 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 已经安装并开启Hadoop服务。 +- 已经安装并开启 Hadoop 服务。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析数据,按以下步骤在Nebula Graph中创建Schema: +分析数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -95,7 +95,7 @@ mysql> desc serve; | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 在Nebula Graph中创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 在 Nebula Graph 中创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -104,19 +104,19 @@ mysql> desc serve; replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` @@ -124,11 +124,11 @@ mysql> desc serve; ### 步骤 2:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置MySQL数据源相关的配置。在本示例中,复制的文件名为`mysql_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 MySQL 数据源相关的配置。在本示例中,复制的文件名为`mysql_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -142,19 +142,19 @@ mysql> desc serve; } } -# Nebula Graph相关配置 +# Nebula Graph 相关配置 nebula: { address:{ - # 以下为Nebula Graph的Graph服务和Meta服务所在机器的IP地址及端口。 + # 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口。 # 如果有多个地址,格式为 "ip1:port","ip2:port","ip3:port"。 # 不同地址之间以英文逗号 (,) 隔开。 graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 填写的账号必须拥有Nebula Graph相应图空间的写数据权限。 + # 填写的账号必须拥有 Nebula Graph 相应图空间的写数据权限。 user: root pswd: nebula - # 填写Nebula Graph中需要写入数据的图空间名称。 + # 填写 Nebula Graph 中需要写入数据的图空间名称。 space: basketballplayer connection { timeout: 3000 @@ -174,14 +174,14 @@ mysql> desc serve; } # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { - # Nebula Graph中对应的Tag名称。 + # Nebula Graph 中对应的 Tag 名称。 name: player type: { - # 指定数据源文件格式,设置为MySQL。 + # 指定数据源文件格式,设置为 MySQL。 source: mysql - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } @@ -193,13 +193,13 @@ mysql> desc serve; password:"123456" sentence:"select playerid, age, name from basketball.player order by playerid;" - # 在fields里指定player表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 player 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [age,name] nebula.fields: [age,name] - # 指定表中某一列数据为Nebula Graph中点VID的来源。 + # 指定表中某一列数据为 Nebula Graph 中点 VID 的来源。 vertex: { field:playerid } @@ -210,7 +210,7 @@ mysql> desc serve; # Spark 分区数量 partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { name: team type: { @@ -239,17 +239,17 @@ mysql> desc serve; # 处理边数据 edges: [ - # 设置Edge type follow相关信息 + # 设置 Edge type follow 相关信息 { - # Nebula Graph中对应的Edge type名称。 + # Nebula Graph 中对应的 Edge type 名称。 name: follow type: { - # 指定数据源文件格式,设置为MySQL。 + # 指定数据源文件格式,设置为 MySQL。 source: mysql - # 指定边数据导入Nebula Graph的方式, - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定边数据导入 Nebula Graph 的方式, + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } @@ -261,14 +261,14 @@ mysql> desc serve; password:"123456" sentence:"select src_player,dst_player,degree from basketball.follow order by src_player;" - # 在fields里指定follow表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 follow 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [degree] nebula.fields: [degree] - # 在source里,将follow表中某一列作为边的起始点数据源。 - # 在target里,将follow表中某一列作为边的目的点数据源。 + # 在 source 里,将 follow 表中某一列作为边的起始点数据源。 + # 在 target 里,将 follow 表中某一列作为边的目的点数据源。 source: { field: src_player } @@ -284,7 +284,7 @@ mysql> desc serve; partition: 32 } - # 设置Edge type serve相关信息 + # 设置 Edge type serve 相关信息 { name: serve type: { @@ -314,9 +314,9 @@ mysql> desc serve; } ``` -### 步骤 3:向Nebula Graph导入数据 +### 步骤 3:向 Nebula Graph 导入数据 -运行如下命令将MySQL数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 MySQL 数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -324,7 +324,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -336,14 +336,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 4:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 5:(如有)在Nebula Graph中重建索引 +### 步骤 5:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-neo4j.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-neo4j.md index b27680b8a0b..1d1025ec5e9 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-neo4j.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-neo4j.md @@ -1,22 +1,22 @@ -# 导入Neo4j数据 +# 导入 Neo4j 数据 -本文以一个示例说明如何使用Exchange将存储在Neo4j的数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 Neo4j 的数据导入 Nebula Graph。 ## 实现方法 -Exchange使用**Neo4j Driver 4.0.1**实现对Neo4j数据的读取。执行批量导出之前,用户需要在配置文件中写入针对标签(label)和关系类型(Relationship Type)自动执行的Cypher语句,以及Spark分区数,提高数据导出性能。 +Exchange 使用** Neo4j Driver 4.0.1 **实现对 Neo4j 数据的读取。执行批量导出之前,用户需要在配置文件中写入针对标签(label)和关系类型(Relationship Type)自动执行的 Cypher 语句,以及 Spark 分区数,提高数据导出性能。 -Exchange读取Neo4j数据时需要完成以下工作: +Exchange 读取 Neo4j 数据时需要完成以下工作: -1. Exchange中的Reader会将配置文件中`exec`部分的Cypher`RETURN`语句后面的语句替换为`COUNT(*)`,并执行这个语句,从而获取数据总量,再根据Spark分区数量计算每个分区的起始偏移量和大小。 +1. Exchange 中的 Reader 会将配置文件中`exec`部分的 Cypher`RETURN`语句后面的语句替换为`COUNT(*)`,并执行这个语句,从而获取数据总量,再根据 Spark 分区数量计算每个分区的起始偏移量和大小。 -2. (可选)如果用户配置了`check_point_path`目录,Reader会读取目录中的文件。如果处于续传状态,Reader会计算每个Spark分区应该有的偏移量和大小。 +2. (可选)如果用户配置了`check_point_path`目录,Reader 会读取目录中的文件。如果处于续传状态,Reader 会计算每个 Spark 分区应该有的偏移量和大小。 -3. 在每个Spark分区里,Exchange中的Reader会在Cypher语句后面添加不同的`SKIP`和`LIMIT`语句,调用Neo4j Driver并行执行,将数据分布到不同的Spark分区中。 +3. 在每个 Spark 分区里,Exchange 中的 Reader 会在 Cypher 语句后面添加不同的`SKIP`和`LIMIT`语句,调用 Neo4j Driver 并行执行,将数据分布到不同的 Spark 分区中。 -4. Reader最后将返回的数据处理成DataFrame。 +4. Reader 最后将返回的数据处理成 DataFrame。 -至此,Exchange即完成了对Neo4j数据的导出。之后,数据被并行写入Nebula Graph数据库中。 +至此,Exchange 即完成了对 Neo4j 数据的导出。之后,数据被并行写入 Nebula Graph 数据库中。 整个过程如下图所示。 @@ -24,11 +24,11 @@ Exchange读取Neo4j数据时需要完成以下工作: ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 ### 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz @@ -41,31 +41,31 @@ Exchange读取Neo4j数据时需要完成以下工作: - Neo4j:3.5.20 Community Edition -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析数据,按以下步骤在Nebula Graph中创建Schema: +分析数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -74,7 +74,7 @@ Exchange读取Neo4j数据时需要完成以下工作: | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 使用Nebula Console创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 使用 Nebula Console 创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -83,19 +83,19 @@ Exchange读取Neo4j数据时需要完成以下工作: replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` @@ -103,15 +103,15 @@ Exchange读取Neo4j数据时需要完成以下工作: ### 步骤 2:配置源数据 -为了提高Neo4j数据的导出速度,在Neo4j数据库中为相应属性创建索引。详细信息,参考[Neo4j用户手册](https://neo4j.com/docs/cypher-manual/current/query-tuning/indexes/)。 +为了提高 Neo4j 数据的导出速度,在 Neo4j 数据库中为相应属性创建索引。详细信息,参考 [Neo4j 用户手册](https://neo4j.com/docs/cypher-manual/current/query-tuning/indexes/)。 ### 步骤 3:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置数据源相关的配置。在本示例中,复制的文件名为`neo4j_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置数据源相关的配置。在本示例中,复制的文件名为`neo4j_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -131,8 +131,7 @@ Exchange读取Neo4j数据时需要完成以下工作: } } - - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ graph:["127.0.0.1:9669"] @@ -165,8 +164,7 @@ Exchange读取Neo4j数据时需要完成以下工作: # 处理点 tags: [ - - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { name: player type: { @@ -187,7 +185,7 @@ Exchange读取Neo4j数据时需要完成以下工作: batch: 1000 check_point_path: /tmp/test } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { name: team type: { @@ -212,7 +210,7 @@ Exchange读取Neo4j数据时需要完成以下工作: # 处理边数据 edges: [ - # 设置Edge type follow相关信息 + # 设置 Edge type follow 相关信息 { name: follow type: { @@ -237,7 +235,7 @@ Exchange读取Neo4j数据时需要完成以下工作: batch: 1000 check_point_path: /tmp/test } - # 设置Edge type serve相关信息 + # 设置 Edge type serve 相关信息 { name: serve type: { @@ -266,25 +264,25 @@ Exchange读取Neo4j数据时需要完成以下工作: } ``` -#### exec配置说明 +#### exec 配置说明 -在配置`tags.exec`或者`edges.exec`参数时,需要填写Cypher查询语句。为了保证每次查询结果排序一致,并且为了防止在导入时丢失数据,强烈建议在Cypher查询语句中加入`ORDER BY`子句,同时,为了提高数据导入效率,最好选取有索引的属性作为排序的属性。如果没有索引,用户也可以观察默认的排序,选择合适的属性用于排序,以提高效率。如果默认的排序找不到规律,用户可以根据点或关系的ID进行排序,并且将`partition`设置为一个尽量小的值,减轻Neo4j的排序压力。 +在配置`tags.exec`或者`edges.exec`参数时,需要填写 Cypher 查询语句。为了保证每次查询结果排序一致,并且为了防止在导入时丢失数据,强烈建议在 Cypher 查询语句中加入`ORDER BY`子句,同时,为了提高数据导入效率,最好选取有索引的属性作为排序的属性。如果没有索引,用户也可以观察默认的排序,选择合适的属性用于排序,以提高效率。如果默认的排序找不到规律,用户可以根据点或关系的 ID 进行排序,并且将`partition`设置为一个尽量小的值,减轻 Neo4j 的排序压力。 >**说明**:使用`ORDER BY`子句会延长数据导入的时间。 -另外,Exchange需要在不同Spark分区执行不同`SKIP`和`LIMIT`的Cypher语句,所以在`tags.exec`和`edges.exec`对应的Cypher语句中不能含有`SKIP`和`LIMIT`子句。 +另外,Exchange 需要在不同 Spark 分区执行不同`SKIP`和`LIMIT`的 Cypher 语句,所以在`tags.exec`和`edges.exec`对应的 Cypher 语句中不能含有`SKIP`和`LIMIT`子句。 -#### tags.vertex或edges.vertex配置说明 +#### tags.vertex 或 edges.vertex 配置说明 -Nebula Graph在创建点和边时会将ID作为唯一主键,如果主键已存在则会覆盖该主键中的数据。所以,假如将某个Neo4j属性值作为Nebula Graph的ID,而这个属性值在Neo4j中是有重复的,就会导致重复ID,它们对应的数据有且只有一条会存入Nebula Graph中,其它的则会被覆盖掉。由于数据导入过程是并发地往Nebula Graph中写数据,最终保存的数据并不能保证是Neo4j中最新的数据。 +Nebula Graph 在创建点和边时会将 ID 作为唯一主键,如果主键已存在则会覆盖该主键中的数据。所以,假如将某个 Neo4j 属性值作为 Nebula Graph 的 ID,而这个属性值在 Neo4j 中是有重复的,就会导致重复 ID,它们对应的数据有且只有一条会存入 Nebula Graph 中,其它的则会被覆盖掉。由于数据导入过程是并发地往 Nebula Graph 中写数据,最终保存的数据并不能保证是 Neo4j 中最新的数据。 -#### check_point_path配置说明 +#### check_point_path 配置说明 如果启用了断点续传功能,为避免数据丢失,在断点和续传之间,数据库不应该改变状态,例如不能添加数据或删除数据,同时,不能更改`partition`数量配置。 -### 步骤 4:向Nebula Graph导入数据 +### 步骤 4:向 Nebula Graph 导入数据 -运行如下命令将文件数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将文件数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -292,7 +290,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -304,14 +302,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 5:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 6:(如有)在Nebula Graph中重建索引 +### 步骤 6:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-orc.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-orc.md index e4e41a53624..eb97c8e2300 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-orc.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-orc.md @@ -1,16 +1,16 @@ -# 导入ORC文件数据 +# 导入 ORC 文件数据 -本文以一个示例说明如何使用Exchange将存储在HDFS或本地的ORC文件数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 HDFS 或本地的 ORC 文件数据导入 Nebula Graph。 -如果要向Nebula Graph导入本地ORC文件,请参见[Nebula Importer](https://github.com/vesoft-inc/nebula-importer "Click to go to GitHub")。 +如果要向 Nebula Graph 导入本地 ORC 文件,请参见 [Nebula Importer](https://github.com/vesoft-inc/nebula-importer "Click to go to GitHub")。 ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -20,35 +20,35 @@ - Hadoop:2.9.2 伪分布式部署 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 如果文件存储在HDFS上,需要确认Hadoop服务运行正常。 +- 如果文件存储在 HDFS 上,需要确认 Hadoop 服务运行正常。 -- 如果文件存储在本地且Nebula Graph是集群架构,需要在集群每台机器本地相同目录下放置文件。 +- 如果文件存储在本地且 Nebula Graph 是集群架构,需要在集群每台机器本地相同目录下放置文件。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析ORC文件中的数据,按以下步骤在Nebula Graph中创建Schema: +分析 ORC 文件中的数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -57,7 +57,7 @@ | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 使用Nebula Console创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 使用 Nebula Console 创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -66,39 +66,39 @@ replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` 更多信息,请参见[快速开始](../../2.quick-start/1.quick-start-workflow.md)。 -### 步骤 2:处理ORC文件 +### 步骤 2:处理 ORC 文件 确认以下信息: -1. 处理ORC文件以满足Schema的要求。 +1. 处理 ORC 文件以满足 Schema 的要求。 -2. 获取ORC文件存储路径。 +2. 获取 ORC 文件存储路径。 ### 步骤 3:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置ORC数据源相关的配置。在本示例中,复制的文件名为`orc_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 ORC 数据源相关的配置。在本示例中,复制的文件名为`orc_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -116,17 +116,17 @@ } } - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ - # 指定Graph服务和所有Meta服务的IP地址和端口。 + # 指定 Graph 服务和所有 Meta 服务的 IP 地址和端口。 # 如果有多台服务器,地址之间用英文逗号(,)分隔。 - # 格式: "ip1:port","ip2:port","ip3:port" + # 格式:"ip1:port","ip2:port","ip3:port" graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 指定拥有Nebula Graph写权限的用户名和密码。 + # 指定拥有 Nebula Graph 写权限的用户名和密码。 user: root pswd: nebula @@ -151,118 +151,116 @@ # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: player type: { - # 指定数据源,使用ORC。 + # 指定数据源,使用 ORC。 source: orc - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定ORC文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.orc"。 + # 指定 ORC 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.orc"。 path: "hdfs://192.168.*.*:9000/data/vertex_player.orc" - # 在fields里指定ORC文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 ORC 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [age,name] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [age, name] - # 指定一个列作为VID的源。 - # vertex的值必须与ORC文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与 ORC 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:id } - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: team type: { - # 指定数据源,使用ORC。 + # 指定数据源,使用 ORC。 source: orc - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定ORC文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.orc"。 + # 指定 ORC 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.orc"。 path: "hdfs://192.168.*.*:9000/data/vertex_team.orc" - # 在fields里指定ORC文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 ORC 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [name] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [name] - # 指定一个列作为VID的源。 - # vertex的值必须与ORC文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与 ORC 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:id } - - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 如果需要添加更多点,请参考前面的配置进行添加。 ] # 处理边 edges: [ - # 设置Edge type follow相关信息。 + # 设置 Edge type follow 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: follow type: { - # 指定数据源,使用ORC。 + # 指定数据源,使用 ORC。 source: orc - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定ORC文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.orc"。 + # 指定 ORC 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.orc"。 path: "hdfs://192.168.*.*:9000/data/edge_follow.orc" - # 在fields里指定ORC文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 ORC 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [degree] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [degree] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与ORC文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与 ORC 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: src } @@ -270,45 +268,44 @@ field: dst } - - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: rank - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Edge type serve相关信息。 + # 设置 Edge type serve 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: serve type: { - # 指定数据源,使用ORC。 + # 指定数据源,使用 ORC。 source: orc - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定ORC文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.orc"。 + # 指定 ORC 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.orc"。 path: "hdfs://192.168.*.*:9000/data/edge_serve.orc" - # 在fields里指定ORC文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 ORC 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [start_year,end_year] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [start_year, end_year] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与ORC文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与 ORC 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: src } @@ -316,15 +313,13 @@ field: dst } - - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: _c5 - - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } @@ -333,9 +328,9 @@ } ``` -### 步骤 4:向Nebula Graph导入数据 +### 步骤 4:向 Nebula Graph 导入数据 -运行如下命令将ORC文件数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 ORC 文件数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -343,7 +338,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -355,14 +350,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 5:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 6:(如有)在Nebula Graph中重建索引 +### 步骤 6:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-parquet.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-parquet.md index e412a7f6f11..22d75de26d4 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-parquet.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-parquet.md @@ -1,16 +1,16 @@ -# 导入Parquet文件数据 +# 导入 Parquet 文件数据 -本文以一个示例说明如何使用Exchange将存储在HDFS或本地的Parquet文件数据导入Nebula Graph。 +本文以一个示例说明如何使用 Exchange 将存储在 HDFS 或本地的 Parquet 文件数据导入 Nebula Graph。 -如果要向Nebula Graph导入本地Parquet文件,请参见[Nebula Importer](https://github.com/vesoft-inc/nebula-importer "Click to go to GitHub")。 +如果要向 Nebula Graph 导入本地 Parquet 文件,请参见 [Nebula Importer](https://github.com/vesoft-inc/nebula-importer "Click to go to GitHub")。 ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -20,35 +20,35 @@ - Hadoop:2.9.2 伪分布式部署 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 如果文件存储在HDFS上,需要确认Hadoop服务运行正常。 +- 如果文件存储在 HDFS 上,需要确认 Hadoop 服务运行正常。 -- 如果文件存储在本地且Nebula Graph是集群架构,需要在集群每台机器本地相同目录下放置文件。 +- 如果文件存储在本地且 Nebula Graph 是集群架构,需要在集群每台机器本地相同目录下放置文件。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析Parquet文件中的数据,按以下步骤在Nebula Graph中创建Schema: +分析 Parquet 文件中的数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -57,7 +57,7 @@ | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 使用Nebula Console创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 使用 Nebula Console 创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -66,39 +66,39 @@ replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` 更多信息,请参见[快速开始](../../2.quick-start/1.quick-start-workflow.md)。 -### 步骤 2:处理Parquet文件 +### 步骤 2:处理 Parquet 文件 确认以下信息: -1. 处理Parquet文件以满足Schema的要求。 +1. 处理 Parquet 文件以满足 Schema 的要求。 -2. 获取Parquet文件存储路径。 +2. 获取 Parquet 文件存储路径。 ### 步骤 3:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置Parquet数据源相关的配置。在本示例中,复制的文件名为`parquet_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 Parquet 数据源相关的配置。在本示例中,复制的文件名为`parquet_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -116,17 +116,17 @@ } } - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ - # 指定Graph服务和所有Meta服务的IP地址和端口。 + # 指定 Graph 服务和所有 Meta 服务的 IP 地址和端口。 # 如果有多台服务器,地址之间用英文逗号(,)分隔。 - # 格式: "ip1:port","ip2:port","ip3:port" + # 格式:"ip1:port","ip2:port","ip3:port" graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 指定拥有Nebula Graph写权限的用户名和密码。 + # 指定拥有 Nebula Graph 写权限的用户名和密码。 user: root pswd: nebula @@ -151,118 +151,116 @@ # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: player type: { - # 指定数据源,使用Parquet。 + # 指定数据源,使用 Parquet。 source: parquet - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定Parquet文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.csv"。 + # 指定 Parquet 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。 path: "hdfs://192.168.11.139000/data/vertex_player.parquet" - # 在fields里指定Parquet文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 Parquet 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [age,name] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [age, name] - # 指定一个列作为VID的源。 - # vertex的值必须与Parquet文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与 Parquet 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:id } - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: team type: { - # 指定数据源,使用Parquet。 + # 指定数据源,使用 Parquet。 source: parquet - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定Parquet文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.csv"。 + # 指定 Parquet 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。 path: "hdfs://192.168.11.13:9000/data/vertex_team.parquet" - # 在fields里指定Parquet文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 Parquet 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [name] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [name] - # 指定一个列作为VID的源。 - # vertex的值必须与Parquet文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与 Parquet 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:id } - - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 如果需要添加更多点,请参考前面的配置进行添加。 ] # 处理边 edges: [ - # 设置Edge type follow相关信息。 + # 设置 Edge type follow 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: follow type: { - # 指定数据源,使用Parquet。 + # 指定数据源,使用 Parquet。 source: parquet - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定Parquet文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.csv"。 + # 指定 Parquet 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。 path: "hdfs://192.168.11.13:9000/data/edge_follow.parquet" - # 在fields里指定Parquet文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 Parquet 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [degree] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [degree] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与Parquet文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与 Parquet 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: src } @@ -270,45 +268,44 @@ field: dst } - - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: rank - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Edge type serve相关信息。 + # 设置 Edge type serve 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: serve type: { - # 指定数据源,使用Parquet。 + # 指定数据源,使用 Parquet。 source: parquet - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # 指定Parquet文件的路径。 - # 如果文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx"。 - # 如果文件存储在本地,用双引号括起路径,以file://开头,例如"file:///tmp/xx.csv"。 + # 指定 Parquet 文件的路径。 + # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。 + # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。 path: "hdfs://192.168.11.13:9000/data/edge_serve.parquet" - # 在fields里指定Parquet文件中key名称,其对应的value会作为Nebula Graph中指定属性的数据源。 + # 在 fields 里指定 Parquet 文件中 key 名称,其对应的 value 会作为 Nebula Graph 中指定属性的数据源。 # 如果需要指定多个值,用英文逗号(,)隔开。 fields: [start_year,end_year] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [start_year, end_year] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与Parquet文件中的字段保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与 Parquet 文件中的字段保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: src } @@ -316,15 +313,13 @@ field: dst } - - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: _c5 - - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } @@ -333,9 +328,9 @@ } ``` -### 步骤 4:向Nebula Graph导入数据 +### 步骤 4:向 Nebula Graph 导入数据 -运行如下命令将Parquet文件数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 Parquet 文件数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -343,7 +338,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -355,14 +350,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 5:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 6:(如有)在Nebula Graph中重建索引 +### 步骤 6:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-pulsar.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-pulsar.md index c9697a6d6cf..aa7e01ea372 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-pulsar.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-pulsar.md @@ -1,10 +1,10 @@ -# 导入Pulsar数据 +# 导入 Pulsar 数据 -本文简单说明如何使用Exchange将存储在Pulsar上的数据导入Nebula Graph。 +本文简单说明如何使用 Exchange 将存储在 Pulsar 上的数据导入 Nebula Graph。 ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -12,33 +12,33 @@ - Spark:2.4.7,单机版 -- Nebula Graph:{{nebula.release}}。使用[Docker Compose部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 +- Nebula Graph:{{nebula.release}}。使用 [Docker Compose 部署](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md)。 ## 前提条件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 -- 已经编译Exchange。详情请参见[编译Exchange](../ex-ug-compile.md)。本示例中使用Exchange {{exchange.release}}。 +- 已经编译 Exchange。详情请参见[编译 Exchange](../ex-ug-compile.md)。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 了解Nebula Graph中创建Schema的信息,包括Tag和Edge type的名称、属性等。 +- 了解 Nebula Graph 中创建 Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 已经安装并开启Pulsar服务。 +- 已经安装并开启 Pulsar 服务。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析数据,按以下步骤在Nebula Graph中创建Schema: +分析数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -47,7 +47,7 @@ | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 在Nebula Graph中创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 在 Nebula Graph 中创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -56,19 +56,19 @@ replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` @@ -76,11 +76,11 @@ ### 步骤 2:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置Pulsar数据源相关的配置。在本示例中,复制的文件名为`pulsar_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置 Pulsar 数据源相关的配置。在本示例中,复制的文件名为`pulsar_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange {{exchange.release}} @@ -94,20 +94,19 @@ } } - - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ - # 以下为Nebula Graph的Graph服务和Meta服务所在机器的IP地址及端口。 + # 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口。 # 如果有多个地址,格式为 "ip1:port","ip2:port","ip3:port"。 # 不同地址之间以英文逗号 (,) 隔开。 graph:["127.0.0.1:9669"] meta:["127.0.0.1:9559"] } - # 填写的账号必须拥有Nebula Graph相应图空间的写数据权限。 + # 填写的账号必须拥有 Nebula Graph 相应图空间的写数据权限。 user: root pswd: nebula - # 填写Nebula Graph中需要写入数据的图空间名称。 + # 填写 Nebula Graph 中需要写入数据的图空间名称。 space: basketballplayer connection { timeout: 3000 @@ -127,37 +126,36 @@ } # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { - # Nebula Graph中对应的Tag 名称。 + # Nebula Graph 中对应的 Tag 名称。 name: player type: { - # 指定数据源文件格式,设置为Pulsar。 + # 指定数据源文件格式,设置为 Pulsar。 source: pulsar - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # Pulsar服务器地址。 + # Pulsar 服务器地址。 service: "pulsar://127.0.0.1:6650" - # 连接pulsar的admin.url。 + # 连接 pulsar 的 admin.url。 admin: "http://127.0.0.1:8081" - # Pulsar的选项,可以从topic、topics和topicsPattern选择一个进行配置。 + # Pulsar 的选项,可以从 topic、topics 和 topicsPattern 选择一个进行配置。 options: { topics: "topic1,topic2" } - # 在fields里指定player表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 player 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [age,name] nebula.fields: [age,name] - # 指定表中某一列数据为Nebula Graph中点VID的来源。 + # 指定表中某一列数据为 Nebula Graph 中点 VID 的来源。 vertex:{ field:playerid } - # 单批次写入 Nebula Graph 的数据条数。 batch: 10 @@ -166,7 +164,7 @@ # 读取消息的间隔。单位:秒。 interval.seconds: 10 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { name: team type: { @@ -192,47 +190,45 @@ # 处理边数据 edges: [ - # 设置Edge type follow相关信息 + # 设置 Edge type follow 相关信息 { - # Nebula Graph中对应的Edge type名称。 + # Nebula Graph 中对应的 Edge type 名称。 name: follow type: { - # 指定数据源文件格式,设置为Pulsar。 + # 指定数据源文件格式,设置为 Pulsar。 source: pulsar - # 指定边数据导入Nebula Graph的方式, - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定边数据导入 Nebula Graph 的方式, + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: client } - # Pulsar服务器地址。 + # Pulsar 服务器地址。 service: "pulsar://127.0.0.1:6650" - # 连接pulsar的admin.url。 + # 连接 pulsar 的 admin.url。 admin: "http://127.0.0.1:8081" - # Pulsar的选项,可以从topic、topics和topicsPattern选择一个进行配置。 + # Pulsar 的选项,可以从 topic、topics 和 topicsPattern 选择一个进行配置。 options: { topics: "topic1,topic2" } - # 在fields里指定follow表中的列名称,其对应的value会作为Nebula Graph中指定属性。 - # fields和nebula.fields里的配置必须一一对应。 + # 在 fields 里指定 follow 表中的列名称,其对应的 value 会作为 Nebula Graph 中指定属性。 + # fields 和 nebula.fields 里的配置必须一一对应。 # 如果需要指定多个列名称,用英文逗号(,)隔开。 fields: [degree] nebula.fields: [degree] - # 在source里,将follow表中某一列作为边的起始点数据源。 - # 在target里,将follow表中某一列作为边的目的点数据源。 + # 在 source 里,将 follow 表中某一列作为边的起始点数据源。 + # 在 target 里,将 follow 表中某一列作为边的目的点数据源。 source:{ field:src_player } - target:{ field:dst_player } - # 单批次写入 Nebula Graph 的数据条数。 batch: 10 @@ -243,7 +239,7 @@ interval.seconds: 10 } - # 设置Edge type serve相关信息 + # 设置 Edge type serve 相关信息 { name: serve type: { @@ -274,9 +270,9 @@ } ``` -### 步骤 3:向Nebula Graph导入数据 +### 步骤 3:向 Nebula Graph 导入数据 -运行如下命令将Pulsar数据导入到Nebula Graph中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 Pulsar 数据导入到 Nebula Graph 中。关于参数的说明,请参见[导入命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchange.Exchange -c @@ -284,7 +280,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.exchan !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -296,14 +292,14 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --class com.vesoft.nebula.excha ### 步骤 4:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 5:(如有)在Nebula Graph中重建索引 +### 步骤 5:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 \ No newline at end of file +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 \ No newline at end of file diff --git a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-sst.md b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-sst.md index 644a65baa37..b7aa1e0cb96 100644 --- a/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-sst.md +++ b/docs-2.0/nebula-exchange/use-exchange/ex-ug-import-from-sst.md @@ -1,50 +1,52 @@ -# 导入SST文件数据 +# 导入 SST 文件数据 -本文以一个示例说明如何将数据源的数据生成SST(Sorted String Table)文件并保存在HDFS上,然后导入Nebula Graph,示例数据源是CSV文件。 +本文以一个示例说明如何将数据源的数据生成 SST(Sorted String Table)文件并保存在 HDFS 上,然后导入 Nebula Graph,示例数据源是 CSV 文件。 ## 注意事项 -- 仅Linux系统支持导入SST文件。 +- 仅 Linux 系统支持导入 SST 文件。 -- 不支持属性的Default值。 +- 不支持属性的 Default 值。 + +- 企业版 Exchange {{exchange.release}}不支持基于 [GEOGRAPHY](../../3.ngql-guide/3.data-types/10.geography.md) 类型的数据生成 SST 文件。 ## 背景信息 -Exchange支持两种数据导入模式: +Exchange 支持两种数据导入模式: -- 直接将数据源的数据通过**nGQL**语句的形式导入Nebula Graph。 +- 直接将数据源的数据通过** nGQL **语句的形式导入 Nebula Graph。 -- 将数据源的数据生成SST文件,然后借助Console将SST文件导入Nebula Graph。 +- 将数据源的数据生成 SST 文件,然后借助 Console 将 SST 文件导入 Nebula Graph。 -下文将介绍生成SST文件并用其导入数据的适用场景、实现方法、前提条件、操作步骤等内容。 +下文将介绍生成 SST 文件并用其导入数据的适用场景、实现方法、前提条件、操作步骤等内容。 ## 适用场景 -- 适合在线业务,因为生成时几乎不会影响业务(只是读取Schema),导入速度快。 +- 适合在线业务,因为生成时几乎不会影响业务(只是读取 Schema),导入速度快。 !!! caution - 虽然导入速度快,但是导入期间(大约10秒)会阻塞对应空间的写操作,建议在业务低峰期进行导入。 + 虽然导入速度快,但是导入期间(大约 10 秒)会阻塞对应空间的写操作,建议在业务低峰期进行导入。 - 适合数据源数据量较大的场景,导入速度快。 ## 实现方法 -Nebula Graph底层使用RocksDB作为键值型存储引擎。RocksDB是基于硬盘的存储引擎,提供了一系列API用于创建及导入SST格式的文件,有助于快速导入海量数据。 +Nebula Graph 底层使用 RocksDB 作为键值型存储引擎。RocksDB 是基于硬盘的存储引擎,提供了一系列 API 用于创建及导入 SST 格式的文件,有助于快速导入海量数据。 -SST文件是一个内部包含了任意长度的有序键值对集合的文件,用于高效地存储大量键值型数据。生成SST文件的整个过程主要由Exchange的Reader、sstProcessor和sstWriter完成。整个数据处理过程如下: +SST 文件是一个内部包含了任意长度的有序键值对集合的文件,用于高效地存储大量键值型数据。生成 SST 文件的整个过程主要由 Exchange 的 Reader、sstProcessor 和 sstWriter 完成。整个数据处理过程如下: -1. Reader从数据源中读取数据。 +1. Reader 从数据源中读取数据。 -2. sstProcessor根据Nebula Graph的Schema信息生成SST文件,然后上传至HDFS。SST文件的格式请参见[数据存储格式](../../1.introduction/3.nebula-graph-architecture/4.storage-service.md)。 +2. sstProcessor 根据 Nebula Graph 的 Schema 信息生成 SST 文件,然后上传至 HDFS。SST 文件的格式请参见[数据存储格式](../../1.introduction/3.nebula-graph-architecture/4.storage-service.md)。 -3. sstWriter打开一个文件并插入数据。生成SST文件时,Key必须按照顺序写入。 +3. sstWriter 打开一个文件并插入数据。生成 SST 文件时,Key 必须按照顺序写入。 -4. 生成SST文件之后,RocksDB通过`IngestExternalFile()`方法将SST文件导入到Nebula Graph中。例如: +4. 生成 SST 文件之后,RocksDB 通过`IngestExternalFile()`方法将 SST 文件导入到 Nebula Graph 中。例如: ``` IngestExternalFileOptions ifo; - # 导入两个SST文件 + # 导入两个 SST 文件 Status s = db_->IngestExternalFile({"/home/usr/file1.sst", "/home/usr/file2.sst"}, ifo); if (!s.ok()) { printf("Error while adding file %s and %s, Error %s\n", @@ -53,15 +55,15 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 } ``` - 调用`IngestExternalFile()`方法时,RocksDB默认会将文件拷贝到数据目录,并且阻塞RocksDB写入操作。如果SST文件中的键范围覆盖了Memtable键的范围,则将Memtable落盘(flush)到硬盘。将SST文件放置在LSM树最优位置后,为文件分配一个全局序列号,并打开写操作。 + 调用`IngestExternalFile()`方法时,RocksDB 默认会将文件拷贝到数据目录,并且阻塞 RocksDB 写入操作。如果 SST 文件中的键范围覆盖了 Memtable 键的范围,则将 Memtable 落盘(flush)到硬盘。将 SST 文件放置在 LSM 树最优位置后,为文件分配一个全局序列号,并打开写操作。 ## 数据集 -本文以[basketballplayer数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 +本文以 [basketballplayer 数据集](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip)为例。 ## 环境配置 -本文示例在MacOS下完成,以下是相关的环境配置信息: +本文示例在 MacOS 下完成,以下是相关的环境配置信息: - 硬件规格: - CPU:1.7 GHz Quad-Core Intel Core i7 @@ -77,41 +79,41 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 开始导入数据之前,用户需要确认以下信息: -- 已经[安装部署Nebula Graph {{nebula.release}}](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md)并获取如下信息: +- 已经[安装部署 Nebula Graph {{nebula.release}}](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) 并获取如下信息: - - Graph服务和Meta服务的的IP地址和端口。 + - Graph 服务和 Meta 服务的的 IP 地址和端口。 - - 拥有Nebula Graph写权限的用户名和密码。 + - 拥有 Nebula Graph 写权限的用户名和密码。 - - Meta服务配置文件中的`--ws_storage_http_port`和Storage服务配置文件中的`--ws_http_port`一致。例如都为`19779`。 + - Meta 服务配置文件中的`--ws_storage_http_port`和 Storage 服务配置文件中的`--ws_http_port`一致。例如都为`19779`。 - - Graph服务配置文件中的`--ws_meta_http_port`和Meta服务配置文件中的`--ws_http_port`一致。例如都为`19559`。 + - Graph 服务配置文件中的`--ws_meta_http_port`和 Meta 服务配置文件中的`--ws_http_port`一致。例如都为`19559`。 - - Schema的信息,包括Tag和Edge type的名称、属性等。 + - Schema 的信息,包括 Tag 和 Edge type 的名称、属性等。 -- 已经[编译Exchange](../ex-ug-compile.md),或者直接[下载](https://repo1.maven.org/maven2/com/vesoft/nebula-exchange/)编译完成的.jar文件。本示例中使用Exchange {{exchange.release}}。 +- 已经[编译 Exchange](../ex-ug-compile.md),或者直接[下载](https://repo1.maven.org/maven2/com/vesoft/nebula-exchange/)编译完成的。jar 文件。本示例中使用 Exchange {{exchange.release}}。 -- 已经安装Spark。 +- 已经安装 Spark。 -- 已经安装JDK 1.8或以上版本,并配置环境变量JAVA_HOME。 +- 已经安装 JDK 1.8 或以上版本,并配置环境变量 JAVA_HOME。 -- 确认Hadoop服务在所有部署Storage服务的机器上运行正常。 +- 确认 Hadoop 服务在所有部署 Storage 服务的机器上运行正常。 !!! note - - 如果需要生成其他数据源的SST文件,请参见相应数据源的文档,查看前提条件部分。 + - 如果需要生成其他数据源的 SST 文件,请参见相应数据源的文档,查看前提条件部分。 - - 如果只需要生成SST文件,不需要在部署Storage服务的机器上安装Hadoop服务。 + - 如果只需要生成 SST 文件,不需要在部署 Storage 服务的机器上安装 Hadoop 服务。 - - 如需在INGEST(数据导入)结束后自动移除SST文件,在Storage服务配置文件中增加`--move_files=true`,该配置会让Nebula Graph在INGEST后将SST文件移动(`mv`)到`data`目录下。`--move_files`的默认值为`false`,此时Nebula Graph会复制(`cp`)SST文件而不是移动。 + - 如需在 INGEST(数据导入)结束后自动移除 SST 文件,在 Storage 服务配置文件中增加`--move_files=true`,该配置会让 Nebula Graph 在 INGEST 后将 SST 文件移动(`mv`)到`data`目录下。`--move_files`的默认值为`false`,此时 Nebula Graph 会复制(`cp`)SST 文件而不是移动。 ## 操作步骤 -### 步骤 1:在Nebula Graph中创建Schema +### 步骤 1:在 Nebula Graph 中创建 Schema -分析CSV文件中的数据,按以下步骤在Nebula Graph中创建Schema: +分析 CSV 文件中的数据,按以下步骤在 Nebula Graph 中创建 Schema: -1. 确认Schema要素。Nebula Graph中的Schema要素如下表所示。 +1. 确认 Schema 要素。Nebula Graph 中的 Schema 要素如下表所示。 | 要素 | 名称 | 属性 | | :--- | :--- | :--- | @@ -120,7 +122,7 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 | Edge Type | `follow` | `degree int` | | Edge Type | `serve` | `start_year int, end_year int` | -2. 使用Nebula Console创建一个图空间**basketballplayer**,并创建一个Schema,如下所示。 +2. 使用 Nebula Console 创建一个图空间** basketballplayer**,并创建一个 Schema,如下所示。 ```ngql ## 创建图空间 @@ -129,43 +131,43 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 replica_factor = 1, \ vid_type = FIXED_STRING(30)); - ## 选择图空间basketballplayer + ## 选择图空间 basketballplayer nebula> USE basketballplayer; - ## 创建Tag player + ## 创建 Tag player nebula> CREATE TAG player(name string, age int); - ## 创建Tag team + ## 创建 Tag team nebula> CREATE TAG team(name string); - ## 创建Edge type follow + ## 创建 Edge type follow nebula> CREATE EDGE follow(degree int); - ## 创建Edge type serve + ## 创建 Edge type serve nebula> CREATE EDGE serve(start_year int, end_year int); ``` 更多信息,请参见[快速开始](../../2.quick-start/1.quick-start-workflow.md)。 -### 步骤 2:处理CSV文件 +### 步骤 2:处理 CSV 文件 确认以下信息: -1. 处理CSV文件以满足Schema的要求。 +1. 处理 CSV 文件以满足 Schema 的要求。 !!! note - 可以使用有表头或者无表头的CSV文件。 + 可以使用有表头或者无表头的 CSV 文件。 -2. 获取CSV文件存储路径。 +2. 获取 CSV 文件存储路径。 ### 步骤 3:修改配置文件 -编译Exchange后,复制`target/classes/application.conf`文件设置相关配置。在本示例中,复制的文件名为`sst_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 +编译 Exchange 后,复制`target/classes/application.conf`文件设置相关配置。在本示例中,复制的文件名为`sst_application.conf`。各个配置项的详细说明请参见[配置说明](../parameter-reference/ex-ug-parameter.md)。 ```conf { - # Spark相关配置 + # Spark 相关配置 spark: { app: { name: Nebula Exchange 2.0 @@ -187,7 +189,7 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 } } - # Nebula Graph相关配置 + # Nebula Graph 相关配置 nebula: { address:{ graph:["127.0.0.1:9669"] @@ -197,21 +199,21 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 pswd: nebula space: basketballplayer - # SST文件相关配置 + # SST 文件相关配置 path:{ - # 本地临时存放生成的SST文件的目录 + # 本地临时存放生成的 SST 文件的目录 local:"/tmp" - # SST文件在HDFS的存储路径 + # SST 文件在 HDFS 的存储路径 remote:"/sst" - # HDFS的NameNode地址 + # HDFS 的 NameNode 地址 hdfs.namenode: "hdfs://*.*.*.*:9000" } # 客户端连接参数 connection { - # socket连接、执行的超时时间,单位:毫秒。 + # socket 连接、执行的超时时间,单位:毫秒。 timeout: 30000 } @@ -222,46 +224,45 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 output: /tmp/errors } - # 使用谷歌的RateLimiter来限制发送到NebulaGraph的请求。 + # 使用谷歌的 RateLimiter 来限制发送到 NebulaGraph 的请求。 rate: { - # RateLimiter的稳定吞吐量。 + # RateLimiter 的稳定吞吐量。 limit: 1024 - # 从RateLimiter获取允许的超时时间,单位:毫秒 + # 从 RateLimiter 获取允许的超时时间,单位:毫秒 timeout: 1000 } } - # 处理点 tags: [ - # 设置Tag player相关信息。 + # 设置 Tag player 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: player type: { - # 指定数据源,使用CSV。 + # 指定数据源,使用 CSV。 source: csv - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: sst } - # 指定CSV文件的路径。 - # 文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx.csv"。 + # 指定 CSV 文件的路径。 + # 文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx.csv"。 path: "hdfs://*.*.*.*:9000/dataset/vertex_player.csv" - # 如果CSV文件没有表头,使用[_c0, _c1, _c2, ..., _cn]表示其表头,并将列指示为属性值的源。 - # 如果CSV文件有表头,则使用实际的列名。 + # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。 + # 如果 CSV 文件有表头,则使用实际的列名。 fields: [_c1, _c2] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [age, name] - # 指定一个列作为VID的源。 - # vertex的值必须与上述fields或者csv.fields中的列名保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:_c0 } @@ -269,44 +270,44 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 # 指定的分隔符。默认值为英文逗号(,)。 separator: "," - # 如果CSV文件有表头,请将header设置为true。 - # 如果CSV文件没有表头,请将header设置为false。默认值为false。 + # 如果 CSV 文件有表头,请将 header 设置为 true。 + # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。 header: false - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Tag team相关信息。 + # 设置 Tag team 相关信息。 { - # 指定Nebula Graph中定义的Tag名称。 + # 指定 Nebula Graph 中定义的 Tag 名称。 name: team type: { - # 指定数据源,使用CSV。 + # 指定数据源,使用 CSV。 source: csv - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: sst } - # 指定CSV文件的路径。 - # 文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx.csv"。 + # 指定 CSV 文件的路径。 + # 文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx.csv"。 path: "hdfs://*.*.*.*:9000/dataset/vertex_team.csv" - # 如果CSV文件没有表头,使用[_c0, _c1, _c2, ..., _cn]表示其表头,并将列指示为属性值的源。 - # 如果CSV文件有表头,则使用实际的列名。 + # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。 + # 如果 CSV 文件有表头,则使用实际的列名。 fields: [_c1] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [name] - # 指定一个列作为VID的源。 - # vertex的值必须与上述fields或者csv.fields中的列名保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # 指定一个列作为 VID 的源。 + # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 vertex: { field:_c0 } @@ -314,49 +315,48 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 # 指定的分隔符。默认值为英文逗号(,)。 separator: "," - # 如果CSV文件有表头,请将header设置为true。 - # 如果CSV文件没有表头,请将header设置为false。默认值为false。 + # 如果 CSV 文件有表头,请将 header 设置为 true。 + # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。 header: false - # 指定单批次写入Nebula Graph的最大点数量。 + # 指定单批次写入 Nebula Graph 的最大点数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 如果需要添加更多点,请参考前面的配置进行添加。 ] # 处理边 edges: [ - # 设置Edge type follow相关信息。 + # 设置 Edge type follow 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: follow type: { - # 指定数据源,使用CSV。 + # 指定数据源,使用 CSV。 source: csv - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: sst } - # 指定CSV文件的路径。 - # 文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx.csv"。 + # 指定 CSV 文件的路径。 + # 文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx.csv"。 path: "hdfs://*.*.*.*:9000/dataset/edge_follow.csv" - # 如果CSV文件没有表头,使用[_c0, _c1, _c2, ..., _cn]表示其表头,并将列指示为属性值的源。 - # 如果CSV文件有表头,则使用实际的列名。 + # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。 + # 如果 CSV 文件有表头,则使用实际的列名。 fields: [_c2] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [degree] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与上述fields或者csv.fields中的列名保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: _c0 } @@ -367,48 +367,48 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 # 指定的分隔符。默认值为英文逗号(,)。 separator: "," - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: rank - # 如果CSV文件有表头,请将header设置为true。 - # 如果CSV文件没有表头,请将header设置为false。默认值为false。 + # 如果 CSV 文件有表头,请将 header 设置为 true。 + # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。 header: false - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } - # 设置Edge type serve相关信息。 + # 设置 Edge type serve 相关信息。 { - # 指定Nebula Graph中定义的Edge type名称。 + # 指定 Nebula Graph 中定义的 Edge type 名称。 name: serve type: { - # 指定数据源,使用CSV。 + # 指定数据源,使用 CSV。 source: csv - # 指定如何将点数据导入Nebula Graph:Client或SST。 + # 指定如何将点数据导入 Nebula Graph:Client 或 SST。 sink: sst } - # 指定CSV文件的路径。 - # 文件存储在HDFS上,用双引号括起路径,以hdfs://开头,例如"hdfs://ip:port/xx/xx.csv"。 + # 指定 CSV 文件的路径。 + # 文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx.csv"。 path: "hdfs://*.*.*.*:9000/dataset/edge_serve.csv" - # 如果CSV文件没有表头,使用[_c0, _c1, _c2, ..., _cn]表示其表头,并将列指示为属性值的源。 - # 如果CSV文件有表头,则使用实际的列名。 + # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。 + # 如果 CSV 文件有表头,则使用实际的列名。 fields: [_c2,_c3] - # 指定Nebula Graph中定义的属性名称。 - # fields与nebula.fields的顺序必须一一对应。 + # 指定 Nebula Graph 中定义的属性名称。 + # fields 与 nebula.fields 的顺序必须一一对应。 nebula.fields: [start_year, end_year] # 指定一个列作为起始点和目的点的源。 - # vertex的值必须与上述fields或者csv.fields中的列名保持一致。 - # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的VID。 + # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。 + # 目前,Nebula Graph {{nebula.release}}仅支持字符串或整数类型的 VID。 source: { field: _c0 } @@ -419,17 +419,17 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 # 指定的分隔符。默认值为英文逗号(,)。 separator: "," - # 指定一个列作为rank的源(可选)。 + # 指定一个列作为 rank 的源(可选)。 #ranking: _c5 - # 如果CSV文件有表头,请将header设置为true。 - # 如果CSV文件没有表头,请将header设置为false。默认值为false。 + # 如果 CSV 文件有表头,请将 header 设置为 true。 + # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。 header: false - # 指定单批次写入Nebula Graph的最大边数量。 + # 指定单批次写入 Nebula Graph 的最大边数量。 batch: 256 - # 指定Spark分片数量。 + # 指定 Spark 分片数量。 partition: 32 } @@ -438,9 +438,9 @@ SST文件是一个内部包含了任意长度的有序键值对集合的文件 } ``` -### 步骤 4:生成SST文件 +### 步骤 4:生成 SST 文件 -运行如下命令将CSV源文件生成为SST文件。关于参数的说明,请参见[命令参数](../parameter-reference/ex-ug-para-import-command.md)。 +运行如下命令将 CSV 源文件生成为 SST 文件。关于参数的说明,请参见[命令参数](../parameter-reference/ex-ug-para-import-command.md)。 ```bash ${SPARK_HOME}/bin/spark-submit --master "local" --conf spark.sql.shuffle.partition= --class com.vesoft.nebula.exchange.Exchange -c @@ -448,7 +448,11 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --conf spark.sql.shuffle.partiti !!! note - JAR包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从maven仓库下载。 + 生成 SST 文件时,会涉及到 Spark 的 shuffle 操作,请注意在提交命令中增加`spark.sql.shuffle.partition`的配置。 + +!!! note + + JAR 包有两种获取方式:[自行编译](../ex-ug-compile.md)或者从 maven 仓库下载。 示例: @@ -456,25 +460,25 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --conf spark.sql.shuffle.partiti ${SPARK_HOME}/bin/spark-submit --master "local" --conf spark.sql.shuffle.partition=200 --class com.vesoft.nebula.exchange.Exchange /root/nebula-exchange/nebula-exchange/target/nebula-exchange-{{exchange.release}}.jar -c /root/nebula-exchange/nebula-exchange/target/classes/sst_application.conf ``` -任务执行完成后,可以在HDFS上的`/sst`目录(`nebula.path.remote`参数指定)内查看到生成的SST文件。 +任务执行完成后,可以在 HDFS 上的`/sst`目录(`nebula.path.remote`参数指定)内查看到生成的 SST 文件。 !!! note - 如果对Schema有修改操作,例如重建图空间、修改Tag、修改Edge type等,需要重新生成SST文件,因为SST文件会验证Space ID、Tag ID、Edge ID等信息。 + 如果对 Schema 有修改操作,例如重建图空间、修改 Tag、修改 Edge type 等,需要重新生成 SST 文件,因为 SST 文件会验证 Space ID、Tag ID、Edge ID 等信息。 -### 步骤 5:导入SST文件 +### 步骤 5:导入 SST 文件 !!! note 导入前请确认以下信息: - - 确认所有部署Storage服务的机器上都已部署Hadoop服务,并配置HADOOP_HOME和JAVA_HOME。 + - 确认所有部署 Storage 服务的机器上都已部署 Hadoop 服务,并配置 HADOOP_HOME 和 JAVA_HOME。 - - Meta服务配置文件中的`--ws_storage_http_port`(如果没有,请手动添加)和Storage服务配置文件中的`--ws_http_port`一致。例如都为`19779`。 + - Meta 服务配置文件中的`--ws_storage_http_port`(如果没有,请手动添加)和 Storage 服务配置文件中的`--ws_http_port`一致。例如都为`19779`。 - - Graph服务配置文件中的`--ws_meta_http_port`(如果没有,请手动添加)和Meta服务配置文件中的`--ws_http_port`一致。例如都为`19559`。 + - Graph 服务配置文件中的`--ws_meta_http_port`(如果没有,请手动添加)和 Meta 服务配置文件中的`--ws_http_port`一致。例如都为`19559`。 -使用客户端工具连接Nebula Graph数据库,按如下操作导入SST文件: +使用客户端工具连接 Nebula Graph 数据库,按如下操作导入 SST 文件: 1. 执行命令选择之前创建的图空间。 @@ -482,7 +486,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --conf spark.sql.shuffle.partit nebula> USE basketballplayer; ``` -2. 执行命令下载SST文件: +2. 执行命令下载 SST 文件: ```ngql nebula> DOWNLOAD HDFS "hdfs://:/"; @@ -494,7 +498,7 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --conf spark.sql.shuffle.partit nebula> DOWNLOAD HDFS "hdfs://*.*.*.*:9000/sst"; ``` -2. 执行命令导入SST文件: +2. 执行命令导入 SST 文件: ```ngql nebula> INGEST; @@ -502,20 +506,20 @@ ${SPARK_HOME}/bin/spark-submit --master "local" --conf spark.sql.shuffle.partit !!! note - - 如果需要重新下载,请在Nebula Graph安装路径内的`data/storage/nebula`目录内,将对应Space ID目录内的`download`文件夹删除,然后重新下载SST文件。如果图空间是多副本,保存副本的所有机器都需要删除`download`文件夹。 + - 如果需要重新下载,请在 Nebula Graph 安装路径内的`data/storage/nebula`目录内,将对应 Space ID 目录内的`download`文件夹删除,然后重新下载 SST 文件。如果图空间是多副本,保存副本的所有机器都需要删除`download`文件夹。 - 如果导入时出现问题需要重新导入,重新执行`INGEST;`即可。 ### 步骤 6:(可选)验证数据 -用户可以在Nebula Graph客户端(例如Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: +用户可以在 Nebula Graph 客户端(例如 Nebula Graph Studio)中执行查询语句,确认数据是否已导入。例如: ```ngql GO FROM "player100" OVER follow; ``` -用户也可以使用命令[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)查看统计数据。 +用户也可以使用命令 [`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) 查看统计数据。 -### 步骤 7:(如有)在Nebula Graph中重建索引 +### 步骤 7:(如有)在 Nebula Graph 中重建索引 -导入数据后,用户可以在Nebula Graph中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 +导入数据后,用户可以在 Nebula Graph 中重新创建并重建索引。详情请参见[索引介绍](../../3.ngql-guide/14.native-index-statements/README.md)。 diff --git a/docs-2.0/nebula-explorer/about-explorer/ex-ug-what-is-explorer.md b/docs-2.0/nebula-explorer/about-explorer/ex-ug-what-is-explorer.md index 9578bdcb10d..630c2252f4d 100644 --- a/docs-2.0/nebula-explorer/about-explorer/ex-ug-what-is-explorer.md +++ b/docs-2.0/nebula-explorer/about-explorer/ex-ug-what-is-explorer.md @@ -1,4 +1,4 @@ -# 什么是Nebula Explorer +# 什么是 Nebula Explorer Nebula Explorer (简称 Explorer)是一款可以通过 Web 访问的图探索可视化工具,搭配 Nebula Graph 内核使用,用于与图数据进行可视化交互。即使没有图数据操作经验,用户也可以快速成为图专家。 diff --git a/docs-2.0/nebula-explorer/deploy-connect/ex-ug-connect.md b/docs-2.0/nebula-explorer/deploy-connect/ex-ug-connect.md index c3eb6af07ae..2a9366d9cb8 100644 --- a/docs-2.0/nebula-explorer/deploy-connect/ex-ug-connect.md +++ b/docs-2.0/nebula-explorer/deploy-connect/ex-ug-connect.md @@ -6,7 +6,7 @@ 在连接 Nebula Graph 数据库前,用户需要确认以下信息: -- 已经安装部署了 Explorer。详细信息参考 [部署 Explorer](../deploy-connect/ex-ug-connect.md)。 +- 已经安装部署了 Explorer。详细信息参考[部署 Explorer](../deploy-connect/ex-ug-connect.md)。 - Nebula Graph 的 Graph 服务本机 IP 地址以及服务所用端口。默认端口为 `9669`。 diff --git a/docs-2.0/nebula-explorer/deploy-connect/ex-ug-deploy.md b/docs-2.0/nebula-explorer/deploy-connect/ex-ug-deploy.md index d306daa0e1a..0d6e0bebe2b 100644 --- a/docs-2.0/nebula-explorer/deploy-connect/ex-ug-deploy.md +++ b/docs-2.0/nebula-explorer/deploy-connect/ex-ug-deploy.md @@ -19,7 +19,7 @@ 在部署 Explorer 之前,用户需要确认以下信息: -- Nebula Graph 服务已经部署并启动。详细信息参考[Nebula Graph安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 +- Nebula Graph 服务已经部署并启动。详细信息参考 [Nebula Graph 安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 - 以下端口未被使用。 @@ -29,10 +29,10 @@ !!! caution - Explorer 默认使用的端口号为7002,用户可以在安装目录下的 `conf/app.conf` 文件中修改 `httpport`,并重启服务。 + Explorer 默认使用的端口号为 7002,用户可以在安装目录下的 `conf/app.conf` 文件中修改 `httpport`,并重启服务。 - 使用的 Linux 发行版为 CentOS。 -- 安装有版本为1.13及以上的Go。 +- 安装有版本为 1.13 及以上的 Go。 ### 安装 @@ -40,9 +40,9 @@ !!! enterpriseonly - Explorer 仅在企业版提供,点击 [定价](https://nebula-graph.com.cn/pricing/) 查看更多。 + Explorer 仅在企业版提供,点击[定价](https://nebula-graph.com.cn/pricing/)查看更多。 -2. 使用`sudo rpm -i `命令安装RPM包。 +2. 使用`sudo rpm -i `命令安装 RPM 包。 例如,安装 Explorer 需要运行以下命令,默认安装路径为`/usr/local/nebula-explorer`: @@ -68,7 +68,7 @@ !!! enterpriseonly - License 仅在企业版提供,请发送邮件至inquiry@vesoft.com。 + License 仅在企业版提供,请发送邮件至 inquiry@vesoft.com。 4. 添加 License 后需要使用以下命令停止并重启服务。 @@ -79,7 +79,7 @@ ### 启停服务 -支持使用systemctl 服务控制项目启停。默认 rpm 安装后以 systemctl 启动,可使用以下命令: +支持使用 systemctl 服务控制项目启停。 ```bash $ systemctl status nebula-explorer #查看服务状态 $ systemctl stop nebula-explorer #停止服务 @@ -94,7 +94,7 @@ $ bash ./stop.sh #停止服务 ### 卸载 -使用以下的命令卸载 Explorer 。 +使用以下的命令卸载 Explorer。 ```bash $ sudo rpm -e nebula-explorer-.x86_64 @@ -105,19 +105,20 @@ $ sudo rpm -e nebula-explorer-.x86_64 在部署 Explorer 之前,用户需要确认以下信息: -- Nebula Graph 服务已经部署并启动。详细信息参考[Nebula Graph安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 +- Nebula Graph 服务已经部署并启动。详细信息参考 [Nebula Graph 安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 - 以下端口未被使用。 + | 端口号 | 说明 | - | ---- | ---- | + | :---- | :---- | | 7002 | Explorer 提供的 web 服务 | !!! caution - Explorer 默认使用的端口号为7002,用户可以在安装目录下的 `conf/app.conf` 文件中修改 `httpport`,并重启服务。 + Explorer 默认使用的端口号为 7002,用户可以在安装目录下的 `conf/app.conf` 文件中修改 `httpport`,并重启服务。 - 使用的 Linux 发行版为 CentOS。 -- 安装有版本为1.13及以上的Go。 +- 安装有版本为 1.13 及以上的 Go。 ### 安装及部署 @@ -125,7 +126,7 @@ $ sudo rpm -e nebula-explorer-.x86_64 !!! enterpriseonly - Explorer 仅在企业版提供,点击 [定价](https://nebula-graph.com.cn/pricing/) 查看更多。 + Explorer 仅在企业版提供,点击[定价](https://nebula-graph.com.cn/pricing/)查看更多。 2. 使用 `tar -xvf` 解压 tar 包。 @@ -146,9 +147,9 @@ $ sudo rpm -e nebula-explorer-.x86_64 !!! enterpriseonly - License 仅在企业版提供,请发送邮件至inquiry@vesoft.com。 + License 仅在企业版提供,请发送邮件至 inquiry@vesoft.com。 -4. 进入`nebula-explorer`文件夹,启动explorer。 +4. 进入`nebula-explorer`文件夹,启动 explorer。 ```bash $ cd nebula-explorer diff --git a/docs-2.0/nebula-explorer/operation-guide/ex-ug-canvas.md b/docs-2.0/nebula-explorer/operation-guide/ex-ug-canvas.md index fb3eb871a1e..c52ca7dc770 100644 --- a/docs-2.0/nebula-explorer/operation-guide/ex-ug-canvas.md +++ b/docs-2.0/nebula-explorer/operation-guide/ex-ug-canvas.md @@ -14,12 +14,12 @@ Explorer 支持批量选中多个点边,并查看选中点边的数据,详 ### 框选操作 -点击![frameselect](../figs/nav-frameSelect.png) 图标后,按住左键拖拽并框选多个点和边。示例如下: +点击 ![frameselect](../figs/nav-frameSelect.png) 图标后,按住左键拖拽并框选多个点和边。示例如下: ![select](../figs/ex-ug-023.png) ### 点击选择多个节边 -点击![singleselect](../figs/nav-singleSelect.png) 图标或按住 Shift 后,用鼠标单击并选中多个点和边,单击空白处取消选择。示例如下: +点击 ![singleselect](../figs/nav-singleSelect.png) 图标或按住 Shift 后,用鼠标单击并选中多个点和边,单击空白处取消选择。示例如下: ![select](../figs/ex-ug-025.png) ## 快速操作 diff --git a/docs-2.0/nebula-explorer/operation-guide/ex-ug-page-overview.md b/docs-2.0/nebula-explorer/operation-guide/ex-ug-page-overview.md index a2241968fb1..75c386cb6bc 100644 --- a/docs-2.0/nebula-explorer/operation-guide/ex-ug-page-overview.md +++ b/docs-2.0/nebula-explorer/operation-guide/ex-ug-page-overview.md @@ -5,6 +5,7 @@ ## 概览 ![Explorer](../figs/explorer.png) + Explorer 的主页面分为五个部分: - 标签栏 @@ -17,7 +18,7 @@ Explorer 的主页面分为五个部分: - 导出图形:支持导出当前视图的 CSV 文件或 PNG(图片)文件。 -- 新增画布:支持创建多个画布,最多仅能打开10个画布。 +- 新增画布:支持创建多个画布,最多仅能打开 10 个画布。 ## 侧边栏 @@ -35,49 +36,49 @@ Explorer 的主页面分为五个部分: ### 查询探索 -- 开始:单击 ![query](../figs/nav-query.png)图标,通过VID、Tag和子图,查询数据并显示到页面上。 +- 开始:单击 ![query](../figs/nav-query.png) 图标,通过 VID、Tag 和子图,查询数据并显示到页面上。 ### 画布操作 -- 框选模式:单击![frameSelect](../figs/nav-frameSelect.png) 图标,支持框选画布中的点和边。 -- 选中多条点边:单击![singleSelect](../figs/nav-singleSelect.png) 图标,可以方便的点击画布中的点和边,单击空白处取消选择。 -- 拖动画布:单击![moveCanvas](../figs/nav-moveCanvas.png) 图标,支持拖动画布的位置。 -- 节点过滤:单击![filter](../figs/nav-filter.png)图标,支持对画布中显示的点进行过滤。 +- 框选模式:单击 ![frameSelect](../figs/nav-frameSelect.png) 图标,支持框选画布中的点和边。 +- 选中多条点边:单击 ![singleSelect](../figs/nav-singleSelect.png) 图标,可以方便的点击画布中的点和边,单击空白处取消选择。 +- 拖动画布:单击 ![moveCanvas](../figs/nav-moveCanvas.png) 图标,支持拖动画布的位置。 +- 节点过滤:单击 ![filter](../figs/nav-filter.png) 图标,支持对画布中显示的点进行过滤。 -更多详细信息参考 [画布操作](../operation-guide/ex-ug-canvas.md)。 +更多详细信息参考[画布操作](../operation-guide/ex-ug-canvas.md)。 ### 图探索扩展 -- 拓展:单击 ![expand](../figs/rightclickmenu-expand.png)图标,选择页面上的节点并进行自定义拓展,包括拓展方向、拓展步数、过滤条件等。 -- 共同邻居:单击 ![commonNeighbor](../figs/rightclickmenu-commonNeighbor.png)图标,选择页面上至少两个点并查看它们的共同邻居。 -- 路径查询:单击 ![findPath](../figs/rightclickmenu-findPath.png)图标,可以查询起点到终点之间的 `all paths` 、 `Shortest path` 或者是 `Noloop path` 的路径。 -- 查看属性:单击 ![propertyView](../figs/nav-propertyView.png)图标,选择是否显画布中的点或边的属性值。 +- 拓展:单击 ![expand](../figs/rightclickmenu-expand.png) 图标,选择页面上的节点并进行自定义拓展,包括拓展方向、拓展步数、过滤条件等。 +- 共同邻居:单击 ![commonNeighbor](../figs/rightclickmenu-commonNeighbor.png) 图标,选择页面上至少两个点并查看它们的共同邻居。 +- 路径查询:单击 ![findPath](../figs/rightclickmenu-findPath.png) 图标,可以查询起点到终点之间的 `all paths` 、 `Shortest path` 或者是 `Noloop path` 的路径。 +- 查看属性:单击 ![propertyView](../figs/nav-propertyView.png) 图标,选择是否显画布中的点或边的属性值。 -更多详细信息参考 [图探索拓展](../operation-guide/ex-ug-graph-exploration.md)。 +更多详细信息参考[图探索拓展](../operation-guide/ex-ug-graph-exploration.md)。 ### 删除及撤销 -- 隐藏:单击![miss](../figs/nav-miss.png) 图标,可以隐藏画布中选中的点边。 -- 隐藏其他:单击![missreverse](../figs/nav-missReverse.png) 图标,可以隐藏画布中未选择的所有点边。 -- 撤销:单击 ![Revoke](../figs/nav-Revoke.png)图标,撤销上一步新增或隐藏的操作。 +- 隐藏:单击 ![miss](../figs/nav-miss.png) 图标,可以隐藏画布中选中的点边。 +- 隐藏其他:单击 ![missreverse](../figs/nav-missReverse.png) 图标,可以隐藏画布中未选择的所有点边。 +- 撤销:单击 ![Revoke](../figs/nav-Revoke.png) 图标,撤销上一步新增或隐藏的操作。 ### 设置及帮助 -- 选择图空间:单击 ![graphSpace](../figs/nav-graphSpace.png)图标,切换当前图空间。 -- 帮助:单击 ![help](../figs/nav-help.png)图标,查看更多信息。 -- 设置:单击 ![setup](../figs/nav-setup.png)图标,可以查看用户名和快捷键、修改语言设置、清除 Explorer 链接等。 +- 选择图空间:单击 ![graphSpace](../figs/nav-graphSpace.png) 图标,切换当前图空间。 +- 帮助:单击 ![help](../figs/nav-help.png) 图标,查看更多信息。 +- 设置:单击 ![setup](../figs/nav-setup.png) 图标,可以查看用户名和快捷键、修改语言设置、清除 Explorer 链接等。 ## 画布 画布主要分为: -- 图:显示通过VID、Tag或子图查询的数据。 +- 图:显示通过 VID、Tag 或子图查询的数据。 - 点边概览:默认隐藏,在当前画布选中点和边时才显示。点击如图标识,用户可以打开菜单,查看当前子图中选中的点和边的详细数据。 ![review](../figs/ex-ug-027-1.png) -更多详细操作参考 [画布操作](../operation-guide/ex-ug-canvas.md)。 +更多详细操作参考[画布操作](../operation-guide/ex-ug-canvas.md)。 ## 缩略图 @@ -91,4 +92,4 @@ Explorer 的主页面分为五个部分: ## 关系列表 -点击右侧的 ![unfold](../figs/sidebar-unfold.png)图标,用户可以打开菜单,查看画布中 Tag 和 Edge 的数量、搜索 Tag 和 Edge ,同时也支持修改点的颜色和图标。 +点击右侧的 ![unfold](../figs/sidebar-unfold.png) 图标,用户可以打开菜单,查看画布中 Tag 和 Edge 的数量、搜索 Tag 和 Edge ,同时也支持修改点的颜色和图标。 diff --git a/docs-2.0/nebula-explorer/operation-guide/ex-ug-query-exploration.md b/docs-2.0/nebula-explorer/operation-guide/ex-ug-query-exploration.md index e909b089798..e133f837c73 100644 --- a/docs-2.0/nebula-explorer/operation-guide/ex-ug-query-exploration.md +++ b/docs-2.0/nebula-explorer/operation-guide/ex-ug-query-exploration.md @@ -8,7 +8,7 @@ ## VID 查询 -用户可以通过输入VID或者生成VID的数据查询,一行仅支持一个数据。同时也支持随机导入数据和文件导入数据。确认添加后,数据会显示在画布中。以下给出示例: +用户可以通过输入 VID 或者生成 VID 的数据查询,一行仅支持一个数据。同时也支持随机导入数据和文件导入数据。确认添加后,数据会显示在画布中。以下给出示例: ![VID](../figs/ex-ug-009-2.png) diff --git a/docs-2.0/nebula-flink-connector.md b/docs-2.0/nebula-flink-connector.md index 1a8111d5492..718ba4dc0cc 100644 --- a/docs-2.0/nebula-flink-connector.md +++ b/docs-2.0/nebula-flink-connector.md @@ -1,15 +1,19 @@ # Nebula Flink Connector -Nebula Flink Connector是一款帮助Flink用户快速访问Nebula Graph的连接器,支持从Nebula Graph图数据库中读取数据,或者将其他外部数据源读取的数据写入Nebula Graph图数据库。 +Nebula Flink Connector 是一款帮助 Flink 用户快速访问 Nebula Graph 的连接器,支持从 Nebula Graph 图数据库中读取数据,或者将其他外部数据源读取的数据写入 Nebula Graph 图数据库。 -更多使用说明请参见[Nebula Flink Connector](https://github.com/vesoft-inc/nebula-flink-connector)。 +更多使用说明请参见 [Nebula Flink Connector](https://github.com/vesoft-inc/nebula-flink-connector)。 ## 适用场景 -Nebula Flink Connector适用于以下场景: +Nebula Flink Connector 适用于以下场景: -- 在不同的Nebula Graph集群之间迁移数据。 +- 在不同的 Nebula Graph 集群之间迁移数据。 -- 在同一个Nebula Graph集群内不同图空间之间迁移数据。 +- 在同一个 Nebula Graph 集群内不同图空间之间迁移数据。 -- Nebula Graph与其他数据源之间迁移数据。 \ No newline at end of file +- Nebula Graph 与其他数据源之间迁移数据。 + +## 更新说明 + +[Release](https://github.com/vesoft-inc/nebula-flink-connector/releases/tag/{{flinkconnector.tag}}) diff --git a/docs-2.0/nebula-flink/nf-ug-customize-sink.md b/docs-2.0/nebula-flink/nf-ug-customize-sink.md index 090331aa246..a4718b8a7e1 100644 --- a/docs-2.0/nebula-flink/nf-ug-customize-sink.md +++ b/docs-2.0/nebula-flink/nf-ug-customize-sink.md @@ -162,14 +162,14 @@ Flink 将处理完成的数据 sink 到 Nebula Graph 数据库时,需要将 Fl - Nebula Graph 图数据库的账号及其密码。 - `VertexExecutionOptions` 需要配置: - 需要写入点数据的 Nebula Graph 图数据库中的图空间名称。 - - 需要写入的Tag(点类型)名称。 - - 需要写入的Tag属性。 + - 需要写入的 Tag(点类型)名称。 + - 需要写入的 Tag 属性。 - 需要写入的点 VID 所在 Flink 数据流 Row 中的索引。 - 单次写入 Nebula Graph 的数据量限值,默认为 2000。 - `EdgeExecutionOptions` 需要配置: - 需要写入边数据的 Nebula Graph 图数据库中的图空间名称。 - - 需要写入的Edge type。 - - 需要写入的Edge type属性。 + - 需要写入的 Edge type。 + - 需要写入的 Edge type 属性。 - 需要写入的边起点 VID(src_Id)所在 Flink 数据流 Row 中的索引。 - 需要写入的边终点 VID(dst_Id)所在 Flink 数据流 Row 中的索引。 - 需要写入的边 rank 所在 Flink 数据流 Row 中的索引。如果不配置,则写入边数据时不带 rank 信息。 @@ -180,7 +180,7 @@ Flink 将处理完成的数据 sink 到 Nebula Graph 数据库时,需要将 Fl - Graph 服务为本地单副本部署,使用默认端口 - 图空间名称:`flinkSink` - Tag:`player` -- Tag属性:`name` 和 `age` +- Tag 属性:`name` 和 `age` 以下为自定义 NebulaSink 的代码示例。 @@ -192,7 +192,6 @@ NebulaClientOptions nebulaClientOptions = new NebulaClientOptions .build(); NebulaConnectionProvider graphConnectionProvider = new NebulaGraphConnectionProvider(nebulaClientOptions); - // 构造 Nebula Graph 写入点数据的操作参数 List cols = Arrays.asList("name", "age") ExecutionOptions sinkExecutionOptions = new VertexExecutionOptions.ExecutionOptionBuilder() diff --git a/docs-2.0/nebula-flink/nf-ug-customize-source.md b/docs-2.0/nebula-flink/nf-ug-customize-source.md index 94cf7afae54..deba3f0c5e2 100644 --- a/docs-2.0/nebula-flink/nf-ug-customize-source.md +++ b/docs-2.0/nebula-flink/nf-ug-customize-source.md @@ -24,7 +24,7 @@ NebulaSource 的实现类图如下所示。 - `open`:开始 `inputFormat` 的数据读取,将读取的数据转换为 Flink 的数据格式,构造迭代器。 - `close`:在数据读取完成后打印读取日志。 - `reachedEnd`:判断是否读取完成。 -- `nextRecord`:通过迭代器获取下一条数据. +- `nextRecord`:通过迭代器获取下一条数据。 ## 应用实践 @@ -40,15 +40,15 @@ NebulaSource 的实现类图如下所示。 - Nebula Graph 图数据库的账号及其密码。 - `VertexExecutionOptions` 需要配置: - 需要读取点数据的 Nebula Graph 图数据库中的图空间名称。 - - 需要读取的Tag(点类型)名称。一次只能一个Tag。 - - 要读取的Tag属性。 - - 是否读取指定Tag的所有属性,默认为 `false`。如果配置为 `true` 则Tag属性的配置无效。 + - 需要读取的 Tag(点类型)名称。一次只能一个 Tag。 + - 要读取的 Tag 属性。 + - 是否读取指定 Tag 的所有属性,默认为 `false`。如果配置为 `true` 则 Tag 属性的配置无效。 - 单次读取的数据量限值,默认为 2000 个点数据。 - `EdgeExecutionOptions` 需要配置: - 需要读取边数据的 Nebula Graph 图数据库中的图空间名称。 - - 需要读取的Edge type。一次只能一个Edge type。 - - 需要读取的Edge type属性。 - - 是否读取指定Edge type的所有属性,默认为 `false`。如果配置为 `true` 则Edge type属性的配置无效。 + - 需要读取的 Edge type。一次只能一个 Edge type。 + - 需要读取的 Edge type 属性。 + - 是否读取指定 Edge type 的所有属性,默认为 `false`。如果配置为 `true` 则 Edge type 属性的配置无效。 - 单次读取的数据量限值,默认值为 2000 个边数据。 假设需要读取点数据的 Nebula Graph 图数据库信息如下: @@ -56,7 +56,7 @@ NebulaSource 的实现类图如下所示。 - Meta 服务为本地单副本部署,使用默认端口 - 图空间名称:`flinkSource` - Tag:`player` -- Tag属性:`name` 和 `age` +- Tag 属性:`name` 和 `age` - 单次最多读取 100 个点数据 以下为自定义 NebulaSource 的代码示例。 diff --git a/docs-2.0/nebula-importer/config-with-header.md b/docs-2.0/nebula-importer/config-with-header.md index b9450ea1015..633375b52f0 100644 --- a/docs-2.0/nebula-importer/config-with-header.md +++ b/docs-2.0/nebula-importer/config-with-header.md @@ -1,14 +1,14 @@ # 有表头配置说明 -对于有表头(header)的CSV文件,需要在配置文件里设置`withHeader`为`true`,表示CSV文件中第一行为表头,表头内容具有特殊含义。 +对于有表头(header)的 CSV 文件,需要在配置文件里设置`withHeader`为`true`,表示 CSV 文件中第一行为表头,表头内容具有特殊含义。 !!! caution - 如果CSV文件中含有header,Importer就会按照header来解析每行数据的Schema,并忽略yaml文件中的点或边设置。 + 如果 CSV 文件中含有 header,Importer 就会按照 header 来解析每行数据的 Schema,并忽略 yaml 文件中的点或边设置。 ## 示例文件 -有表头的CSV文件示例如下: +有表头的 CSV 文件示例如下: - 点示例 @@ -21,7 +21,7 @@ student102,Jane,17,female ``` - 第一列为点ID,后面三列为属性`name`、`age`和`gender`。 + 第一列为点 ID,后面三列为属性`name`、`age`和`gender`。 - 边示例 @@ -35,19 +35,19 @@ student100,student102,1,96.2 ``` - 前两列的数据分别为起始点ID和目的点ID,第三列为rank,第四列为属性`degree`。 + 前两列的数据分别为起始点 ID 和目的点 ID,第三列为 rank,第四列为属性`degree`。 ## 表头格式说明 -表头通过一些关键词定义起始点、目的点、rank以及一些特殊功能,说明如下: +表头通过一些关键词定义起始点、目的点、rank 以及一些特殊功能,说明如下: -- `:VID`(必填):点ID。需要用`:VID(type)`形式设置数据类型,例如`:VID(string)`或`:VID(int)`。 +- `:VID`(必填):点 ID。需要用`:VID(type)`形式设置数据类型,例如`:VID(string)`或`:VID(int)`。 -- `:SRC_VID`(必填):边的起始点ID。需要用`:SRC_VID(type)`形式设置数据类型。 +- `:SRC_VID`(必填):边的起始点 ID。需要用`:SRC_VID(type)`形式设置数据类型。 -- `:DST_VID`(必填):边的目的点ID。需要用`:DST_VID(type)`形式设置数据类型。 +- `:DST_VID`(必填):边的目的点 ID。需要用`:DST_VID(type)`形式设置数据类型。 -- `:RANK`(可选):边的rank值。 +- `:RANK`(可选):边的 rank 值。 - `:IGNORE`(可选):插入数据时忽略这一列。 @@ -60,11 +60,11 @@ ``` !!! note - 除了`:LABEL`列之外的所有列都可以按任何顺序排序,因此针对较大的CSV文件,用户可以灵活地设置header来选择需要的列。 + 除了`:LABEL`列之外的所有列都可以按任何顺序排序,因此针对较大的 CSV 文件,用户可以灵活地设置 header 来选择需要的列。 -对于Tag或Edge type的属性,格式为`.:`,说明如下: +对于 Tag 或 Edge type 的属性,格式为`.:`,说明如下: -- ``:Tag或者Edge type的名称。 +- ``:Tag 或者 Edge type 的名称。 - ``:属性名称。 @@ -72,12 +72,10 @@ 例如`student.name:string`、`follow.degree:double`。 - - ## 配置示例 ```yaml -# 连接的Nebula Graph版本,连接2.x时设置为v2。 +# 连接的 Nebula Graph 版本,连接 2.x 时设置为 v2。 version: v2 description: example @@ -87,16 +85,16 @@ removeTempFiles: false clientSettings: - # nGQL语句执行失败的重试次数。 + # nGQL 语句执行失败的重试次数。 retry: 3 - # Nebula Graph客户端并发数。 + # Nebula Graph 客户端并发数。 concurrency: 10 - # 每个Nebula Graph客户端的缓存队列大小。 + # 每个 Nebula Graph 客户端的缓存队列大小。 channelBufferSize: 128 - # 指定数据要导入的Nebula Graph图空间。 + # 指定数据要导入的 Nebula Graph 图空间。 space: student # 连接信息。 @@ -106,7 +104,7 @@ clientSettings: address: 192.168.11.13:9669 postStart: - # 配置连接Nebula Graph服务器之后,在插入数据之前执行的一些操作。 + # 配置连接 Nebula Graph 服务器之后,在插入数据之前执行的一些操作。 commands: | DROP SPACE IF EXISTS student; CREATE SPACE IF NOT EXISTS student(partition_num=5, replica_factor=1, vid_type=FIXED_STRING(20)); @@ -118,13 +116,13 @@ clientSettings: afterPeriod: 15s preStop: - # 配置断开Nebula Graph服务器连接之前执行的一些操作。 + # 配置断开 Nebula Graph 服务器连接之前执行的一些操作。 commands: | # 错误等日志信息输出的文件路径。 logPath: ./err/test.log -# CSV文件相关设置。 +# CSV 文件相关设置。 files: # 数据文件的存放路径,如果使用相对路径,则会将路径和当前配置文件的目录拼接。本示例第一个数据文件为点的数据。 @@ -139,24 +137,24 @@ files: # 读取数据的行数限制。 limit: 10 - # 是否按顺序在文件中插入数据行。如果为false,可以避免数据倾斜导致的导入速率降低。 + # 是否按顺序在文件中插入数据行。如果为 false,可以避免数据倾斜导致的导入速率降低。 inOrder: true - # 文件类型,当前仅支持csv。 + # 文件类型,当前仅支持 csv。 type: csv csv: # 是否有表头。 withHeader: true - # 是否有LABEL。 + # 是否有 LABEL。 withLabel: false - # 指定csv文件的分隔符。只支持一个字符的字符串分隔符。 + # 指定 csv 文件的分隔符。只支持一个字符的字符串分隔符。 delimiter: "," schema: - # Schema的类型,可选值为vertex和edge。 + # Schema 的类型,可选值为 vertex 和 edge。 type: vertex # 本示例第二个数据文件为边的数据。 @@ -170,16 +168,16 @@ files: withHeader: true withLabel: false schema: - # Schema的类型为edge。 + # Schema 的类型为 edge。 type: edge edge: - # Edge type名称。 + # Edge type 名称。 name: follow - # 是否包含rank。 + # 是否包含 rank。 withRanking: true ``` !!! Note - 点ID的数据类型需要和`clientSettings.postStart.commands`中的创建图空间语句的数据类型一致。 \ No newline at end of file + 点 ID 的数据类型需要和`clientSettings.postStart.commands`中的创建图空间语句的数据类型一致。 \ No newline at end of file diff --git a/docs-2.0/nebula-importer/config-without-header.md b/docs-2.0/nebula-importer/config-without-header.md index 67949c7a627..c95d33ca02b 100644 --- a/docs-2.0/nebula-importer/config-without-header.md +++ b/docs-2.0/nebula-importer/config-without-header.md @@ -1,10 +1,10 @@ # 无表头配置说明 -对于无表头(header)的CSV文件,需要在配置文件里设置`withHeader`为`false`,表示CSV文件中只含有数据(不含第一行表头),同时可能还需要设置数据类型、对应的列等。 +对于无表头(header)的 CSV 文件,需要在配置文件里设置`withHeader`为`false`,表示 CSV 文件中只含有数据(不含第一行表头),同时可能还需要设置数据类型、对应的列等。 ## 示例文件 -无表头的CSV文件示例如下: +无表头的 CSV 文件示例如下: - 点示例 @@ -16,7 +16,7 @@ student102,Jane,17,female ``` - 第一列为点ID,后面三列为属性`name`、`age`和`gender`。 + 第一列为点 ID,后面三列为属性`name`、`age`和`gender`。 - 边示例 @@ -29,12 +29,12 @@ student100,student102,1,96.2 ``` - 前两列的数据分别为起始点ID和目的点ID,第三列为rank,第四列为属性`degree`。 + 前两列的数据分别为起始点 ID 和目的点 ID,第三列为 rank,第四列为属性`degree`。 ## 配置示例 ```yaml -# 连接的Nebula Graph版本,连接2.x时设置为v2。 +# 连接的 Nebula Graph 版本,连接 2.x 时设置为 v2。 version: v2 description: example @@ -44,16 +44,16 @@ removeTempFiles: false clientSettings: - # nGQL语句执行失败的重试次数。 + # nGQL 语句执行失败的重试次数。 retry: 3 - # Nebula Graph客户端并发数。 + # Nebula Graph 客户端并发数。 concurrency: 10 - # 每个Nebula Graph客户端的缓存队列大小。 + # 每个 Nebula Graph 客户端的缓存队列大小。 channelBufferSize: 128 - # 指定数据要导入的Nebula Graph图空间。 + # 指定数据要导入的 Nebula Graph 图空间。 space: student # 连接信息。 @@ -63,7 +63,7 @@ clientSettings: address: 192.168.11.13:9669 postStart: - # 配置连接Nebula Graph服务器之后,在插入数据之前执行的一些操作。 + # 配置连接 Nebula Graph 服务器之后,在插入数据之前执行的一些操作。 commands: | DROP SPACE IF EXISTS student; CREATE SPACE IF NOT EXISTS student(partition_num=5, replica_factor=1, vid_type=FIXED_STRING(20)); @@ -75,13 +75,13 @@ clientSettings: afterPeriod: 15s preStop: - # 配置断开Nebula Graph服务器连接之前执行的一些操作。 + # 配置断开 Nebula Graph 服务器连接之前执行的一些操作。 commands: | # 错误等日志信息输出的文件路径。 logPath: ./err/test.log -# CSV文件相关设置。 +# CSV 文件相关设置。 files: # 数据文件的存放路径,如果使用相对路径,则会将路径和当前配置文件的目录拼接。本示例第一个数据文件为点的数据。 @@ -96,42 +96,42 @@ files: # 读取数据的行数限制。 limit: 10 - # 是否按顺序在文件中插入数据行。如果为false,可以避免数据倾斜导致的导入速率降低。 + # 是否按顺序在文件中插入数据行。如果为 false,可以避免数据倾斜导致的导入速率降低。 inOrder: true - # 文件类型,当前仅支持csv。 + # 文件类型,当前仅支持 csv。 type: csv csv: # 是否有表头。 withHeader: false - # 是否有LABEL。 + # 是否有 LABEL。 withLabel: false - # 指定csv文件的分隔符。只支持一个字符的字符串分隔符。 + # 指定 csv 文件的分隔符。只支持一个字符的字符串分隔符。 delimiter: "," schema: - # Schema的类型,可选值为vertex和edge。 + # Schema 的类型,可选值为 vertex 和 edge。 type: vertex vertex: - # 点ID设置。 + # 点 ID 设置。 vid: - # 点ID对应CSV文件中列的序号。CSV文件中列的序号从0开始。 + # 点 ID 对应 CSV 文件中列的序号。CSV 文件中列的序号从 0 开始。 index: 0 - # 点ID的数据类型,可选值为int和string,分别对应Nebula Graph中的INT64和FIXED_STRING。 + # 点 ID 的数据类型,可选值为 int 和 string,分别对应 Nebula Graph 中的 INT64 和 FIXED_STRING。 type: string - # Tag设置。 + # Tag 设置。 tags: - # Tag名称。 + # Tag 名称。 - name: student - # Tag内的属性设置。 + # Tag 内的属性设置。 props: # 属性名称。 - name: name @@ -139,7 +139,7 @@ files: # 属性数据类型。 type: string - # 属性对应CSV文件中列的序号。 + # 属性对应 CSV 文件中列的序号。 index: 1 - name: age @@ -160,34 +160,34 @@ files: withHeader: false withLabel: false schema: - # Schema的类型为edge。 + # Schema 的类型为 edge。 type: edge edge: - # Edge type名称。 + # Edge type 名称。 name: follow - # 是否包含rank。 + # 是否包含 rank。 withRanking: true - # 起始点ID设置。 + # 起始点 ID 设置。 srcVID: # 数据类型。 type: string - # 起始点ID对应CSV文件中列的序号。 + # 起始点 ID 对应 CSV 文件中列的序号。 index: 0 - # 目的点ID设置。 + # 目的点 ID 设置。 dstVID: type: string index: 1 - # rank设置。 + # rank 设置。 rank: - # rank值对应CSV文件中列的序号。如果没有设置index,请务必在第三列设置rank的值。之后的列依次设置各属性。 + # rank 值对应 CSV 文件中列的序号。如果没有设置 index,请务必在第三列设置 rank 的值。之后的列依次设置各属性。 index: 2 - # Edge type内的属性设置。 + # Edge type 内的属性设置。 props: # 属性名称。 - name: degree @@ -195,18 +195,18 @@ files: # 属性数据类型。 type: double - # 属性对应CSV文件中列的序号。 + # 属性对应 CSV 文件中列的序号。 index: 3 ``` !!! Note - - CSV文件中列的序号从0开始,即第一列的序号为0,第二列的序号为1。 + - CSV 文件中列的序号从 0 开始,即第一列的序号为 0,第二列的序号为 1。 - - 点ID的数据类型需要和`clientSettings.postStart.commands`中的创建图空间语句的数据类型一致。 + - 点 ID 的数据类型需要和`clientSettings.postStart.commands`中的创建图空间语句的数据类型一致。 - - 如果没有设置index字段指定列的序号,CSV文件必须遵守如下规则: + - 如果没有设置 index 字段指定列的序号,CSV 文件必须遵守如下规则: - + 在点数据文件中,第一列必须为点ID,后面的列为属性,且需要和配置文件内的顺序一一对应。 + + 在点数据文件中,第一列必须为点 ID,后面的列为属性,且需要和配置文件内的顺序一一对应。 - + 在边数据文件中,第一列必须为起始点ID,第二列必须为目的点ID,如果`withRanking`为`true`,第三列必须为rank值,后面的列为属性,且需要和配置文件内的顺序一一对应。 + + 在边数据文件中,第一列必须为起始点 ID,第二列必须为目的点 ID,如果`withRanking`为`true`,第三列必须为 rank 值,后面的列为属性,且需要和配置文件内的顺序一一对应。 diff --git a/docs-2.0/nebula-importer/use-importer.md b/docs-2.0/nebula-importer/use-importer.md index b081c1c59e6..d8118baaae1 100644 --- a/docs-2.0/nebula-importer/use-importer.md +++ b/docs-2.0/nebula-importer/use-importer.md @@ -1,36 +1,50 @@ # Nebula Importer -Nebula Importer(简称Importer)是一款[Nebula Graph](https://github.com/vesoft-inc/nebula)的CSV文件单机导入工具。Importer可以读取本地的CSV文件,然后导入数据至Nebula Graph图数据库中。 +Nebula Importer(简称 Importer)是一款 [Nebula Graph](https://github.com/vesoft-inc/nebula) 的 CSV 文件单机导入工具。Importer 可以读取本地的 CSV 文件,然后导入数据至 Nebula Graph 图数据库中。 ## 适用场景 -Importer适用于将本地CSV文件的内容导入至Nebula Graph中。 +Importer 适用于将本地 CSV 文件的内容导入至 Nebula Graph 中。 ## 优势 - 轻量快捷:不需要复杂环境即可使用,快速导入数据。 -- 灵活筛选:通过配置文件可以实现对CSV文件数据的灵活筛选。 +- 灵活筛选:通过配置文件可以实现对 CSV 文件数据的灵活筛选。 + +## 更新说明 + +[Release](https://github.com/vesoft-inc/nebula-importer/releases/tag/{{importer.branch}}) ## 前提条件 -在使用Nebula Importer之前,请确保: +在使用 Nebula Importer 之前,请确保: -- 已部署Nebula Graph服务。目前有三种部署方式: +- 已部署 Nebula Graph 服务。目前有三种部署方式: - - [Docker Compose部署](../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md) + - [Docker Compose 部署](../4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md) - - [RPM/DEB包安装](../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) + - [RPM/DEB 包安装](../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) - [源码编译安装](../4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md) -- Nebula Graph中已创建Schema,包括图空间、Tag和Edge type,或者通过参数`clientSettings.postStart.commands`设置。 +- Nebula Graph 中已创建 Schema,包括图空间、Tag 和 Edge type,或者通过参数`clientSettings.postStart.commands`设置。 -- 运行Importer的机器已部署Golang环境。详情请参见[Golang 环境搭建](https://github.com/vesoft-inc/nebula-importer/blob/release-v2.0.0-ga/docs/golang-install.md)。 +- 运行 Importer 的机器已部署 Golang 环境。详情请参见 [Golang 环境搭建](https://github.com/vesoft-inc/nebula-importer/blob/release-v2.0.0-ga/docs/golang-install.md)。 ## 操作步骤 -配置yaml文件并准备好待导入的CSV文件,即可使用本工具向Nebula Graph批量写入数据。 +配置 yaml 文件并准备好待导入的 CSV 文件,即可使用本工具向 Nebula Graph 批量写入数据。 + +### 下载二进制包运行 + +1. 在[Release](https://github.com/vesoft-inc/nebula-importer/releases/tag/{{importer.branch}})页面下载二进制包,并添加执行权限。 + +2. 启动服务。 + + ```bash + $ ./ --config + ``` ### 源码编译运行 @@ -43,10 +57,10 @@ Importer适用于将本地CSV文件的内容导入至Nebula Graph中。 !!! note 请使用正确的分支。 - Nebula Graph 1.x和2.x的rpc协议不同,因此: + Nebula Graph 1.x 和 2.x 的 rpc 协议不同,因此: - - Nebula Importer v1分支只能连接Nebula Graph 1.x。 - - Nebula Importer master分支和v2分支可以连接Nebula Graph 2.x。 + - Nebula Importer v1 分支只能连接 Nebula Graph 1.x。 + - Nebula Importer master 分支和 v2 分支可以连接 Nebula Graph 2.x。 2. 进入目录`nebula-importer`。 @@ -67,7 +81,8 @@ Importer适用于将本地CSV文件的内容导入至Nebula Graph中。 ``` !!! note - yaml配置文件说明请参见[配置文件](#_7)。 + + yaml 配置文件说明请参见下文的配置文件说明。 ### 无网络编译方式 @@ -97,9 +112,9 @@ Importer适用于将本地CSV文件的内容导入至Nebula Graph中。 $ go build -mod vendor cmd/importer.go ``` -### Docker方式运行 +### Docker 方式运行 -使用Docker可以不必在本地安装Go语言环境,只需要拉取Nebula Importer的[镜像](https://hub.docker.com/r/vesoft/nebula-importer),并将本地配置文件和CSV数据文件挂载到容器中。命令如下: +使用 Docker 可以不必在本地安装 Go 语言环境,只需要拉取 Nebula Importer 的[镜像](https://hub.docker.com/r/vesoft/nebula-importer),并将本地配置文件和 CSV 数据文件挂载到容器中。命令如下: ```bash $ docker run --rm -ti \ @@ -110,18 +125,20 @@ $ docker run --rm -ti \ --config ``` -- ``:本地yaml配置文件的绝对路径。 -- ``:本地CSV数据文件的绝对路径。 -- ``:Nebula Graph 2.x请填写`v2`。 +- ``:本地 yaml 配置文件的绝对路径。 +- ``:本地 CSV 数据文件的绝对路径。 +- ``:Nebula Graph 2.x 请填写`v2`。 !!! note - 建议使用相对路径。如果使用本地绝对路径,请检查路径映射到Docker中的路径。 + 建议使用相对路径。如果使用本地绝对路径,请检查路径映射到 Docker 中的路径。 +## 配置文件说明 +Nebula Importer 通过`nebula-importer/examples/v2/example.yaml`配置文件来描述待导入文件信息、Nebula Graph 服务器信息等。用户可以参考示例配置文件:[无表头配置](config-without-header.md)/[有表头配置](config-with-header.md)。下文将分类介绍配置文件内的字段。 -## 配置文件说明 +!!! note -Nebula Importer通过`nebula-importer/examples/v2/example.yaml`配置文件来描述待导入文件信息、Nebula Graph服务器信息等。用户可以参考示例配置文件:[无表头配置](config-without-header.md)/[有表头配置](config-with-header.md)。下文将分类介绍配置文件内的字段。 + 如果用户下载的是二进制包,请手动创建配置文件。 ### 基本配置 @@ -135,13 +152,13 @@ removeTempFiles: false |参数|默认值|是否必须|说明| |:---|:---|:---|:---| -|`version`|v2|是|目标Nebula Graph的版本。| +|`version`|v2|是|目标 Nebula Graph 的版本。| |`description`|example|否|配置文件的描述。| |`removeTempFiles`|false|否|是否删除临时生成的日志和错误数据文件。| ### 客户端配置 -客户端配置存储客户端连接Nebula Graph相关的配置。 +客户端配置存储客户端连接 Nebula Graph 相关的配置。 示例配置如下: @@ -155,33 +172,34 @@ clientSettings: user: user password: password address: 192.168.11.13:9669,192.168.11.14:9669 - postStart: - commands: | - UPDATE CONFIGS storage:wal_ttl=3600; - UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = true }; - afterPeriod: 8s - preStop: - commands: | - UPDATE CONFIGS storage:wal_ttl=86400; - UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = false }; + # # 只有 local_config 是 false 的情况下,才可以通过 UPDATE CONFIGS 更新配置 + # postStart: + # commands: | + # UPDATE CONFIGS storage:wal_ttl=3600; + # UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = true }; + # afterPeriod: 8s + # preStop: + # commands: | + # UPDATE CONFIGS storage:wal_ttl=86400; + # UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = false }; ``` |参数|默认值|是否必须|说明| |:---|:---|:---|:---| -|`clientSettings.retry`|3|否|nGQL语句执行失败的重试次数。| -|`clientSettings.concurrency`|10|否|Nebula Graph客户端并发数。| -|`clientSettings.channelBufferSize`|128|否|每个Nebula Graph客户端的缓存队列大小。| -|`clientSettings.space`|-|是|指定数据要导入的Nebula Graph图空间。不要同时导入多个空间,以免影响性能。| -|`clientSettings.connection.user`|-|是|Nebula Graph的用户名。| -|`clientSettings.connection.password`|-|是|Nebula Graph用户名对应的密码。| -|`clientSettings.connection.address`|-|是|所有Graph服务的地址和端口。| -|`clientSettings.postStart.commands`|-|否|配置连接Nebula Graph服务器之后,在插入数据之前执行的一些操作。| +|`clientSettings.retry`|3|否|nGQL 语句执行失败的重试次数。| +|`clientSettings.concurrency`|10|否|Nebula Graph 客户端并发数。| +|`clientSettings.channelBufferSize`|128|否|每个 Nebula Graph 客户端的缓存队列大小。| +|`clientSettings.space`|-|是|指定数据要导入的 Nebula Graph 图空间。不要同时导入多个空间,以免影响性能。| +|`clientSettings.connection.user`|-|是|Nebula Graph 的用户名。| +|`clientSettings.connection.password`|-|是|Nebula Graph 用户名对应的密码。| +|`clientSettings.connection.address`|-|是|所有 Graph 服务的地址和端口。| +|`clientSettings.postStart.commands`|-|否|配置连接 Nebula Graph 服务器之后,在插入数据之前执行的一些操作。| |`clientSettings.postStart.afterPeriod`|-|否|执行上述`commands`命令后到执行插入数据命令之间的间隔,例如`8s`。| -|`clientSettings.preStop.commands`|-|否|配置断开Nebula Graph服务器连接之前执行的一些操作。| +|`clientSettings.preStop.commands`|-|否|配置断开 Nebula Graph 服务器连接之前执行的一些操作。| ### 文件配置 -文件配置存储数据文件和日志的相关配置,以及Schema的具体信息。 +文件配置存储数据文件和日志的相关配置,以及 Schema 的具体信息。 #### 文件和日志配置 @@ -211,13 +229,13 @@ files: |`files.limit`|-|否|读取数据的行数限制。| |`files.inOrder`|-|否|是否按顺序在文件中插入数据行。如果为`false`,可以避免数据倾斜导致的导入速率降低。| |`files.type`|-|是|文件类型。| -|`files.csv.withHeader`|`false`|是|是否有表头。详情请参见[关于CSV文件表头](#csvheader)。| -|`files.csv.withLabel`|`false`|是|是否有LABEL。详情请参见[有表头配置说明](config-with-header.md)。| -|`files.csv.delimiter`|`","`|是|指定csv文件的分隔符。只支持一个字符的字符串分隔符。| +|`files.csv.withHeader`|`false`|是|是否有表头。详情请参见[关于 CSV 文件表头](#csvheader)。| +|`files.csv.withLabel`|`false`|是|是否有 LABEL。详情请参见[有表头配置说明](config-with-header.md)。| +|`files.csv.delimiter`|`","`|是|指定 csv 文件的分隔符。只支持一个字符的字符串分隔符。| -#### Schema配置 +#### Schema 配置 -Schema配置描述当前数据文件的Meta信息,Schema的类型分为点和边两类,可以同时配置多个点或边。 +Schema 配置描述当前数据文件的 Meta 信息,Schema 的类型分为点和边两类,可以同时配置多个点或边。 - 点配置 @@ -246,16 +264,16 @@ schema: |参数|默认值|是否必须|说明| |:---|:---|:---|:---| -|`files.schema.type`|-|是|Schema的类型,可选值为`vertex`和`edge`。| -|`files.schema.vertex.vid.type`|-|否|点ID的数据类型,可选值为`int`和`string`。| -|`files.schema.vertex.vid.index`|-|否|点ID对应CSV文件中列的序号。| -|`files.schema.vertex.tags.name`|-|是|Tag名称。| -|`files.schema.vertex.tags.props.name`|-|是|Tag属性名称,必须和Nebula Graph中的Tag属性一致。| +|`files.schema.type`|-|是|Schema 的类型,可选值为`vertex`和`edge`。| +|`files.schema.vertex.vid.type`|-|否|点 ID 的数据类型,可选值为`int`和`string`。| +|`files.schema.vertex.vid.index`|-|否|点 ID 对应 CSV 文件中列的序号。| +|`files.schema.vertex.tags.name`|-|是|Tag 名称。| +|`files.schema.vertex.tags.props.name`|-|是|Tag 属性名称,必须和 Nebula Graph 中的 Tag 属性一致。| |`files.schema.vertex.tags.props.type`|-|是|属性数据类型,支持`bool`、`int`、`float`、`double`、`timestamp`和`string`。| -|`files.schema.vertex.tags.props.index`|-|否|属性对应CSV文件中列的序号。| +|`files.schema.vertex.tags.props.index`|-|否|属性对应 CSV 文件中列的序号。| !!! note - CSV文件中列的序号从0开始,即第一列的序号为0,第二列的序号为1。 + CSV 文件中列的序号从 0 开始,即第一列的序号为 0,第二列的序号为 1。 - 边配置 @@ -283,20 +301,20 @@ schema: |参数|默认值|是否必须|说明| |:---|:---|:---|:---| -|`files.schema.type`|-|是|Schema的类型,可选值为`vertex`和`edge`。| -|`files.schema.edge.name`|-|是|Edge type名称。| -|`files.schema.edge.srcVID.type`|-|否|边的起始点ID的数据类型。| -|`files.schema.edge.srcVID.index`|-|否|边的起始点ID对应CSV文件中列的序号。| -|`files.schema.edge.dstVID.type`|-|否|边的目的点ID的数据类型。| -|`files.schema.edge.dstVID.index`|-|否|边的目的点ID对应CSV文件中列的序号。| -|`files.schema.edge.rank.index`|-|否|边的rank值对应CSV文件中列的序号。| -|`files.schema.edge.props.name`|-|是|Edge type属性名称,必须和Nebula Graph中的Edge type属性一致。| +|`files.schema.type`|-|是|Schema 的类型,可选值为`vertex`和`edge`。| +|`files.schema.edge.name`|-|是|Edge type 名称。| +|`files.schema.edge.srcVID.type`|-|否|边的起始点 ID 的数据类型。| +|`files.schema.edge.srcVID.index`|-|否|边的起始点 ID 对应 CSV 文件中列的序号。| +|`files.schema.edge.dstVID.type`|-|否|边的目的点 ID 的数据类型。| +|`files.schema.edge.dstVID.index`|-|否|边的目的点 ID 对应 CSV 文件中列的序号。| +|`files.schema.edge.rank.index`|-|否|边的 rank 值对应 CSV 文件中列的序号。| +|`files.schema.edge.props.name`|-|是|Edge type 属性名称,必须和 Nebula Graph 中的 Edge type 属性一致。| |`files.schema.edge.props.type`|-|是|属性类型,支持`bool`、`int`、`float`、`double`、`timestamp`和`string`。| -|`files.schema.edge.props.index`|-|否|属性对应CSV文件中列的序号。| +|`files.schema.edge.props.index`|-|否|属性对应 CSV 文件中列的序号。| -## 关于CSV文件表头(header) +## 关于 CSV 文件表头(header) -Importer根据CSV文件有无表头,需要对配置文件进行不同的设置,相关示例和说明请参见: +Importer 根据 CSV 文件有无表头,需要对配置文件进行不同的设置,相关示例和说明请参见: - [无表头配置说明](config-without-header.md) @@ -304,5 +322,5 @@ Importer根据CSV文件有无表头,需要对配置文件进行不同的设置 ## 视频 -* [数据库导入工具——Nebula Importer 简介](https://www.bilibili.com/video/BV1ny4y1u7i4)(3分09秒) +* [数据库导入工具——Nebula Importer 简介](https://www.bilibili.com/video/BV1ny4y1u7i4)(3 分 09 秒) diff --git a/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md b/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md index cd385eead65..c4faabef2e6 100644 --- a/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md +++ b/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md @@ -1,40 +1,44 @@ -# 什么是Nebula Operator +# 什么是 Nebula Operator ## 基本概念 -Nebula Operator是用于在[Kubernetes](https://kubernetes.io)系统上自动化部署和运维[Nebula Graph](https://github.com/vesoft-inc/nebula)集群的工具。依托于Kubernetes扩展机制,Nebula Graph将其运维领域的知识全面注入至Kubernetes系统中,让Nebula Graph成为真正的[云原生图数据库](https://www.nebula-cloud.io/)。 +Nebula Operator 是用于在 [Kubernetes](https://kubernetes.io) 系统上自动化部署和运维 [Nebula Graph](https://github.com/vesoft-inc/nebula) 集群的工具。依托于 Kubernetes 扩展机制,Nebula Graph 将其运维领域的知识全面注入至 Kubernetes 系统中,让 Nebula Graph 成为真正的[云原生图数据库](https://www.nebula-cloud.io/)。 ## 工作原理 -对于Kubernetes系统内不存在的资源类型,用户可以通过添加自定义API对象的方式注册,常见的方法是使用[CustomResourceDefinition(CRD)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions) 。 +对于 Kubernetes 系统内不存在的资源类型,用户可以通过添加自定义 API 对象的方式注册,常见的方法是使用 [CustomResourceDefinition(CRD)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions) 。 -Nebula Operator将Nebula Graph集群的部署管理抽象为CRD。通过结合多个内置的API对象,包括StatefulSet、Service和ConfigMap,Nebula Graph集群的日常管理和维护被编码为一个控制循环。在Kubernetes系统内,每一种内置资源对象,都运行着一个特定的控制循环,将它的实际状态通过事先规定好的编排动作,逐步调整为最终的期望状态。当一个CR实例被提交时,Nebula Operator会根据控制流程驱动数据库集群进入最终状态。 +Nebula Operator 将 Nebula Graph 集群的部署管理抽象为 CRD。通过结合多个内置的 API 对象,包括 StatefulSet、Service 和 ConfigMap,Nebula Graph 集群的日常管理和维护被编码为一个控制循环。在 Kubernetes 系统内,每一种内置资源对象,都运行着一个特定的控制循环,将它的实际状态通过事先规定好的编排动作,逐步调整为最终的期望状态。当一个 CR 实例被提交时,Nebula Operator 会根据控制流程驱动数据库集群进入最终状态。 ## 功能介绍 -Nebula Operator已具备的功能如下: +Nebula Operator 已具备的功能如下: -- **集群创建和卸载**:Nebula Operator简化了用户部署和卸载集群的过程。用户只需提供对应的CR文件,Nebula Operator即可快速创建或者删除一个对应的Nebula Graph集群。更多信息参考[使用Kubectl部署Nebula Graph集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)或者[使用Helm部署Nebula Graph集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md)。 +- **集群创建和卸载**:Nebula Operator 简化了用户部署和卸载集群的过程。用户只需提供对应的 CR 文件,Nebula Operator 即可快速创建或者删除一个对应的 Nebula Graph 集群。更多信息参考[使用 Kubectl 部署 Nebula Graph 集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)或者[使用 Helm 部署 Nebula Graph 集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md)。 -- **集群扩容和缩容**:通过在控制循环中调用Nebula Graph原生提供的扩缩容接口,Nebula Graph封装Nebula Operator实现了扩缩容的逻辑,用户可以通过YAML配置进行简单的扩缩容,且保证数据的稳定性。更多信息参考[使用Kubeclt扩缩容集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md#_3)或[使用Helm扩缩容集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md#_2)。 +- **集群扩容和缩容**:通过在控制循环中调用 Nebula Graph 原生提供的扩缩容接口,Nebula Graph 封装 Nebula Operator 实现了扩缩容的逻辑,用户可以通过 YAML 配置进行简单的扩缩容,且保证数据的稳定性。更多信息参考[使用 Kubeclt 扩缩容集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md#_3) 或[使用 Helm 扩缩容集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md#_2)。 -- **集群升级**:支持升级2.5.x版的Nebula Graph集群至2.6.x版。 +- **集群升级**:支持升级 2.5.x 版的 Nebula Graph 集群至 2.6.x 版。 -- **故障自愈**:Nebula Operator调用Nebula Graph集群提供的接口,动态地感知服务状态。一旦发现异常,Nebula Operator自动进行容错处理。更多信息参考[故障自愈](5.operator-failover.md)。 +- **故障自愈**:Nebula Operator 调用 Nebula Graph 集群提供的接口,动态地感知服务状态。一旦发现异常,Nebula Operator 自动进行容错处理。更多信息参考[故障自愈](5.operator-failover.md)。 -- **均衡调度**:基于调度器扩展接口,Nebula Operator提供的调度器可以将应用Pods均匀地分布在Nebula Graph集群中。 +- **均衡调度**:基于调度器扩展接口,Nebula Operator 提供的调度器可以将应用 Pods 均匀地分布在 Nebula Graph 集群中。 ## 使用限制 ### 版本限制 -Nebula Operator不支持v1.x版本的Nebula Graph,其与Nebula Graph版本的对应关系如下: +Nebula Operator 不支持 v1.x 版本的 Nebula Graph,其与 Nebula Graph 版本的对应关系如下: -| Nebula Operator版本 | Nebula Graph版本 | +| Nebula Operator 版本 | Nebula Graph 版本 | | ------------------- | ---------------- | | {{operator.release}}| 2.5.x ~ 2.6.x | |0.8.0|2.5.x| ### 功能限制 -目前Nebula Operator只支持手动扩缩容Nebula Graph集群,不支持自动扩缩容Nebula Graph集群。 +目前 Nebula Operator 只支持手动扩缩容 Nebula Graph 集群,不支持自动扩缩容 Nebula Graph 集群。 + +## 更新说明 + +[Release](https://github.com/vesoft-inc/nebula-operator/releases/tag/{{operator.branch}}) diff --git a/docs-2.0/nebula-operator/2.deploy-nebula-operator.md b/docs-2.0/nebula-operator/2.deploy-nebula-operator.md index 61ac16a0d98..50e767eff95 100644 --- a/docs-2.0/nebula-operator/2.deploy-nebula-operator.md +++ b/docs-2.0/nebula-operator/2.deploy-nebula-operator.md @@ -1,16 +1,16 @@ -# 部署Nebula Operator +# 部署 Nebula Operator -用户可使用[Helm](https://helm.sh/)工具部署Nebula Operator。 +用户可使用 [Helm](https://helm.sh/) 工具部署 Nebula Operator。 ## 背景信息 -[Nebula Operator](1.introduction-to-nebula-operator.md)为用户管理Nebula Graph集群,使用户无需在生产环境中手动安装、扩展、升级和卸载Nebula Graph,减轻用户管理不同应用版本的负担。 +[Nebula Operator](1.introduction-to-nebula-operator.md) 为用户管理 Nebula Graph 集群,使用户无需在生产环境中手动安装、扩展、升级和卸载 Nebula Graph,减轻用户管理不同应用版本的负担。 ## 前提条件 ### 安装软件 -安装Nebula Operator前,用户需要安装以下软件并确保安装版本的正确性: +安装 Nebula Operator 前,用户需要安装以下软件并确保安装版本的正确性: | 软件 | 版本要求 | | ------------------------------------------------------------ | --------- | @@ -20,59 +20,59 @@ | [CertManager](https://cert-manager.io) | \>= 1.2.0 | | [OpenKruise](https://openkruise.io) | \>= 0.8.0 | -如果使用基于角色的访问控制的策略,用户需开启[RBAC](https://kubernetes.io/docs/admin/authorization/rbac)(可选)。 +如果使用基于角色的访问控制的策略,用户需开启 [RBAC](https://kubernetes.io/docs/admin/authorization/rbac)(可选)。 ### 软件说明 !!! note - 以下内容为Nebula Operator使用的第三方项目,Nebula Operator不负责处理安装这些软件过程中出现的问题. + 以下内容为 Nebula Operator 使用的第三方项目,Nebula Operator 不负责处理安装这些软件过程中出现的问题。 - [CoreDNS](https://coredns.io/) - CoreDNS是一个灵活的、可扩展的DNS服务器,被[安装](https://github.com/coredns/deployment/tree/master/kubernetes)在集群内作为集群内Pods的DNS服务器。 + CoreDNS 是一个灵活的、可扩展的 DNS 服务器,被[安装](https://github.com/coredns/deployment/tree/master/kubernetes)在集群内作为集群内 Pods 的 DNS 服务器。 - Nebula Graph集群中的每个组件通过DNS解析类似`x.default.svc.cluster.local`这样的域名相互通信。 + Nebula Graph 集群中的每个组件通过 DNS 解析类似`x.default.svc.cluster.local`这样的域名相互通信。 - [cert-manager](https://cert-manager.io/) !!! note - 如果用户已将Nebula Operator配置项`admissionWebhook.create`的值设为`false`,无需安装cert-manager。有关配置项的详情,请参考下文**安装Nebula Operator**中的**自定义配置Chart**部分。 + 如果用户已将 Nebula Operator 配置项`admissionWebhook.create`的值设为`false`,无需安装 cert-manager。有关配置项的详情,请参考下文**安装 Nebula Operator **中的**自定义配置 Chart **部分。 - cert-manager是一个自动化管理证书的工具,利用Kubernetes API扩展功能,使用Webhook服务器提供对cert-manager资源的动态准入控制。用户可参考[cert-manager installation documentation](https://cert-manager.io/docs/installation/kubernetes/)安装cert-manager。 + cert-manager 是一个自动化管理证书的工具,利用 Kubernetes API 扩展功能,使用 Webhook 服务器提供对 cert-manager 资源的动态准入控制。用户可参考 [cert-manager installation documentation](https://cert-manager.io/docs/installation/kubernetes/) 安装 cert-manager。 - cert-manager用于验证Nebula Graph的每个组件副本。如果用户在生产环境中运行它并关心Nebula Graph的高可用性,建议将`admissionWebhook.create`的值设为`true`,然后再安装cert-manager。 + cert-manager 用于验证 Nebula Graph 的每个组件副本。如果用户在生产环境中运行它并关心 Nebula Graph 的高可用性,建议将`admissionWebhook.create`的值设为`true`,然后再安装 cert-manager。 - [OpenKruise](https://openkruise.io/en-us/) - OpenKruise是Kubernetes的一整套标准扩展,能与原始的Kubernetes一起工作,为应用Pod、Sidecar容器,甚至是节点中的镜像的管理供更强大和高效的功能。Nebula Operator启动时需要用到OpenKruise开启针对StatefulSet的高级功能。用户可参考[openkruise installation documentation](https://openkruise.io/en-us/docs/installation.html)安装OpenKruise。 + OpenKruise 是 Kubernetes 的一整套标准扩展,能与原始的 Kubernetes 一起工作,为应用 Pod、Sidecar 容器,甚至是节点中的镜像的管理供更强大和高效的功能。Nebula Operator 启动时需要用到 OpenKruise 开启针对 StatefulSet 的高级功能。用户可参考 [openkruise installation documentation](https://openkruise.io/en-us/docs/installation.html) 安装 OpenKruise。 ## 操作步骤 -### 安装Nebula Operator +### 安装 Nebula Operator -1. 添加Nebula Operator chart仓库至Helm。 +1. 添加 Nebula Operator chart 仓库至 Helm。 ```bash helm repo add nebula-operator https://vesoft-inc.github.io/nebula-operator/charts ``` -2. 拉取最新的Helm仓库。 +2. 拉取最新的 Helm 仓库。 ```bash helm repo update ``` - 参考[Helm仓库](https://helm.sh/docs/helm/helm_repo/)获取更多`helm repo`相关信息。 + 参考 [Helm 仓库](https://helm.sh/docs/helm/helm_repo/)获取更多`helm repo`相关信息。 -3. 安装Nebula Operator。 +3. 安装 Nebula Operator。 ```bash helm install nebula-operator nebula-operator/nebula-operator --namespace= --version=${chart_version} ``` - 例如,安装{{operator.release}}版的Operator命令如下。 + 例如,安装{{operator.release}}版的 Operator 命令如下。 ```bash helm install nebula-operator nebula-operator/nebula-operator --namespace=nebula-operator-system --version={{operator.release}} @@ -80,13 +80,12 @@ - 上述命令中的`nebula-operator-system`为用户创建的命名空间。如果用户未创建该命名空间,可以执行`kubectl create namespace nebula-operator-system`进行创建。用户也可创建其他命名空间。 - - `{{operator.release}}`为Nebula Operator chart的版本。当Chart中只有一个默认版本时,可不指定。执行`helm search repo -l nebula-operator`查看Chart版本。 - + - `{{operator.release}}`为 Nebula Operator chart 的版本。当 Chart 中只有一个默认版本时,可不指定。执行`helm search repo -l nebula-operator`查看 Chart 版本。 - 用户可在执行安装Nebula Operator chart命令时自定义其配置。更多信息,查看下文**自定义配置Chart**。 + 用户可在执行安装 Nebula Operator chart 命令时自定义其配置。更多信息,查看下文**自定义配置 Chart**。 -### 自定义配置Chart +### 自定义配置 Chart 执行`helm show values [CHART] [flags]`查看可配置的选项。 @@ -142,32 +141,32 @@ scheduler: | 参数 | 默认值 | 描述 | | :------------------------------------- | :------------------------------ | :----------------------------------------- | -| `image.nebulaOperator.image` | `vesoft/nebula-operator:{{operator.branch}}` | Nebula Operator的镜像,版本为{{operator.release}}。 | +| `image.nebulaOperator.image` | `vesoft/nebula-operator:{{operator.branch}}` | Nebula Operator 的镜像,版本为{{operator.release}}。 | | `image.nebulaOperator.imagePullPolicy` | `IfNotPresent` | 镜像拉取策略。 | | `imagePullSecrets` | - | 镜像拉取密钥。 | | `kubernetesClusterDomain` | `cluster.local` | 集群域名。 | -| `controllerManager.create` | `true` | 是否启用controller-manager。 | -| `controllerManager.replicas` | `2` | controller-manager副本数。 | -| `admissionWebhook.create` | `true` | 是否启用Admission Webhook。 | -| `shceduler.create` | `true` | 是否启用Scheduler。 | +| `controllerManager.create` | `true` | 是否启用 controller-manager。 | +| `controllerManager.replicas` | `2` | controller-manager 副本数。 | +| `admissionWebhook.create` | `true` | 是否启用 Admission Webhook。 | +| `shceduler.create` | `true` | 是否启用 Scheduler。 | | `shceduler.schedulerName` | `nebula-scheduler` | 调度器名称。 | -| `shceduler.replicas` | `2` | nebula-scheduler副本数。 | +| `shceduler.replicas` | `2` | nebula-scheduler 副本数。 | -执行`helm install [NAME] [CHART] [flags]`命令安装Chart时,可指定Chart配置。更多信息,参考[安装前自定义Chart](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing)。 +执行`helm install [NAME] [CHART] [flags]`命令安装 Chart 时,可指定 Chart 配置。更多信息,参考[安装前自定义 Chart](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing)。 -以下示例为在安装Nebula Operator时,指定Nebula Operator的AdmissionWebhook机制为关闭状态(默认开启AdmissionWebhook): +以下示例为在安装 Nebula Operator 时,指定 Nebula Operator 的 AdmissionWebhook 机制为关闭状态(默认开启 AdmissionWebhook): ```bash helm install nebula-operator nebula-operator/nebula-operator --namespace= --set admissionWebhook.create=false ``` -参考[Helm安装](https://helm.sh/docs/helm/helm_install/)获取更多`helm install`相关信息。 +参考 [Helm 安装](https://helm.sh/docs/helm/helm_install/)获取更多`helm install`相关信息。 -### 更新Nebula Operator +### 更新 Nebula Operator -用户安装Nebula Operator后,可通过修改`${HOME}/nebula-operator/charts/nebula-operator/values.yaml`文件中参数的值来更新Nebula Operator。操作步骤如下: +用户安装 Nebula Operator 后,可通过修改`${HOME}/nebula-operator/charts/nebula-operator/values.yaml`文件中参数的值来更新 Nebula Operator。操作步骤如下: -1. 克隆Nebula Operator仓库至本机。 +1. 克隆 Nebula Operator 仓库至本机。 ```bash git clone https://github.com/vesoft-inc/nebula-operator.git @@ -175,29 +174,27 @@ helm install nebula-operator nebula-operator/nebula-operator --namespace= -f ${HOME}/nebula-operator/charts/nebula-operator/values.yaml ``` - ``为用户创建的命名空间,nebula-operator相关Pods在此命名空间下。 - + ``为用户创建的命名空间,nebula-operator 相关 Pods 在此命名空间下。 -### 升级Nebula Operator +### 升级 Nebula Operator !!! Compatibility "历史版本兼容性" - 由于0.9.0版本的Nebula Operator的日志盘和数据盘分开存储,因此用升级后的Operator管理2.5.x版本的Nebula Graph集群会导致兼容性问题。用户可以备份2.5.x版本的Nebula Graph集群,然后使用升级版本的Operator创建2.6.x版本集群。 - -1. 拉取最新的Helm仓库。 + 由于 0.9.0 版本的 Nebula Operator 的日志盘和数据盘分开存储,因此用升级后的 Operator 管理 2.5.x 版本的 Nebula Graph 集群会导致兼容性问题。用户可以备份 2.5.x 版本的 Nebula Graph 集群,然后使用升级版本的 Operator 创建 2.6.x 版本集群。 +1. 拉取最新的 Helm 仓库。 ```bash helm repo update ``` -2. 升级Operator。 +2. 升级 Operator。 ```bash helm upgrade nebula-operator nebula-operator/nebula-operator --namespace= --version={{operator.release}} @@ -223,16 +220,16 @@ helm install nebula-operator nebula-operator/nebula-operator --namespace=.yaml @@ -251,15 +248,15 @@ helm install nebula-operator nebula-operator/nebula-operator --namespace= ``` -2. 删除CRD。 +2. 删除 CRD。 ```bash kubectl delete crd nebulaclusters.apps.nebula-graph.io @@ -267,4 +264,4 @@ helm install nebula-operator nebula-operator/nebula-operator --namespace=-graphd-svc`、类型为`ClusterIP`的Service。通过该Service的IP和数据库的端口号,用户可连接Nebula Graph数据库。 +当使用 Nebula Operator 创建 Nebula Graph 集群后,Nebula Operator 会自动在同一命名空间下,创建名为`-graphd-svc`、类型为`ClusterIP`的 Service。通过该 Service 的 IP 和数据库的端口号,用户可连接 Nebula Graph 数据库。 -1. 查看Service,命令如下: +1. 查看 Service,命令如下: ```bash $ kubectl get service -l app.kubernetes.io/cluster= #为变量值,请用实际集群名称替换。 @@ -20,9 +20,9 @@ nebula-storaged-headless ClusterIP None 9779/TCP,19779/TCP,19780/TCP,9778/TCP 23h ``` - `ClusterIP`类型的Service只允许在集群内部访问容器应用。更多信息,请参考[ClusterIP](https://kubernetes.io/docs/concepts/services-networking/service/)。 + `ClusterIP`类型的 Service 只允许在集群内部访问容器应用。更多信息,请参考 [ClusterIP](https://kubernetes.io/docs/concepts/services-networking/service/)。 -2. 使用上述`-graphd-svc` Service的IP连接Nebula Graph数据库: +2. 使用上述`-graphd-svc` Service 的 IP 连接 Nebula Graph 数据库: ```bash kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr -port -u -p @@ -34,11 +34,11 @@ kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- nebula-console -addr 10.98.213.34 -port 9669 -u root -p vesoft ``` - - `--image`:为连接Nebula Graph的工具Nebula Console的镜像。 - - ``:自定义的Pod名称。 - - `-addr`:连接Graphd服务的IP地址,即`ClusterIP`类型的Service IP地址。 - - `-port`:连接Graphd服务的端口。默认端口为9669。 - - `-u`:Nebula Graph账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为root)。 + - `--image`:为连接 Nebula Graph 的工具 Nebula Console 的镜像。 + - ``:自定义的 Pod 名称。 + - `-addr`:连接 Graphd 服务的 IP 地址,即`ClusterIP`类型的 Service IP 地址。 + - `-port`:连接 Graphd 服务的端口。默认端口为 9669。 + - `-u`:Nebula Graph 账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为 root)。 - `-p`:用户名对应的密码。未启用身份认证时,密码可以填写任意字符。 如果返回以下内容,说明成功连接数据库: @@ -56,15 +56,15 @@ kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never ``` `CLUSTER_DOMAIN`的默认值为`cluster.local`。 -## 通过`NodePort`在Nebula Graph集群外部连接Nebula Graph数据库 +## 通过`NodePort`在 Nebula Graph 集群外部连接 Nebula Graph 数据库 -用户可创建`NodePort`类型的Service,通过节点IP和暴露的节点端口,从集群外部访问集群内部的服务。用户也可以使用云厂商(例如Azure、AWS等)提供的负载均衡服务,设置Service的类型为`LoadBalancer`。 +用户可创建`NodePort`类型的 Service,通过节点 IP 和暴露的节点端口,从集群外部访问集群内部的服务。用户也可以使用云厂商(例如 Azure、AWS 等)提供的负载均衡服务,设置 Service 的类型为`LoadBalancer`。 -`NodePort`类型的Service通过标签选择器`spec.selector`将前端的请求转发到带有标签`app.kubernetes.io/cluster: `、`app.kubernetes.io/component: graphd`的Graphd pod中。 +`NodePort`类型的 Service 通过标签选择器`spec.selector`将前端的请求转发到带有标签`app.kubernetes.io/cluster: `、`app.kubernetes.io/component: graphd`的 Graphd pod 中。 操作步骤如下: -1. 创建名为`graphd-nodeport-service.yaml`的文件。YAML文件内容如下: +1. 创建名为`graphd-nodeport-service.yaml`的文件。YAML 文件内容如下: ```yaml apiVersion: v1 @@ -96,16 +96,16 @@ kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never type: NodePort ``` - - Nebula Graph默认使用`9669`端口为客户端提供服务。`19669`为Graph服务端口号。 - - `targetPort`的值为映射至Pod的端口,可自定义。 + - Nebula Graph 默认使用`9669`端口为客户端提供服务。`19669`为 Graph 服务端口号。 + - `targetPort`的值为映射至 Pod 的端口,可自定义。 -2. 执行以下命令使Service服务在集群中生效。 +2. 执行以下命令使 Service 服务在集群中生效。 ```bash kubectl create -f graphd-nodeport-service.yaml ``` -3. 查看Service中Nebula Graph映射至集群节点的端口。 +3. 查看 Service 中 Nebula Graph 映射至集群节点的端口。 ```bash kubectl get services @@ -121,9 +121,9 @@ kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never nebula-storaged-headless ClusterIP None 9779/TCP,19779/TCP,19780/TCP,9778/TCP 23h ``` - NodePort类型的Service中,映射至集群节点的端口为`32236`。 + NodePort 类型的 Service 中,映射至集群节点的端口为`32236`。 -4. 使用节点IP和上述映射的节点端口连接Nebula Graph。 +4. 使用节点 IP 和上述映射的节点端口连接 Nebula Graph。 ```bash kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr -port -u -p @@ -138,25 +138,24 @@ kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never (root@nebula) [(none)]> ``` - - `--image`:为连接Nebula Graph的工具Nebula Console的镜像。 - - ``:自定义的Pod名称。本示例为`nebula-console2`。 - - `-addr`:Nebula Graph集群中任一节点IP地址。本示例为`192.168.8.24`。 - - `-port`:Nebula Graph映射至节点的端口。本示例为`32236`。 - - `-u`:Nebula Graph账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为root)。 + - `--image`:为连接 Nebula Graph 的工具 Nebula Console 的镜像。 + - ``:自定义的 Pod 名称。本示例为`nebula-console2`。 + - `-addr`:Nebula Graph 集群中任一节点 IP 地址。本示例为`192.168.8.24`。 + - `-port`:Nebula Graph 映射至节点的端口。本示例为`32236`。 + - `-u`:Nebula Graph 账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为 root)。 - `-p`:用户名对应的密码。未启用身份认证时,密码可以填写任意字符。 +## 通过`Ingress`在 Nebula Graph 集群外部连接 Nebula Graph 数据库 -## 通过`Ingress`在Nebula Graph集群外部连接Nebula Graph数据库 +Nginx Ingress 是 Kubernetes Ingress 的一个实现。Nginx Ingress 通过 Watch 机制感知 Kubernetes 集群的 Ingress 资源,将 Ingress 规则生成 Nginx 配置,使 Nginx 能够转发 7 层流量。 -Nginx Ingress是Kubernetes Ingress的一个实现。Nginx Ingress通过Watch机制感知Kubernetes集群的Ingress资源,将Ingress规则生成Nginx配置,使Nginx能够转发7层流量。 +用户可以通过 HostNetwork 和 DaemonSet 组合的模式使用 Nginx Ingress 从集群外部连接 Nebula Graph 集群。 -用户可以通过HostNetwork和DaemonSet组合的模式使用Nginx Ingress从集群外部连接Nebula Graph集群。 +由于使用 HostNetwork,Nginx Ingress 的 Pod 就不能被调度在同一个节点上。为了避免监听端口冲突,可以事先选择一些节点并将其标记为边缘节点,专门用于部署 Nginx Ingress。然后 Nginx Ingress 以 DaemonSet 模式部署在这些节点上。 -由于使用HostNetwork,Nginx Ingress的Pod就不能被调度在同一个节点上。为了避免监听端口冲突,可以事先选择一些节点并将其标记为边缘节点,专门用于部署Nginx Ingress。然后Nginx Ingress以DaemonSet模式部署在这些节点上。 +由于 Ingress 不支持 TCP 或 UDP 服务,为此 nginx-ingress-controller 使用`--tcp-services-configmap`和`--udp-services-configmap`参数指向一个 ConfigMap,该 ConfigMap 中的键指需要使用的外部端口,值指要公开的服务的格式,值的格式为`<命名空间/服务名称>:<服务端口>`。 -由于Ingress不支持TCP或UDP服务,为此nginx-ingress-controller使用`--tcp-services-configmap`和`--udp-services-configmap`参数指向一个ConfigMap,该ConfigMap中的键指需要使用的外部端口,值指要公开的服务的格式,值的格式为`<命名空间/服务名称>:<服务端口>`。 - -例如指向名为`tcp-services`的ConfigMap的配置如下: +例如指向名为`tcp-services`的 ConfigMap 的配置如下: ```yaml apiVersion: v1 @@ -173,19 +172,19 @@ data: 1. 创建名为`nginx-ingress-daemonset-hostnetwork.yaml`的文件。 - 单击[nginx-ingress-daemonset-hostnetwork.yaml](https://github.com/vesoft-inc/nebula-operator/blob/{{operator.branch}}/config/samples/nginx-ingress-daemonset-hostnetwork.yaml)查看完整的YAML示例内容。 + 单击 [nginx-ingress-daemonset-hostnetwork.yaml](https://github.com/vesoft-inc/nebula-operator/blob/{{operator.branch}}/config/samples/nginx-ingress-daemonset-hostnetwork.yaml) 查看完整的 YAML 示例内容。 !!! note - 上述YAML中的资源对象均使用`nginx-ingress`命名空间。用户可执行`kubectl create namesapce nginx-ingress`创建命名空间,或者自定义其他命名空间。 + 上述 YAML 中的资源对象均使用`nginx-ingress`命名空间。用户可执行`kubectl create namesapce nginx-ingress`创建命名空间,或者自定义其他命名空间。 -2. 为任一节点(本示例使用的节点名为`worker2`,IP为`192.168.8.160`)打上标签,以运行上述YAML文件中名为`nginx-ingress-controller`的DaemonSet。 +2. 为任一节点(本示例使用的节点名为`worker2`,IP 为`192.168.8.160`)打上标签,以运行上述 YAML 文件中名为`nginx-ingress-controller`的 DaemonSet。 ```bash kubectl label node worker2 nginx-ingress=true ``` -3. 执行以下命令使Nginx Ingress在集群中生效。 +3. 执行以下命令使 Nginx Ingress 在集群中生效。 ```bash kubectl create -f nginx-ingress-daemonset-hostnetwork.yaml @@ -208,9 +207,9 @@ data: daemonset.apps/nginx-ingress-controller created ``` - 成功部署Nginx Ingress后,由于Nginx Ingress中配置的网络类型为`hostNetwork`,因此用户可通过部署了Nginx Ingress的节点的IP(`192.168.8.160`)和外部端口(`9769`)访问Nebula Graph服务。 + 成功部署 Nginx Ingress 后,由于 Nginx Ingress 中配置的网络类型为`hostNetwork`,因此用户可通过部署了 Nginx Ingress 的节点的 IP(`192.168.8.160`)和外部端口(`9769`)访问 Nebula Graph 服务。 -4. 执行以下命令部署连接Nebula Graph服务的Console并通过宿主机IP(本示例为`192.168.8.160`)和上述配置的外部端口访问Nebula Graph服务。 +4. 执行以下命令部署连接 Nebula Graph 服务的 Console 并通过宿主机 IP(本示例为`192.168.8.160`)和上述配置的外部端口访问 Nebula Graph 服务。 ```bash kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr -port -u -p @@ -222,11 +221,11 @@ data: kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- nebula-console -addr 192.168.8.160 -port 9769 -u root -p vesoft ``` - - `--image`:为连接Nebula Graph的工具Nebula Console的镜像。 - - ``:自定义的Pod名称。本示例为`nebula-console`。 - - `-addr`:部署Nginx Ingress的节点IP,本示例为`192.168.8.160`。 + - `--image`:为连接 Nebula Graph 的工具 Nebula Console 的镜像。 + - ``:自定义的 Pod 名称。本示例为`nebula-console`。 + - `-addr`:部署 Nginx Ingress 的节点 IP,本示例为`192.168.8.160`。 - `-port`:外网访问使用的的端口。本示例设置为`9769`。 - - `-u`:Nebula Graph账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为root)。 + - `-u`:Nebula Graph 账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为 root)。 - `-p`:用户名对应的密码。未启用身份认证时,密码可以填写任意字符。 如果返回以下内容,说明成功连接数据库: @@ -235,4 +234,4 @@ data: If you don't see a command prompt, try pressing enter. (root@nebula) [(none)]> - ``` \ No newline at end of file + ``` diff --git a/docs-2.0/nebula-operator/5.operator-failover.md b/docs-2.0/nebula-operator/5.operator-failover.md index 51b2509a680..0a5d510f720 100644 --- a/docs-2.0/nebula-operator/5.operator-failover.md +++ b/docs-2.0/nebula-operator/5.operator-failover.md @@ -1,25 +1,25 @@ # 故障自愈 -Nebula Operator调用Nebula Graph集群提供的接口,动态地感知服务是否正常运行。当Nebula Graph集群中某一组件停止运行时,Nebula Operator会自动地进行容错处理。本文通过删除Nebula Graph集群中1个Storage服务Pod,模拟集群故障为例,说明Nebular Operator如何进行故障自愈。 +Nebula Operator 调用 Nebula Graph 集群提供的接口,动态地感知服务是否正常运行。当 Nebula Graph 集群中某一组件停止运行时,Nebula Operator 会自动地进行容错处理。本文通过删除 Nebula Graph 集群中 1 个 Storage 服务 Pod,模拟集群故障为例,说明 Nebular Operator 如何进行故障自愈。 ## 前提条件 -[安装Nebula Operator](2.deploy-nebula-operator.md) +[安装 Nebula Operator](2.deploy-nebula-operator.md) ## 操作步骤 -1. 创建Nebula Graph集群。具体步骤参考[使用Kubectl部署Nebula Graph集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)或者[使用Helm部署Nebula Graph集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md)。 +1. 创建 Nebula Graph 集群。具体步骤参考[使用 Kubectl 部署 Nebula Graph 集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)或者[使用 Helm 部署 Nebula Graph 集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md)。 -2. 待所有Pods都处于`Running`状态时,模拟故障,删除名为`-storaged-2` Pod。 +2. 待所有 Pods 都处于`Running`状态时,模拟故障,删除名为`-storaged-2` Pod。 ```bash kubectl delete pod -storaged-2 --now ``` -``为Nebula Graph集群的名称。 +``为 Nebula Graph 集群的名称。 -3. Nebula Operator自动创建名为`-storaged-2`的Pod,以修复故障。 +3. Nebula Operator 自动创建名为`-storaged-2`的 Pod,以修复故障。 - 执行`kubectl get pods`查看`-storaged-2`Pod的创建状态。 + 执行`kubectl get pods`查看`-storaged-2`Pod 的创建状态。 ```bash ... diff --git a/docs-2.0/nebula-operator/6.get-started-with-operator.md b/docs-2.0/nebula-operator/6.get-started-with-operator.md index aea31850798..14233d022fd 100644 --- a/docs-2.0/nebula-operator/6.get-started-with-operator.md +++ b/docs-2.0/nebula-operator/6.get-started-with-operator.md @@ -1,10 +1,10 @@ # 使用流程 -使用Nebula Operator访问Nebula Graph集群服务的流程如下: +使用 Nebula Operator 访问 Nebula Graph 集群服务的流程如下: -1. [安装Nebula Operator](2.deploy-nebula-operator.md)。 -2. 创建Nebula Graph集群。 +1. [安装 Nebula Operator](2.deploy-nebula-operator.md)。 +2. 创建 Nebula Graph 集群。 - 具体步骤参考[使用Kubectl部署Nebula Graph集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)或者[使用Helm部署Nebula Graph集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md)。 + 具体步骤参考[使用 Kubectl 部署 Nebula Graph 集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)或者[使用 Helm 部署 Nebula Graph 集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md)。 -3. [连接Nebula Graph服务](4.connect-to-nebula-graph-service.md)。 +3. [连接 Nebula Graph 服务](4.connect-to-nebula-graph-service.md)。 diff --git a/docs-2.0/nebula-operator/7.operator-faq.md b/docs-2.0/nebula-operator/7.operator-faq.md index eeedd78dcfc..b8e148587b6 100644 --- a/docs-2.0/nebula-operator/7.operator-faq.md +++ b/docs-2.0/nebula-operator/7.operator-faq.md @@ -1,16 +1,16 @@ # 常见问题 -## Nebula Operator支持v1.x版本的Nebula Graph吗? +## Nebula Operator 支持 v1.x 版本的 Nebula Graph 吗? -不支持,因为v1.x版本的Nebula Graph不支持DNS,而Nebula Operator需要使用DNS。 +不支持,因为 v1.x 版本的 Nebula Graph 不支持 DNS,而 Nebula Operator 需要使用 DNS。 -## Nebula Operator是否支持滚动升级Nebula Graph? +## Nebula Operator 是否支持滚动升级 Nebula Graph? -只支持升级2.5.x版本的Nebula Graph至2.6.x。 +只支持升级 2.5.x 版本的 Nebula Graph 至 2.6.x。 ## 使用本地存储是否可以保证集群稳定性? -无法保证。使用本地存储意味着Pod被绑定到一个特定的节点,Nebula Operator目前不支持在绑定的节点发生故障时进行故障转移。 +无法保证。使用本地存储意味着 Pod 被绑定到一个特定的节点,Nebula Operator 目前不支持在绑定的节点发生故障时进行故障转移。 ## 扩缩容集群时,如何确保稳定性? diff --git a/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md index 940f7fd3318..ab8cdcc0371 100644 --- a/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md +++ b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md @@ -1,10 +1,10 @@ -# 自定义Nebula Graph集群的配置参数 +# 自定义 Nebula Graph 集群的配置参数 -Nebula Graph集群中Meta、Storage、Graph服务都有各自的配置,其在用户创建的CR实例(Nebula Graph集群)的YAML文件中被定义为`config`。`config`中的设置会被映射并加载到对应服务的ConfigMap中。 +Nebula Graph 集群中 Meta、Storage、Graph 服务都有各自的配置,其在用户创建的 CR 实例(Nebula Graph 集群)的 YAML 文件中被定义为`config`。`config`中的设置会被映射并加载到对应服务的 ConfigMap 中。 !!! note - 暂不支持通过Helm自定义Nebula Graph集群的配置参数。 + 暂不支持通过 Helm 自定义 Nebula Graph 集群的配置参数。 `config`结构如下: @@ -14,12 +14,11 @@ Config map[string]string `json:"config,omitempty"` ## 前提条件 -已使用K8s创建一个集群。具体步骤,参见[使用Kubectl创建Nebula Graph集群](../3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 - +已使用 K8s 创建一个集群。具体步骤,参见[使用 Kubectl 创建 Nebula Graph 集群](../3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 ## 操作步骤 -以下示例使用名为`nebula`的集群说明如何在YAML中为集群的Graph服务配置`config`: +以下示例使用名为`nebula`的集群说明如何在 YAML 中为集群的 Graph 服务配置`config`: 1. 执行以下命令进入`nebula`集群的编辑页面。 @@ -27,7 +26,7 @@ Config map[string]string `json:"config,omitempty"` kubectl edit nebulaclusters.apps.nebula-graph.io nebula ``` -2. 在YAML文件的`spec.graphd.config`配置项中,添加`enable_authorize`和`auth_type`。 +2. 在 YAML 文件的`spec.graphd.config`配置项中,添加`enable_authorize`和`auth_type`。 ```yaml apiVersion: apps.nebula-graph.io/v1alpha1 @@ -52,15 +51,14 @@ Config map[string]string `json:"config,omitempty"` requests: storage: 2Gi storageClassName: gp2 - config: //为Graph服务自定义参数。 + config: //为 Graph 服务自定义参数。 "enable_authorize": "true" "auth_type": "password" ... ``` -在自定义参数`enable_authorize`和`auth_type`后,Graph服务对应的ConfigMap(`nebula-graphd`)中的配置将被覆盖。 +在自定义参数`enable_authorize`和`auth_type`后,Graph 服务对应的 ConfigMap(`nebula-graphd`)中的配置将被覆盖。 ## 更多信息 -有关Meta、Storage、Graph服务的配置参数的详细介绍,参见[服务配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)。 - +有关 Meta、Storage、Graph 服务的配置参数的详细介绍,参见[服务配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)。 diff --git a/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md index 5c6bb49d6f8..64780af0874 100644 --- a/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md +++ b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md @@ -1,14 +1,14 @@ -# 回收PV +# 回收 PV -Nebula Operator使用持久化卷PV(Persistent Volume)和持久化卷声明PVC(Persistent Volume Claim)来存储持久化数据。如果用户不小心删除了一个Nebula Graph集群,PV和PVC对象及其数据仍可保留,以确保数据安全。 +Nebula Operator 使用持久化卷 PV(Persistent Volume)和持久化卷声明 PVC(Persistent Volume Claim)来存储持久化数据。如果用户不小心删除了一个 Nebula Graph 集群,PV 和 PVC 对象及其数据仍可保留,以确保数据安全。 -用户可以在集群的CR实例的配置文件中通过参数`enablePVReclaim`定义是否回收PV。 +用户可以在集群的 CR 实例的配置文件中通过参数`enablePVReclaim`定义是否回收 PV。 -如果用户需要删除图空间并想保留相关数据,可以更新Nebula Graph集群,即设置`enablePVReclaim`为`true`。 +如果用户需要删除图空间并想保留相关数据,可以更新 Nebula Graph 集群,即设置`enablePVReclaim`为`true`。 ## 前提条件 -已使用K8s创建一个集群。具体步骤,参见[使用Kubectl创建Nebula Graph集群](../3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 +已使用 K8s 创建一个集群。具体步骤,参见[使用 Kubectl 创建 Nebula Graph 集群](../3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 ## 操作步骤 @@ -20,7 +20,7 @@ Nebula Operator使用持久化卷PV(Persistent Volume)和持久化卷声明P kubectl edit nebulaclusters.apps.nebula-graph.io nebula ``` -2. 在YAML文件的`spec`配置项中,添加`enablePVReclaim`并设置其值为`true`。 +2. 在 YAML 文件的`spec`配置项中,添加`enablePVReclaim`并设置其值为`true`。 ```yaml apiVersion: apps.nebula-graph.io/v1alpha1 @@ -28,7 +28,7 @@ Nebula Operator使用持久化卷PV(Persistent Volume)和持久化卷声明P metadata: name: nebula spec: - enablePVReclaim: true //设置其值为true。 + enablePVReclaim: true //设置其值为 true。 graphd: image: vesoft/nebula-graphd logVolumeClaim: diff --git a/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md index 70f9e9bf34c..22e8f70b919 100644 --- a/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md +++ b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md @@ -1,14 +1,14 @@ -# 均衡扩容后的Storage数据 +# 均衡扩容后的 Storage 数据 -用户在扩容Storage服务后,可以自主决定是否均衡Storage服务中的数据。本文介绍如何设置均衡Storage数据。 +用户在扩容 Storage 服务后,可以自主决定是否均衡 Storage 服务中的数据。本文介绍如何设置均衡 Storage 数据。 -Nebula Graph的Storage服务的扩容分为两个阶段,第一个阶段等待所有扩容的Pods为`Ready`的状态;第二个阶段执行`BALANCE DATA`和`BALANCE LEADER`命令均衡数据。这两个阶段将控制器副本的扩容过程与均衡数据过程解耦,使用户可以选择在低流量时进行均衡数据操作,有效降低数据迁移对在线服务的影响。 +Nebula Graph 的 Storage 服务的扩容分为两个阶段,第一个阶段等待所有扩容的 Pods 为`Ready`的状态;第二个阶段执行`BALANCE DATA`和`BALANCE LEADER`命令均衡数据。这两个阶段将控制器副本的扩容过程与均衡数据过程解耦,使用户可以选择在低流量时进行均衡数据操作,有效降低数据迁移对在线服务的影响。 -用户可以在集群的CR实例的配置文件中通过参数`enableAutoBalance`来控制是否自动均衡数据。 +用户可以在集群的 CR 实例的配置文件中通过参数`enableAutoBalance`来控制是否自动均衡数据。 ## 前提条件 -已使用K8s创建一个集群。具体步骤,参见[使用Kubectl创建Nebula Graph集群](../3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 +已使用 K8s 创建一个集群。具体步骤,参见[使用 Kubectl 创建 Nebula Graph 集群](../3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 ## 操作步骤 @@ -20,7 +20,7 @@ Nebula Graph的Storage服务的扩容分为两个阶段,第一个阶段等待 kubectl edit nebulaclusters.apps.nebula-graph.io nebula ``` -2. 在YAML文件的`spec.storaged`配置项中,添加`enableAutoBalance`并设置其值为`true`。 +2. 在 YAML 文件的`spec.storaged`配置项中,添加`enableAutoBalance`并设置其值为`true`。 ```yaml apiVersion: apps.nebula-graph.io/v1alpha1 @@ -73,7 +73,7 @@ Nebula Graph的Storage服务的扩容分为两个阶段,第一个阶段等待 version: v1 schedulerName: default-scheduler storaged: - enableAutoBalance: true //将其值设置为true时表示扩容后自动均衡Storage数据。 + enableAutoBalance: true //将其值设置为 true 时表示扩容后自动均衡 Storage 数据。 dataVolumeClaim: resources: requests: @@ -97,8 +97,8 @@ Nebula Graph的Storage服务的扩容分为两个阶段,第一个阶段等待 ... ``` - - 当设置`enableAutoBalance`的值为`true`时,表示扩容后自动均衡Storage数据。 + - 当设置`enableAutoBalance`的值为`true`时,表示扩容后自动均衡 Storage 数据。 - - 当设置`enableAutoBalance`的值为`false`时,表示扩容后不会均衡Storage数据。 + - 当设置`enableAutoBalance`的值为`false`时,表示扩容后不会均衡 Storage 数据。 - - 当不设置`enableAutoBalance`参数时,默认扩容Storage后系统不会自动均衡Storage数据。 \ No newline at end of file + - 当不设置`enableAutoBalance`参数时,默认扩容 Storage 后系统不会自动均衡 Storage 数据。 \ No newline at end of file diff --git a/docs-2.0/nebula-operator/9.upgrade-nebula-cluster.md b/docs-2.0/nebula-operator/9.upgrade-nebula-cluster.md index f11b56124a1..613ac0bafaa 100644 --- a/docs-2.0/nebula-operator/9.upgrade-nebula-cluster.md +++ b/docs-2.0/nebula-operator/9.upgrade-nebula-cluster.md @@ -1,23 +1,22 @@ -# 升级Nebula Graph集群 +# 升级 Nebula Graph 集群 -本文介绍如何升级通过Nebula Operator创建的Nebula Graph集群。 +本文介绍如何升级通过 Nebula Operator 创建的 Nebula Graph 集群。 ## 使用限制 -- 只支持使用Nebula Operator创建的Nebula Graph集群。 +- 只支持使用 Nebula Operator 创建的 Nebula Graph 集群。 -- 只支持升级Nebula Graph 2.5.x至2.6.x版本。 +- 只支持升级 Nebula Graph 2.5.x 至 2.6.x 版本。 -- 不支持升级通过0.8.0版Operator创建的集群。 +- 不支持升级通过 0.8.0 版 Operator 创建的集群。 - -## 使用Kubectl升级Nebula Graph集群 +## 使用 Kubectl 升级 Nebula Graph 集群 ### 前提条件 -已创建Nebula Graph集群。具体步骤,参见[使用Kubectl创建Nebula Graph集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 +已创建 Nebula Graph 集群。具体步骤,参见[使用 Kubectl 创建 Nebula Graph 集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 -本文示例中待升级的Nebula Graph版本为2.5.1,其YAML文件名为`apps_v1alpha1_nebulacluster.yaml`。 +本文示例中待升级的 Nebula Graph 版本为 2.5.1,其 YAML 文件名为`apps_v1alpha1_nebulacluster.yaml`。 ### 操作步骤 @@ -35,9 +34,9 @@ 3 vesoft/nebula-storaged:v2.5.1 ``` -2. 编辑`apps_v1alpha1_nebulacluster.yaml`并将所有`version`的值从v2.5.1修改至{{nebula.branch}}。 +2. 编辑`apps_v1alpha1_nebulacluster.yaml`并将所有`version`的值从 v2.5.1 修改至{{nebula.branch}}。 - 修改后的YAML文件内容如下: + 修改后的 YAML 文件内容如下: ```yaml apiVersion: apps.nebula-graph.io/v1alpha1 @@ -55,7 +54,7 @@ memory: "1Gi" replicas: 1 image: vesoft/nebula-graphd - version: {{nebula.branch}} //将值从v2.5.1修改至{{nebula.branch}}。 + version: {{nebula.branch}} //将值从 v2.5.1 修改至{{nebula.branch}}。 service: type: NodePort externalTrafficPolicy: Local @@ -74,7 +73,7 @@ memory: "1Gi" replicas: 1 image: vesoft/nebula-metad - version: {{nebula.branch}} //将值从v2.5.1修改至{{nebula.branch}}。 + version: {{nebula.branch}} //将值从 v2.5.1 修改至{{nebula.branch}}。 dataVolumeClaim: resources: requests: @@ -95,7 +94,7 @@ memory: "1Gi" replicas: 3 image: vesoft/nebula-storaged - version: {{nebula.branch}} //将值从v2.5.1修改至{{nebula.branch}}。 + version: {{nebula.branch}} //将值从 v2.5.1 修改至{{nebula.branch}}。 dataVolumeClaim: resources: requests: @@ -113,13 +112,13 @@ imagePullPolicy: Always ``` -3. 执行以下命令将版本升级的更新应用于集群CR中。 +3. 执行以下命令将版本升级的更新应用于集群 CR 中。 ```bash kubectl apply -f apps_v1alpha1_nebulacluster.yaml ``` -4. 等待约2分钟后,执行以下命令可查看到服务的镜像版本变更为{{nebula.branch}}。 +4. 等待约 2 分钟后,执行以下命令可查看到服务的镜像版本变更为{{nebula.branch}}。 ```bash kubectl get pods -l app.kubernetes.io/cluster=nebula -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' |sort |uniq -c @@ -133,30 +132,30 @@ 3 vesoft/nebula-storaged:{{nebula.branch}} ``` -## 使用Helm升级Nebula Graph集群 +## 使用 Helm 升级 Nebula Graph 集群 ### 前提条件 -已创建Nebula Graph集群。具体步骤,参见[使用Helm创建Nebula Graph集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md)。 +已创建 Nebula Graph 集群。具体步骤,参见[使用 Helm 创建 Nebula Graph 集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md)。 ### 操作步骤 -1. 更新Helm仓库,拉取最新的仓库资源。 +1. 更新 Helm 仓库,拉取最新的仓库资源。 ```bash helm repo update ``` -2. 配置Helm的环境变量。 +2. 配置 Helm 的环境变量。 ```bash - export NEBULA_CLUSTER_NAME=nebula # Nebula Graph集群的名字。 - export NEBULA_CLUSTER_NAMESPACE=nebula # Nebula Graph集群所处的命名空间的名字。 + export NEBULA_CLUSTER_NAME=nebula # Nebula Graph 集群的名字。 + export NEBULA_CLUSTER_NAMESPACE=nebula # Nebula Graph 集群所处的命名空间的名字。 ``` -3. 升级Nebula Graph集群。 +3. 升级 Nebula Graph 集群。 - 例如升级至{{nebula.branch}}Nebula Graph集群的命令如下。 + 例如升级至{{nebula.branch}}Nebula Graph 集群的命令如下。 ```bash helm upgrade "${NEBULA_CLUSTER_NAME}" nebula-operator/nebula-cluster \ diff --git a/docs-2.0/nebula-spark-connector.md b/docs-2.0/nebula-spark-connector.md index 297d0a38a24..8619cd7089d 100644 --- a/docs-2.0/nebula-spark-connector.md +++ b/docs-2.0/nebula-spark-connector.md @@ -1,28 +1,28 @@ # Nebula Spark Connector -Nebula Spark Connector是一个Spark连接器,提供通过Spark标准形式读写Nebula Graph数据的能力。Nebula Spark Connector由Reader和Writer两部分组成。 +Nebula Spark Connector 是一个 Spark 连接器,提供通过 Spark 标准形式读写 Nebula Graph 数据的能力。Nebula Spark Connector 由 Reader 和 Writer 两部分组成。 - Reader - 提供一个Spark SQL接口,用户可以使用该接口编程读取Nebula Graph图数据,单次读取一个点或Edge type的数据,并将读取的结果组装成Spark的DataFrame。 + 提供一个 Spark SQL 接口,用户可以使用该接口编程读取 Nebula Graph 图数据,单次读取一个点或 Edge type 的数据,并将读取的结果组装成 Spark 的 DataFrame。 - Writer - 提供一个Spark SQL接口,用户可以使用该接口编程将DataFrame格式的数据逐条或批量写入Nebula Graph。 + 提供一个 Spark SQL 接口,用户可以使用该接口编程将 DataFrame 格式的数据逐条或批量写入 Nebula Graph。 -更多使用说明请参见[Nebula Spark Connector](https://github.com/vesoft-inc/nebula-spark-connector/blob/{{sparkconnector.branch}}/README_CN.md)。 +更多使用说明请参见 [Nebula Spark Connector](https://github.com/vesoft-inc/nebula-spark-connector/blob/{{sparkconnector.branch}}/README_CN.md)。 ## 适用场景 -Nebula Spark Connector适用于以下场景: +Nebula Spark Connector 适用于以下场景: -- 在不同的Nebula Graph集群之间迁移数据。 +- 在不同的 Nebula Graph 集群之间迁移数据。 -- 在同一个Nebula Graph集群内不同图空间之间迁移数据。 +- 在同一个 Nebula Graph 集群内不同图空间之间迁移数据。 -- Nebula Graph与其他数据源之间迁移数据。 +- Nebula Graph 与其他数据源之间迁移数据。 -- 结合[Nebula Algorithm](nebula-algorithm.md)进行图计算。 +- 结合 [Nebula Algorithm](nebula-algorithm.md) 进行图计算。 ## 特性 @@ -30,23 +30,27 @@ Nebula Spark Connector {{sparkconnector.release}}版本特性如下: - 提供多种连接配置项,如超时时间、连接重试次数、执行重试次数等。 -- 提供多种数据配置项,如写入数据时设置对应列为点ID、起始点ID、目的点ID或属性。 +- 提供多种数据配置项,如写入数据时设置对应列为点 ID、起始点 ID、目的点 ID 或属性。 -- Reader支持无属性读取和全属性读取。 +- Reader 支持无属性读取和全属性读取。 -- Reader支持将Nebula Graph数据读取成Graphx的VertexRDD和EdgeRDD,支持非Long型点ID。 +- Reader 支持将 Nebula Graph 数据读取成 Graphx 的 VertexRDD 和 EdgeRDD,支持非 Long 型点 ID。 -- 统一了SparkSQL的扩展数据源,统一采用DataSourceV2进行Nebula Graph数据扩展。 +- 统一了 SparkSQL 的扩展数据源,统一采用 DataSourceV2 进行 Nebula Graph 数据扩展。 - 支持`insert`、`update`和`delete`三种写入模式。`insert`模式会插入(覆盖)数据,`update`模式仅会更新已存在的数据,`delete`模式只删除数据。 -## 获取Nebula Spark Connector +## 更新说明 + +[Release](https://github.com/vesoft-inc/nebula-spark-connector/releases/tag/{{sparkconnector.tag}}) + +## 获取 Nebula Spark Connector ### 编译打包 !!! note - 安装 Spark 2.3以上版本。 + 安装 Spark 2.4.x 版本。 1. 克隆仓库`nebula-spark-connector`。 @@ -68,27 +72,27 @@ Nebula Spark Connector {{sparkconnector.release}}版本特性如下: 编译完成后,在目录`nebula-spark-connector/nebula-spark-connector/target/`下生成类似文件`nebula-spark-connector-{{sparkconnector.release}}-SHANPSHOT.jar`。 -### Maven远程仓库下载 +### Maven 远程仓库下载 [下载地址](https://repo1.maven.org/maven2/com/vesoft/nebula-spark-connector/) ## 使用方法 -使用Nebula Spark Connector读写Nebula Graph数据库时,只需要编写以下代码即可实现。 +使用 Nebula Spark Connector 读写 Nebula Graph 数据库时,只需要编写以下代码即可实现。 ```scala -# 从Nebula Graph读取点边数据。 +# 从 Nebula Graph 读取点边数据。 spark.read.nebula().loadVerticesToDF() spark.read.nebula().loadEdgesToDF() -# 将dataframe数据作为点和边写入Nebula Graph中。 +# 将 dataframe 数据作为点和边写入 Nebula Graph 中。 dataframe.write.nebula().writeVertices() dataframe.write.nebula().writeEdges() ``` `nebula()`接收两个配置参数,包括连接配置和读写配置。 -### 从Nebula Graph读取数据 +### 从 Nebula Graph 读取数据 ```scala val config = NebulaConnectionConfig @@ -122,27 +126,31 @@ val nebulaReadEdgeConfig: ReadNebulaConfig = ReadNebulaConfig val edge = spark.read.nebula(config, nebulaReadEdgeConfig).loadEdgesToDF() ``` -- `NebulaConnectionConfig`是连接Nebula Graph的配置,说明如下。 +- `NebulaConnectionConfig`是连接 Nebula Graph 的配置,说明如下。 |参数|是否必须|说明| |:---|:---|:---| - |`withMetaAddress` |是| 所有Meta服务的地址,多个地址用英文逗号(,)隔开,格式为`ip1:port1,ip2:port2,...`。读取数据不需要配置`withGraphAddress`。 | - |`withConnectionRetry` |否| Nebula Java Client连接Nebula Graph的重试次数。默认值为`1`。 | - |`withExecuteRetry` |否| Nebula Java Client执行查询语句的重试次数。默认值为`1`。 | - |`withTimeout` |否| Nebula Java Client请求响应的超时时间。默认值为`6000`,单位:毫秒(ms)。 | + |`withMetaAddress` |是| 所有 Meta 服务的地址,多个地址用英文逗号(,)隔开,格式为`ip1:port1,ip2:port2,...`。读取数据不需要配置`withGraphAddress`。 | + |`withConnectionRetry` |否| Nebula Java Client 连接 Nebula Graph 的重试次数。默认值为`1`。 | + |`withExecuteRetry` |否| Nebula Java Client 执行查询语句的重试次数。默认值为`1`。 | + |`withTimeout` |否| Nebula Java Client 请求响应的超时时间。默认值为`6000`,单位:毫秒(ms)。 | -- `ReadNebulaConfig`是读取Nebula Graph数据的配置,说明如下。 +- `ReadNebulaConfig`是读取 Nebula Graph 数据的配置,说明如下。 |参数|是否必须|说明| |:---|:---|:---| - |`withSpace` |是| Nebula Graph图空间名称。 | - |`withLabel` |是| Nebula Graph图空间内的Tag或Edge type名称。 | + |`withSpace` |是| Nebula Graph 图空间名称。 | + |`withLabel` |是| Nebula Graph 图空间内的 Tag 或 Edge type 名称。 | |`withNoColumn` |否| 是否不读取属性。默认值为`false`,表示读取属性。取值为`true`时,表示不读取属性,此时`withReturnCols`配置无效。 | |`withReturnCols` |否| 配置要读取的点或边的属性集。格式为`List(property1,property2,...)`,默认值为`List()`,表示读取全部属性。 | - |`withLimit` |否| 配置Nebula Java Storage Client一次从服务端读取的数据行数。默认值为1000。 | - |`withPartitionNum` |否| 配置读取Nebula Graph数据时Spark的分区数。默认值为100。该值的配置最好不超过图空间的的分片数量(partition_num)。| + |`withLimit` |否| 配置 Nebula Java Storage Client 一次从服务端读取的数据行数。默认值为 1000。 | + |`withPartitionNum` |否| 配置读取 Nebula Graph 数据时 Spark 的分区数。默认值为 100。该值的配置最好不超过图空间的的分片数量(partition_num)。| + +### 向 Nebula Graph 写入数据 + +!!! note -### 向Nebula Graph写入数据 + DataFrame 中的列会自动作为属性写入 Nebula Graph。 ```scala val config = NebulaConnectionConfig @@ -204,25 +212,25 @@ val nebulaWriteVertexConfig = WriteNebulaVertexConfig df.write.nebula(config, nebulaWriteVertexConfig).writeVertices() ``` -- `NebulaConnectionConfig`是连接Nebula Graph的配置,说明如下。 +- `NebulaConnectionConfig`是连接 Nebula Graph 的配置,说明如下。 |参数|是否必须|说明| |:---|:---|:---| - |`withMetaAddress` |是| 所有Meta服务的地址,多个地址用英文逗号(,)隔开,格式为`ip1:port1,ip2:port2,...`。 | - |`withGraphAddress` |是| Graph服务的地址,多个地址用英文逗号(,)隔开,格式为`ip1:port1,ip2:port2,...`。 | - |`withConnectionRetry` |否| Nebula Java Client连接Nebula Graph的重试次数。默认值为`1`。 | + |`withMetaAddress` |是| 所有 Meta 服务的地址,多个地址用英文逗号(,)隔开,格式为`ip1:port1,ip2:port2,...`。 | + |`withGraphAddress` |是| Graph 服务的地址,多个地址用英文逗号(,)隔开,格式为`ip1:port1,ip2:port2,...`。 | + |`withConnectionRetry` |否| Nebula Java Client 连接 Nebula Graph 的重试次数。默认值为`1`。 | - `WriteNebulaVertexConfig`是写入点的配置,说明如下。 |参数|是否必须|说明| |:---|:---|:---| - |`withSpace` |是| Nebula Graph图空间名称。 | - |`withTag` |是| 写入点时需要关联的Tag名称。 | - |`withVidField` |是| DataFrame中作为点ID的列。 | - |`withVidPolicy` |否| 写入点ID时,采用的映射函数,Nebula Graph 2.x仅支持HASH。默认不做映射。 | - |`withVidAsProp` |否| DataFrame中作为点ID的列是否也作为属性写入。默认值为`false`。如果配置为`true`,请确保Tag中有和`VidField`相同的属性名。 | - |`withUser` |否| Nebula Graph用户名。若未开启[身份验证](7.data-security/1.authentication/1.authentication.md),无需配置用户名和密码。 | - |`withPasswd` |否| Nebula Graph用户名对应的密码。 | + |`withSpace` |是| Nebula Graph 图空间名称。 | + |`withTag` |是| 写入点时需要关联的 Tag 名称。 | + |`withVidField` |是| DataFrame 中作为点 ID 的列。 | + |`withVidPolicy` |否| 写入点 ID 时,采用的映射函数,Nebula Graph 2.x 仅支持 HASH。默认不做映射。 | + |`withVidAsProp` |否| DataFrame 中作为点 ID 的列是否也作为属性写入。默认值为`false`。如果配置为`true`,请确保 Tag 中有和`VidField`相同的属性名。 | + |`withUser` |否| Nebula Graph 用户名。若未开启[身份验证](7.data-security/1.authentication/1.authentication.md),无需配置用户名和密码。 | + |`withPasswd` |否| Nebula Graph 用户名对应的密码。 | |`withBatch` |是| 一次写入的数据行数。默认值为`1000`. | |`withWriteMode`|否|写入模式。可选值为`insert`和`update`。默认为`insert`。| @@ -230,17 +238,17 @@ df.write.nebula(config, nebulaWriteVertexConfig).writeVertices() |参数|是否必须|说明| |:---|:---|:---| - |`withSpace` |是| Nebula Graph图空间名称。 | - |`withEdge` |是| 写入边时需要关联的Edge type名称。 | - |`withSrcIdField` |是| DataFrame中作为起始点的列。 | - |`withSrcPolicy` |否| 写入起始点时,采用的映射函数,Nebula Graph 2.x仅支持HASH。默认不做映射。 | - |`withDstIdField` |是| DataFrame中作为目的点的列。 | - |`withDstPolicy` |否| 写入目的点时,采用的映射函数,Nebula Graph 2.x仅支持HASH。默认不做映射。 | - |`withRankField` |否| DataFrame中作为rank的列。默认不写入rank。 | - |`withSrcAsProperty` |否| DataFrame中作为起始点的列是否也作为属性写入。默认值为`false`。如果配置为`true`,请确保Edge type中有和`SrcIdField`相同的属性名。 | - |`withDstAsProperty` |否| DataFrame中作为目的点的列是否也作为属性写入。默认值为`false`。如果配置为`true`,请确保Edge type中有和`DstIdField`相同的属性名。 | - |`withRankAsProperty` |否| DataFrame中作为rank的列是否也作为属性写入。默认值为`false`。如果配置为`true`,请确保Edge type中有和`RankField`相同的属性名。 | - |`withUser` |否| Nebula Graph用户名。若未开启[身份验证](7.data-security/1.authentication/1.authentication.md),无需配置用户名和密码。 | - |`withPasswd` |否| Nebula Graph用户名对应的密码。 | + |`withSpace` |是| Nebula Graph 图空间名称。 | + |`withEdge` |是| 写入边时需要关联的 Edge type 名称。 | + |`withSrcIdField` |是| DataFrame 中作为起始点的列。 | + |`withSrcPolicy` |否| 写入起始点时,采用的映射函数,Nebula Graph 2.x 仅支持 HASH。默认不做映射。 | + |`withDstIdField` |是| DataFrame 中作为目的点的列。 | + |`withDstPolicy` |否| 写入目的点时,采用的映射函数,Nebula Graph 2.x 仅支持 HASH。默认不做映射。 | + |`withRankField` |否| DataFrame 中作为 rank 的列。默认不写入 rank。 | + |`withSrcAsProperty` |否| DataFrame 中作为起始点的列是否也作为属性写入。默认值为`false`。如果配置为`true`,请确保 Edge type 中有和`SrcIdField`相同的属性名。 | + |`withDstAsProperty` |否| DataFrame 中作为目的点的列是否也作为属性写入。默认值为`false`。如果配置为`true`,请确保 Edge type 中有和`DstIdField`相同的属性名。 | + |`withRankAsProperty` |否| DataFrame 中作为 rank 的列是否也作为属性写入。默认值为`false`。如果配置为`true`,请确保 Edge type 中有和`RankField`相同的属性名。 | + |`withUser` |否| Nebula Graph 用户名。若未开启[身份验证](7.data-security/1.authentication/1.authentication.md),无需配置用户名和密码。 | + |`withPasswd` |否| Nebula Graph 用户名对应的密码。 | |`withBatch` |是| 一次写入的数据行数。默认值为`1000`. | |`withWriteMode`|否|写入模式。可选值为`insert`和`update`。默认为`insert`。| diff --git a/docs-2.0/nebula-studio/about-studio/st-ug-check-updates.md b/docs-2.0/nebula-studio/about-studio/st-ug-check-updates.md index c212a71a37d..615cd03cae5 100644 --- a/docs-2.0/nebula-studio/about-studio/st-ug-check-updates.md +++ b/docs-2.0/nebula-studio/about-studio/st-ug-check-updates.md @@ -1,6 +1,6 @@ # 版本更新 -Studio 处于持续开发状态中。用户可以通过 [Studio 发布版本更新](../about-studio/st-ug-release-note.md) 查看最新发布的功能。 +Studio 处于持续开发状态中。用户可以通过 [Studio 发布版本更新](../about-studio/st-ug-release-note.md)查看最新发布的功能。 ## 浏览器支持 diff --git a/docs-2.0/nebula-studio/about-studio/st-ug-release-note.md b/docs-2.0/nebula-studio/about-studio/st-ug-release-note.md index a299368d5bc..6d5043aafd3 100644 --- a/docs-2.0/nebula-studio/about-studio/st-ug-release-note.md +++ b/docs-2.0/nebula-studio/about-studio/st-ug-release-note.md @@ -1,4 +1,4 @@ -# Studio版本更新说明 +# Studio 版本更新说明 ## v3.1.0(2021.10.29) diff --git a/docs-2.0/nebula-studio/about-studio/st-ug-shortcuts.md b/docs-2.0/nebula-studio/about-studio/st-ug-shortcuts.md index 99384e9fb31..a610402ab11 100644 --- a/docs-2.0/nebula-studio/about-studio/st-ug-shortcuts.md +++ b/docs-2.0/nebula-studio/about-studio/st-ug-shortcuts.md @@ -12,4 +12,3 @@ | 在 **图探索** 页面撤销操作 | 按 Shift + ‘z’ 键 | | 在 **图探索** 页面删除图 | 选中后按 Shift + ‘del’ 键 | | 在 **图探索** 页面对某个点快速拓展 | 鼠标双击 或 按 Shift + Enter 键 | - diff --git a/docs-2.0/nebula-studio/about-studio/st-ug-what-is-graph-studio.md b/docs-2.0/nebula-studio/about-studio/st-ug-what-is-graph-studio.md index f82382789f3..b956ef59419 100644 --- a/docs-2.0/nebula-studio/about-studio/st-ug-what-is-graph-studio.md +++ b/docs-2.0/nebula-studio/about-studio/st-ug-what-is-graph-studio.md @@ -1,6 +1,6 @@ # 什么是 Nebula Graph Studio -Nebula Graph Studio(简称 Studio)是一款可以通过 Web 访问的图数据库开源可视化工具,搭配 [Nebula Graph](../../README.md) 内核使用,提供构图、数据导入、编写 nGQL 查询、图探索等一站式服务。即使没有图数据库操作经验,用户也可以快速成为图专家。用户可以在 Nebula Graph GitHub 仓库中查看最新源码,详情参见[nebula-studio](https://github.com/vesoft-inc/nebula-studio)。 +Nebula Graph Studio(简称 Studio)是一款可以通过 Web 访问的图数据库开源可视化工具,搭配 [Nebula Graph](../../README.md) 内核使用,提供构图、数据导入、编写 nGQL 查询、图探索等一站式服务。用户可以在 Nebula Graph GitHub 仓库中查看最新源码,详情参见 [nebula-studio](https://github.com/vesoft-inc/nebula-studio)。 ## 发行版本 @@ -9,13 +9,13 @@ Nebula Graph Studio(简称 Studio)是一款可以通过 Web 访问的图数 - Docker 版本:用户可以使用 Docker 服务部署 Studio,并连接到 Nebula Graph 数据库。详细信息参考 [Docker 部署 Studio](../deploy-connect/st-ug-deploy.md)。 - RPM 版本:用户可以使用 RPM 服务部署 Studio,并连接到 Nebula Graph 数据库。详细信息参考 [RPM 部署 Studio](../deploy-connect/st-ug-deploy.md)。 - tar 包安装部署:用户可以使用 tar 包安装并部署 Studio,并连接到 Nebula Graph 数据库。详细信息参考 [tar 包部署 Studio](../deploy-connect/st-ug-deploy.md)。 -- 使用 Helm 安装部署:在 Kubernetes 集群里使用 Helm 安装并部署 Studio,并连接到 Nebula Graph 数据库。详细信息参考 [使用 Helm 部署 Nebula Graph Studio](../deploy-connect/st-ug-deploy-by-helm.md)。 +- 使用 Helm 安装部署:在 Kubernetes 集群里使用 Helm 安装并部署 Studio,并连接到 Nebula Graph 数据库。详细信息参考[使用 Helm 部署 Nebula Graph Studio](../deploy-connect/st-ug-deploy-by-helm.md)。 -四种部署方式功能基本相同,在使用 Studio 时可能会受到限制。详细信息,参考 [使用限制](st-ug-limitations.md)。 +四种部署方式功能基本相同,在使用 Studio 时可能会受到限制。详细信息,参考[使用限制](st-ug-limitations.md)。 ## 产品功能 @@ -47,5 +47,5 @@ Studio 具备以下功能: ## 视频 -* [图解 Nebula Studio 图探索功能](https://www.bilibili.com/video/BV1QN411Z7Vh)(3分23秒) +* [图解 Nebula Studio 图探索功能](https://www.bilibili.com/video/BV1QN411Z7Vh)(3 分 23 秒) diff --git a/docs-2.0/nebula-studio/deploy-connect/st-ug-connect.md b/docs-2.0/nebula-studio/deploy-connect/st-ug-connect.md index 80fb9eb746e..0e1d953bd73 100644 --- a/docs-2.0/nebula-studio/deploy-connect/st-ug-connect.md +++ b/docs-2.0/nebula-studio/deploy-connect/st-ug-connect.md @@ -9,7 +9,7 @@ 在连接 Nebula Graph 数据库前,用户需要确认以下信息: -- Studio 已经启动。详细信息参考 [部署 Studio](st-ug-deploy.md)。 +- Studio 已经启动。详细信息参考[部署 Studio](st-ug-deploy.md)。 - Nebula Graph 的 Graph 服务本机 IP 地址以及服务所用端口。默认端口为 `9669`。 @@ -49,6 +49,6 @@ 成功连接 Nebula Graph 数据库后,根据账号的权限,用户可以选择执行以下操作: -- 如果已拥有 GOD 或者 ADMIN 权限的账号登录,可以使用 [**控制台**](../quick-start/st-ug-create-schema.md) 或者 [**Schema**](../manage-schema/st-ug-crud-space.md) 页面管理 Schema。 -- 如果已拥有 GOD、ADMIN、DBA 或者 USER 权限的账号登录,可以 [批量导入数据](../quick-start/st-ug-import-data.md) 或者在 **控制台** 页面上运行 nGQL 语句插入数据。 +- 如果已拥有 GOD 或者 ADMIN 权限的账号登录,可以使用 [**控制台**](../quick-start/st-ug-create-schema.md)或者 [**Schema**](../manage-schema/st-ug-crud-space.md) 页面管理 Schema。 +- 如果已拥有 GOD、ADMIN、DBA 或者 USER 权限的账号登录,可以[批量导入数据](../quick-start/st-ug-import-data.md)或者在 **控制台** 页面上运行 nGQL 语句插入数据。 - 如果已拥有 GOD、ADMIN、DBA、USER 或者 GUEST 权限的账号登录,可以在 **控制台** 页面上运行 nGQL 语句读取数据或者在 **图探索** 页面上进行图探索或数据分析。 diff --git a/docs-2.0/nebula-studio/deploy-connect/st-ug-deploy-by-helm.md b/docs-2.0/nebula-studio/deploy-connect/st-ug-deploy-by-helm.md index 75262fafb16..c43ed06af3a 100644 --- a/docs-2.0/nebula-studio/deploy-connect/st-ug-deploy-by-helm.md +++ b/docs-2.0/nebula-studio/deploy-connect/st-ug-deploy-by-helm.md @@ -1,6 +1,6 @@ # 使用 Helm 部署 Studio -本文介绍如何在通过 Kubernetes 集群里用 Helm 来部署并启动 Studio。 +本文介绍如何在 Kubernetes 中使用 Helm 部署并启动 Studio。 ## 前提条件 @@ -25,13 +25,13 @@ $ cd nebula-studio ``` -3. 安装 Studio 到 Helm Chart,命名为 `my-studio`。 +3. 更新并安装 Nebula Graph Studio chart,命名为`my-studio`。 ```bash - $ helm upgrade --install my-studio --set service.type=NodePort --set service.port=30070 deployment/helm + $ helm upgrade --install my-studio --set service.type=NodePort --set service.port={30070} deployment/helm ``` -4. 启动成功后,在浏览器地址栏输入 `http://address-of-node:30070/`。 +4. 启动成功后,在浏览器地址栏输入`http://{address-of-node}:{30070}/`。 如果在浏览器窗口中能看到以下登录界面,表示已经成功部署并启动 Studio。 ![Nebula Graph Studio 登录界面](../figs/st-ug-001-1.png "Nebula Graph Studio 登录界面") @@ -46,11 +46,11 @@ $ helm uninstall my-studio 进入 Studio 登录界面后,用户需要连接 Nebula Graph。详细信息,参考[连接数据库](st-ug-connect.md)。 -## Nebula Graph Studio Chart配置参数说明 +## Nebula Graph Studio chart 配置参数说明 | 参数 | 默认值 | 描述 | |:---|:---|:---| -| replicaCount | 0 | Deployment的副本数。 | +| replicaCount | 0 | Deployment 的副本数。 | | image.httpGateway.name | vesoft/nebula-http-gateway | nebula-http-gateway 镜像的仓库地址。 | | image.nebulaStudio.name | vesoft/nebula-graph-studio | nebula-graph-studio 镜像的仓库地址。 | | image.nginx.name | nginx | nginx 镜像的仓库地址。 | @@ -60,7 +60,7 @@ $ helm uninstall my-studio | service.type | ClusterIP | 服务类型,必须为`NodePort`,`ClusterIP`或`LoadBalancer`其中之一。 | | service.port | 7001 | nebula-graph-studio 中 web 服务的端口。 | | resources.httpGateway | {} | nebula-http-gateway 的资源限制/请求。 | -| resources.nebulaStudio | {} | nebula-studio的资源限制/请求。 | +| resources.nebulaStudio | {} | nebula-studio 的资源限制/请求。 | | resources.nginx | {} | nginx 的资源限制/请求。 | -| persistent.storageClassName | "" | storageClass名称,如果不指定就使用默认值。 | +| persistent.storageClassName | "" | storageClass 名称,如果不指定就使用默认值。 | | persistent.size | 5Gi | 存储盘大小。 | diff --git a/docs-2.0/nebula-studio/deploy-connect/st-ug-deploy.md b/docs-2.0/nebula-studio/deploy-connect/st-ug-deploy.md index fcc9255ef12..27a4df6da28 100644 --- a/docs-2.0/nebula-studio/deploy-connect/st-ug-deploy.md +++ b/docs-2.0/nebula-studio/deploy-connect/st-ug-deploy.md @@ -1,6 +1,6 @@ # 部署 Studio 本文介绍如何在本地通过 Docker、RPM 和 tar 包部署 Studio。 @@ -15,14 +15,14 @@ Nebula Graph Studio( 以下简称 Studio )支持云端或本地部署。云 在部署 RPM 版 Studio 之前,用户需要确认以下信息: -- Nebula Graph 服务已经部署并启动。详细信息,参考[Nebula Graph 安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 +- Nebula Graph 服务已经部署并启动。详细信息,参考 [Nebula Graph 安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 - 使用的 Linux 发行版为 CentOS ,安装有 lsof 和版本为 v10.16.0 + 以上的 [Node.js](https://nodejs.org/zh-cn/)。 !!! note `node` 及 `npm` 命令需要安装在 `/usr/bin/`目录下,以防出现 RPM 安装时 node 命令找不到的情况。 - 例如nodejs12默认目录为`/opt/rh/rh-nodejs12`,用户可以使用以下命令建立软连接: + 例如 nodejs12 默认目录为`/opt/rh/rh-nodejs12`,用户可以使用以下命令建立软连接: ```bash $ sudo ln -s /opt/rh/rh-nodejs12/root/usr/bin/node /usr/bin/node @@ -33,20 +33,20 @@ Nebula Graph Studio( 以下简称 Studio )支持云端或本地部署。云 | 端口号 | 说明 | | ---- | ---- | - | 7001 | Studio提供web服务使用。 | - | 8080 | Nebula HTTP Gateway Client进行HTTP通信使用。 | + | 7001 | Studio 提供 web 服务使用。 | + | 8080 | Nebula HTTP Gateway Client 进行 HTTP 通信使用。 | ### 安装 -1. 根据需要选择并下载RPM包,建议选择最新版本。常用下载链接如下: +1. 根据需要选择并下载 RPM 包,建议选择最新版本。常用下载链接如下: - | 安装包 | 检验和 | Nebula版本 | + | 安装包 | 检验和 | Nebula 版本 | | ----- | ----- | ----- | | [nebula-graph-studio-{{studio.release}}.x86_64.rpm](https://oss-cdn.nebula-graph.com.cn/nebula-graph-studio/{{studio.release}}/nebula-graph-studio-{{studio.release}}.x86_64.rpm) | [nebula-graph-studio-{{studio.release}}.x86_64.rpm.sha256](https://oss-cdn.nebula-graph.com.cn/nebula-graph-studio/{{studio.release}}/nebula-graph-studio-{{studio.release}}.x86_64.rpm.sha256) | {{ nebula.release }} | -2. 使用`sudo rpm -i `命令安装RPM包。 +2. 使用`sudo rpm -i `命令安装 RPM 包。 - 例如,安装Studio {{studio.release}} 版本需要运行以下命令: + 例如,安装 Studio {{studio.release}} 版本需要运行以下命令: ```bash $ sudo rpm -i nebula-graph-studio-{{studio.release}}.x86_64.rpm @@ -59,7 +59,6 @@ Nebula Graph Studio( 以下简称 Studio )支持云端或本地部署。云 nohup: 把输出追加到"nohup.out" ``` - 3. 启动成功后,在浏览器地址栏输入 `http://ip address:7001`。 如果在浏览器窗口中能看到以下登录界面,表示已经成功部署并启动 Studio。 @@ -88,14 +87,14 @@ $ bash /usr/local/nebula-graph-studio/scripts/rpm/start.sh $ bash /usr/local/nebula-graph-studio/scripts/rpm/stop.sh ``` -如果启动服务时遇到报错报错 ERROR: bind EADDRINUSE 0.0.0.0:7001,用户可以通过以下命令查看端口7001是否被占用。 +如果启动服务时遇到报错报错 ERROR: bind EADDRINUSE 0.0.0.0:7001,用户可以通过以下命令查看端口 7001 是否被占用。 ```bash $ lsof -i:7001 ``` -如果端口被占用,且无法结束该端口上进程,用户可以通过以下命令修改Studio服务启动端口,并重新启动服务。 +如果端口被占用,且无法结束该端口上进程,用户可以通过以下命令修改 Studio 服务启动端口,并重新启动服务。 ```bash -//修改studio服务启动端口 +//修改 studio 服务启动端口 $ vi config/config.default.js //修改 @@ -108,7 +107,7 @@ $ vi config/config.default.js }; ... -//重新启动npm +//重新启动 npm $ npm run start ``` @@ -118,7 +117,7 @@ $ npm run start 在部署 tar 包安装的 Studio 之前,用户需要确认以下信息: -- Nebula Graph 服务已经部署并启动。详细信息,参考[Nebula Graph安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 +- Nebula Graph 服务已经部署并启动。详细信息,参考 [Nebula Graph 安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 - 使用的 Linux 上安装有版本为 v10.12.0 以上的 Node.js。 @@ -126,8 +125,8 @@ $ npm run start | 端口号 | 说明 | | ---- | ---- | - | 7001 | Studio提供的web服务 | - | 8080 | Nebula-http-gateway,Client的HTTP服务 | + | 7001 | Studio 提供的 web 服务 | + | 8080 | Nebula-http-gateway,Client 的 HTTP 服务 | ### 安装 @@ -173,7 +172,6 @@ $ npm run start ![Nebula Graph Studio 登录界面](../figs/st-ug-001-1.png "Nebula Graph Studio 登录界面") - ### 停止服务 用户可以采用 `kill pid` 的方式来关停服务: @@ -188,15 +186,15 @@ $ npm run stop # stop nebula-graph-studio 在部署 Docker 版 Studio 之前,用户需要确认以下信息: -- Nebula Graph 服务已经部署并启动。详细信息,参考[Nebula Graph安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 +- Nebula Graph 服务已经部署并启动。详细信息,参考 [Nebula Graph 安装部署](../../4.deployment-and-installation/1.resource-preparations.md "点击前往 Nebula Graph 安装部署")。 - 在即将运行 Docker 版 Studio 的机器上安装并启动 Docker Compose。详细信息参考 [Docker Compose 文档](https://docs.docker.com/compose/install/ "点击前往 Docker 文档中心")。 - 确保在安装开始前,以下端口处于未被使用状态。 | 端口号 | 说明 | | ---- | ---- | - | 7001 | Studio提供的web服务 | - | 8080 | Nebula-http-gateway,Client的HTTP服务 | + | 7001 | Studio 提供的 web 服务 | + | 8080 | Nebula-http-gateway,Client 的 HTTP 服务 | - (可选)在中国大陆从 Docker Hub 拉取 Docker 镜像的速度可能比较慢,用户可以使用 `registry-mirrors` 参数配置加速镜像。例如,如果要使用 Docker 中国区官方镜像、网易镜像和中国科技大学的镜像,则按以下格式配置 `registry-mirrors` 参数: @@ -218,7 +216,7 @@ $ npm run stop # stop nebula-graph-studio 1. 下载 Studio 的部署配置文件。 - | 安装包 | Nebula Graph版本 | + | 安装包 | Nebula Graph 版本 | | ----- | ----- | | [nebula-graph-studio-v{{studio.release}}.tar.gz](https://oss-cdn.nebula-graph.com.cn/nebula-graph-studio/nebula-graph-studio-v{{studio.release}}.tar.gz) | {{nebula.release}} | diff --git a/docs-2.0/nebula-studio/manage-schema/st-ug-crud-edge-type.md b/docs-2.0/nebula-studio/manage-schema/st-ug-crud-edge-type.md index 8b0ab7e0970..8ce57966e45 100644 --- a/docs-2.0/nebula-studio/manage-schema/st-ug-crud-edge-type.md +++ b/docs-2.0/nebula-studio/manage-schema/st-ug-crud-edge-type.md @@ -1,14 +1,14 @@ -# 操作Edge type +# 操作 Edge type -在 Nebula Graph 数据库中创建图空间后,用户可能需要创建Edge type。用户可以选择使用 **控制台** 或者 **Schema** 操作Edge type。本文仅说明如何使用 **Schema** 操作Edge type。 +在 Nebula Graph 数据库中创建图空间后,用户可能需要创建 Edge type。用户可以选择使用 **控制台** 或者 **Schema** 操作 Edge type。本文仅说明如何使用 **Schema** 操作 Edge type。 ## 支持版本 -Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参考 [版本更新](../about-studio/st-ug-check-updates.md)。 +Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参考[版本更新](../about-studio/st-ug-check-updates.md)。 ## 前提条件 -在 Studio 上操作Edge type之前,用户必须确认以下信息: +在 Studio 上操作 Edge type 之前,用户必须确认以下信息: - Studio 已经连接到 Nebula Graph 数据库。 @@ -16,9 +16,9 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 - 当前登录的账号拥有 GOD、ADMIN 或者 DBA 的权限。 -## 创建Edge type +## 创建 Edge type -按以下步骤使用 **Schema** 创建Edge type: +按以下步骤使用 **Schema** 创建 Edge type: 1. 在工具栏中,点击 **Schema** 页签。 @@ -30,26 +30,26 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 5. 在 **创建** 页面上,完成以下设置: - - **名称**:按提示信息输入合规的Edge type名称。本示例中,输入 `serve`。 + - **名称**:按提示信息输入合规的 Edge type 名称。本示例中,输入 `serve`。 - - (可选)如果Edge type需要描述,可以在名称下方的 **描述** 输入相应内容。 + - (可选)如果 Edge type 需要描述,可以在名称下方的 **描述** 输入相应内容。 - - (可选)如果Edge type需要属性,在 **定义属性**面板的左上角,点击勾选框,并在展开的列表中,完成以下操作: + - (可选)如果 Edge type 需要属性,在 **定义属性**面板的左上角,点击勾选框,并在展开的列表中,完成以下操作: - 输入属性名称、数据类型和默认值。 - - 如果一个Edge type有多个属性,可以点击 **添加属性** 按钮,并定义属性。 + - 如果一个 Edge type 有多个属性,可以点击 **添加属性** 按钮,并定义属性。 - 如果要删除某个属性,在该属性所在行,点击 ![表示删除的图标](../figs/st-ug-020.png "删除") 图标。 - - (可选)Edge type未设置索引时,用户可以设置 TTL:在 **设置TTL**面板的左上角,点击勾选框,并在展开的列表中设置 `TTL_COL` 和 `TTL_DURATION` 参数信息。关于这两个参数的详细信息,参考 [TTL 配置](../../3.ngql-guide/8.clauses-and-options/ttl-options.md "点击前往 Nebula Graph 网站")。 + - (可选)Edge type 未设置索引时,用户可以设置 TTL:在 **设置 TTL **面板的左上角,点击勾选框,并在展开的列表中设置 `TTL_COL` 和 `TTL_DURATION` 参数信息。关于这两个参数的详细信息,参考 [TTL 配置](../../3.ngql-guide/8.clauses-and-options/ttl-options.md "点击前往 Nebula Graph 网站")。 -6. 完成设置后,在 **对应的nGQL语句** 面板上,用户能看到与上述配置等价的 nGQL 语句。 -![定义Edge type action 的属性](../figs/st-ug-022-2.png "定义Edge type") +6. 完成设置后,在 **对应的 nGQL 语句** 面板上,用户能看到与上述配置等价的 nGQL 语句。 +![定义 Edge type action 的属性](../figs/st-ug-022-2.png "定义 Edge type") 7. 确认无误后,点击 **+ 创建** 按钮。 - 如果Edge type创建成功,**定义属性**面板会显示这个Edge type的属性列表。 + 如果 Edge type 创建成功,**定义属性**面板会显示这个 Edge type 的属性列表。 -## 修改Edge type +## 修改 Edge type -按以下步骤使用 **Schema** 修改Edge type: +按以下步骤使用 **Schema** 修改 Edge type: 1. 在工具栏中,点击 **Schema** 页签。 @@ -57,7 +57,7 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 3. 在 **当前图空间** 里确认图空间名称。用户也可以通过选择图空间名称完成图空间切换。 -4. 点击 **边类型** 页签,找到需要修改的Edge type,并在 **操作** 列中,点击 ![表示修改的图标](../figs/st-ug-021.png "修改") 图标。 +4. 点击 **边类型** 页签,找到需要修改的 Edge type,并在 **操作** 列中,点击 ![表示修改的图标](../figs/st-ug-021.png "修改") 图标。 5. 在 **编辑** 页面,用户可以选择以下操作: @@ -65,18 +65,18 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 - 如果要修改属性:在 **定义属性** 面板上,找到需要修改的属性,在右侧点击 **编辑**,再修改属性的数据类型或者默认值。修改完成后,点击 **确认** 或 **取消**。 - 如果要删除属性:在 **定义属性** 面板上,找到需要删除的属性,在右侧点击 **删除**,经确认后,删除属性。 - 如果要添加属性:在 **定义属性** 面板上,点击 **添加属性** 按钮,添加属性信息。 - - 如果要修改 TTL:在 **设置TTL** 面板上,修改或 `TTL_COL` 和 `TTL_DURATION` 设置。 - - 如果要删除所有已经配置的 TTL:在 **设置TTL** 面板的左上角,点击勾选框,取消选择。 - - 如果要设置 TTL:在 **设置TTL** 面板的左上角,点击勾选框,开始设置 TTL。 + - 如果要修改 TTL:在 **设置 TTL** 面板上,修改或 `TTL_COL` 和 `TTL_DURATION` 设置。 + - 如果要删除所有已经配置的 TTL:在 **设置 TTL** 面板的左上角,点击勾选框,取消选择。 + - 如果要设置 TTL:在 **设置 TTL** 面板的左上角,点击勾选框,开始设置 TTL。 -6. 完成设置后,在 **对应的nGQL语句** 面板上,用户能看到修改后的 nGQL 语句。 +6. 完成设置后,在 **对应的 nGQL 语句** 面板上,用户能看到修改后的 nGQL 语句。 -## 删除Edge type +## 删除 Edge type !!! danger 删除 Edge type 前先确认[影响](../../3.ngql-guide/11.edge-type-statements/2.drop-edge.md),已删除的数据如未[备份](../../7.data-security/3.manage-snapshot.md)无法恢复。 -按以下步骤使用 **Schema** 删除Edge type: +按以下步骤使用 **Schema** 删除 Edge type: 1. 在工具栏中,点击 **Schema** 页签。 @@ -84,10 +84,10 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 3. 在 **当前图空间** 里确认图空间名称。用户也可以通过选择图空间名称切换图空间。 -4. 点击 **边类型** 页签,找到需要修改的Edge type,并在 **操作** 列中,点击 ![表示删除的图标](../figs/st-ug-017.png "删除") 图标。 +4. 点击 **边类型** 页签,找到需要修改的 Edge type,并在 **操作** 列中,点击 ![表示删除的图标](../figs/st-ug-017.png "删除") 图标。 5. 在弹出的对话框中点击 **确认**。 ## 后续操作 -Edge type创建成功后,用户可以在 **控制台** 上逐条插入边数据,或者使用 **导入** 功能批量插入边数据。 +Edge type 创建成功后,用户可以在 **控制台** 上逐条插入边数据,或者使用 **导入** 功能批量插入边数据。 diff --git a/docs-2.0/nebula-studio/manage-schema/st-ug-crud-index.md b/docs-2.0/nebula-studio/manage-schema/st-ug-crud-index.md index f2ec1a44f1a..9fc36e6abe7 100644 --- a/docs-2.0/nebula-studio/manage-schema/st-ug-crud-index.md +++ b/docs-2.0/nebula-studio/manage-schema/st-ug-crud-index.md @@ -4,11 +4,11 @@ !!! Note - 一般在创建了 Tag 或者 Edge type 之后即可创建索引,但是,索引会影响写性能,所以,建议先导入数据,再批量重建索引。关于索引的详细信息,参考[《nGQL 用户手册》](../../3.ngql-guide/14.native-index-statements/README.md "点击前往 Nebula Graph 网站")。 + 一般在创建了 Tag 或者 Edge type 之后即可创建索引,但是,索引会影响写性能,所以,建议先导入数据,再批量重建索引。关于索引的详细信息,参考 [《nGQL 用户手册》](../../3.ngql-guide/14.native-index-statements/README.md "点击前往 Nebula Graph 网站")。 ## 支持版本 -Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参考 [版本更新](../about-studio/st-ug-check-updates.md)。 +Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参考[版本更新](../about-studio/st-ug-check-updates.md)。 ## 前提条件 @@ -33,7 +33,7 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 5. 在 **创建** 页面上,完成以下设置: - **索引类型**:确认或修改索引类型,即 **Tag** 或者 **Edge type**。本示例中选择 **Edge type**。 - - **名称**:选择要创建索引的Tag或Edge type名称。本示例中选择 **follow**。 + - **名称**:选择要创建索引的 Tag 或 Edge type 名称。本示例中选择 **follow**。 - **索引名称**:按规定指定索引名称。本示例中输入 **follow_index**。 - **索引属性**:点击 **添加**,在 **选择关联的属性** 列表里选择需要索引的属性,并点击 **确定** 按钮。如果需要关联多个属性,重复这一步操作。用户可以按界面提示重排索引属性的顺序。本示例中选择 `degree`。 @@ -41,10 +41,10 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 索引属性的顺序会影响 `LOOKUP` 语句的查询结果。详细信息,参考 [《nGQL 用户手册》](../../3.ngql-guide/7.general-query-statements/5.lookup.md "点击前往 Nebula Graph 网站")。 - - **描述**:输入对索引的描述,最大为256字节。默认无描述。本示例为 `follow_index`。 + - **描述**:输入对索引的描述,最大为 256 字节。默认无描述。本示例为 `follow_index`。 -6. 完成设置后,在 **对应的 nGQL**面板,用户能看到与上述配置等价的 nGQL 语句。 -![为Edge type action 创建索引](../figs/st-ug-023-2.png "创建索引") +6. 完成设置后,在 **对应的 nGQL **面板,用户能看到与上述配置等价的 nGQL 语句。 +![为 Edge type action 创建索引](../figs/st-ug-023-2.png "创建索引") 7. 确认无误后,点击 **+ 创建** 按钮。 如果索引创建成功,**定义属性**面板会显示这个索引的属性列表。 diff --git a/docs-2.0/nebula-studio/manage-schema/st-ug-crud-space.md b/docs-2.0/nebula-studio/manage-schema/st-ug-crud-space.md index bf6f41cc096..1ec0e7ad4d3 100644 --- a/docs-2.0/nebula-studio/manage-schema/st-ug-crud-space.md +++ b/docs-2.0/nebula-studio/manage-schema/st-ug-crud-space.md @@ -4,7 +4,7 @@ Studio 连接到 Nebula Graph 数据库后,用户可以创建或删除图空 ## 支持版本 -Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参考 [版本更新](../about-studio/st-ug-check-updates.md)。 +Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参考[版本更新](../about-studio/st-ug-check-updates.md)。 ## 前提条件 @@ -29,11 +29,11 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 - **vid type**:图空间中点 ID(VID)的数据类型,可选值为定长字符串 `FIXED_STRING()` 或 `INT64`,一旦定义无法修改。本示例设置为`FIXED_STRING(32)`,参考 [VID](../../1.introduction/3.vid.md)。 - - **描述**:图空间的描述,最大为256字节。默认无描述。本示例设置为`Statistics of basketball players`。 + - **描述**:图空间的描述,最大为 256 字节。默认无描述。本示例设置为`Statistics of basketball players`。 - **选填参数**:分别设置 `partition_num`、`replica_factor` 的值。在本示例中,两个参数分别设置为 `100`、`1`。详细信息,参考 [`CREATE SPACE` 语法](../../3.ngql-guide/9.space-statements/1.create-space.md "点击前往 CREATE SPACE")。 - 在 **对应的nGQL语句** 面板上,用户能看到上述设置对应的 nGQL 语句。如下所示: + 在 **对应的 nGQL 语句** 面板上,用户能看到上述设置对应的 nGQL 语句。如下所示: ```ngql CREATE SPACE basketballplayer (partition_num = 100, replica_factor = 1, vid_type = FIXED_STRING(32)) COMMENT = "Statistics of basketball players" @@ -64,6 +64,6 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 图空间创建成功后,用户可以开始创建或修改 Schema,包括: -- [操作Tag](st-ug-crud-tag.md) -- [操作Edge type](st-ug-crud-edge-type.md) +- [操作 Tag](st-ug-crud-tag.md) +- [操作 Edge type](st-ug-crud-edge-type.md) - [操作索引](st-ug-crud-index.md) diff --git a/docs-2.0/nebula-studio/manage-schema/st-ug-crud-tag.md b/docs-2.0/nebula-studio/manage-schema/st-ug-crud-tag.md index 2e96e28b185..14b59552b6b 100644 --- a/docs-2.0/nebula-studio/manage-schema/st-ug-crud-tag.md +++ b/docs-2.0/nebula-studio/manage-schema/st-ug-crud-tag.md @@ -1,22 +1,22 @@ -# 操作Tag(点类型) +# 操作 Tag(点类型) -在 Nebula Graph 数据库中创建图空间后,用户需要创建Tag(点类型)。用户可以选择使用 **控制台** 或者 **Schema** 操作Tag。本文仅说明如何使用 **Schema** 操作Tag。 +在 Nebula Graph 数据库中创建图空间后,用户需要创建 Tag(点类型)。用户可以选择使用 **控制台** 或者 **Schema** 操作 Tag。本文仅说明如何使用 **Schema** 操作 Tag。 ## 支持版本 -Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参考 [版本更新](../about-studio/st-ug-check-updates.md)。 +Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参考[版本更新](../about-studio/st-ug-check-updates.md)。 ## 前提条件 -在 Studio 上操作Tag之前,用户必须确认以下信息: +在 Studio 上操作 Tag 之前,用户必须确认以下信息: - Studio 已经连接到 Nebula Graph 数据库。 - 图空间已经创建。 - 当前登录的账号拥有 GOD、ADMIN 或者 DBA 的权限。 -## 创建Tag +## 创建 Tag -按以下步骤使用 **Schema** 创建Tag: +按以下步骤使用 **Schema** 创建 Tag: 1. 在工具栏中,点击 **Schema** 页签。 @@ -28,26 +28,26 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 5. 在 **创建** 页面上,完成以下设置: - a. **名称**:按提示信息输入合规的Tag名称。本示例中,输入 `player` 和 `team`。 + a. **名称**:按提示信息输入合规的 Tag 名称。本示例中,输入 `player` 和 `team`。 - b. (可选)如果Tag需要属性,在 **定义属性** 模块左上角,点击勾选框,并在展开的列表中,完成以下操作: + b. (可选)如果 Tag 需要属性,在 **定义属性** 模块左上角,点击勾选框,并在展开的列表中,完成以下操作: - 输入属性名称、数据类型和默认值。 - - 如果一个Tag有多个属性,可以点击 **添加属性** 按钮,并定义属性。 + - 如果一个 Tag 有多个属性,可以点击 **添加属性** 按钮,并定义属性。 - 如果要删除某个属性,在该属性所在行,点击 ![表示删除的图标](../figs/st-ug-020.png "删除") 图标。 - c. (可选)Tag未设置索引时,用户可以设置 TTL:在 **设置TTL** 模块左上角,点击勾选框,并在展开的列表中设置 `TTL_COL` 和 `TTL_DURATION` 参数信息。关于这两个参数的详细信息,参考 [TTL 配置](../../3.ngql-guide/8.clauses-and-options/ttl-options.md "点击前往 Nebula Graph 网站")。 + c. (可选)Tag 未设置索引时,用户可以设置 TTL:在 **设置 TTL** 模块左上角,点击勾选框,并在展开的列表中设置 `TTL_COL` 和 `TTL_DURATION` 参数信息。关于这两个参数的详细信息,参考 [TTL 配置](../../3.ngql-guide/8.clauses-and-options/ttl-options.md "点击前往 Nebula Graph 网站")。 -6. 完成设置后,在 **对应的 nGQL**面板,用户能看到与上述配置等价的 nGQL 语句。 +6. 完成设置后,在 **对应的 nGQL **面板,用户能看到与上述配置等价的 nGQL 语句。 7. 确认无误后,点击 **+ 创建** 按钮。 - 如果Tag创建成功,**定义属性**面板会显示这个Tag的属性列表。 + 如果 Tag 创建成功,**定义属性** 面板会显示这个 Tag 的属性列表。 -## 修改Tag +## 修改 Tag -按以下步骤使用 **Schema** 修改Tag: +按以下步骤使用 **Schema** 修改 Tag: 1. 在工具栏中,点击 **Schema** 页签。 @@ -55,26 +55,26 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 3. 在 **当前图空间** 里确认图空间名称。用户也可以通过选择图空间名称切换图空间。 -4. 点击 **标签** 页签,找到需要修改的Tag,并在 **操作** 列中,点击 ![表示修改的图标](../figs/st-ug-021.png "修改") 图标。 +4. 点击 **标签** 页签,找到需要修改的 Tag,并在 **操作** 列中,点击 ![表示修改的图标](../figs/st-ug-021.png "修改") 图标。 5. 在 **编辑** 页面,用户可以选择以下操作: - 如果要修改描述:在 **名称** 下方,点击编辑进行修改。 - 如果要修改属性:在 **定义属性** 面板上,找到需要修改的属性,在右侧点击 **编辑**,再修改属性的数据类型和默认值。之后,点击 **确认** 或者 **取消** 完成修改。 - 如果要删除属性:在 **定义属性** 面板上,找到需要删除的属性,在右侧点击 **删除**,经确认后,删除属性。 - - 如果要添加属性:在 **定义属性**面板上,点击 **添加属性** 按钮,添加属性信息。详细操作,参考 创建Tag面板。 - - 如果配置了 TTL,要修改 TTL 信息:在 **设置TTL** 面板上,修改 `TTL_COL` 和 `TTL_DURATION` 配置。 - - 如果要删除已经配置的 TTL 信息:在 **设置TTL** 面板的左上角,点击勾选框,取消选择。 - - 如果要配置 TTL 信息:在 **使用TTL** 面板的右上角,点击勾选框,开始设置 TTL 信息。 + - 如果要添加属性:在 **定义属性**面板上,点击 **添加属性** 按钮,添加属性信息。详细操作,参考 创建 Tag 面板。 + - 如果配置了 TTL,要修改 TTL 信息:在 **设置 TTL** 面板上,修改 `TTL_COL` 和 `TTL_DURATION` 配置。 + - 如果要删除已经配置的 TTL 信息:在 **设置 TTL** 面板的左上角,点击勾选框,取消选择。 + - 如果要配置 TTL 信息:在 **使用 TTL** 面板的右上角,点击勾选框,开始设置 TTL 信息。 6. 完成设置后,在 **对应的 nGQL** 面板上,用户能看到修改后的 nGQL 语句。 -## 删除Tag +## 删除 Tag !!! danger - 删除Tag前先确认[影响](../../3.ngql-guide/10.tag-statements/2.drop-tag.md),已删除的数据如未[备份](../../7.data-security/3.manage-snapshot.md)无法恢复。 + 删除 Tag 前先确认[影响](../../3.ngql-guide/10.tag-statements/2.drop-tag.md),已删除的数据如未[备份](../../7.data-security/3.manage-snapshot.md)无法恢复。 -按以下步骤使用 **Schema** 删除Tag: +按以下步骤使用 **Schema** 删除 Tag: 1. 在工具栏中,点击 **Schema** 页签。 @@ -82,10 +82,10 @@ Studio v{{ studio.release }} 及以后版本。请更新版本,详细操作参 3. 在 **当前图空间** 里确认图空间名称。用户也可以通过选择图空间名称切换图空间。 -4. 点击 **标签** 页签,找到需要修改的Tag,并在 **操作** 列中,点击 ![表示删除的图标](../figs/st-ug-017.png "删除") 图标。 +4. 点击 **标签** 页签,找到需要修改的 Tag,并在 **操作** 列中,点击 ![表示删除的图标](../figs/st-ug-017.png "删除") 图标。 5. 在弹出的对话框中点击 **确认**。 ## 后续操作 -Tag创建成功后,用户可以在 **控制台** 上逐条插入点数据,或者使用 **导入** 功能批量插入点数据。 +Tag 创建成功后,用户可以在 **控制台** 上逐条插入点数据,或者使用 **导入** 功能批量插入点数据。 diff --git a/docs-2.0/nebula-studio/quick-start/st-ug-create-schema.md b/docs-2.0/nebula-studio/quick-start/st-ug-create-schema.md index f28c201102a..938e797ff2c 100644 --- a/docs-2.0/nebula-studio/quick-start/st-ug-create-schema.md +++ b/docs-2.0/nebula-studio/quick-start/st-ug-create-schema.md @@ -4,7 +4,7 @@ !!! Note - 用户也可以使用 nebula-console 创建 Schema。详细信息,参考 [Nebula Graph使用手册](../../README.md) 和 [Nebula Graph 快速开始](../../2.quick-start/1.quick-start-workflow.md)。 + 用户也可以使用 nebula-console 创建 Schema。详细信息,参考 [Nebula Graph 使用手册](../../README.md)和 [Nebula Graph 快速开始](../../2.quick-start/1.quick-start-workflow.md)。 ## 前提条件 @@ -26,9 +26,9 @@ 按以下步骤使用 **Schema** 创建 Schema: -1. 创建Tag。详细信息,参考 [操作Tag](../manage-schema/st-ug-crud-tag.md)。 +1. 创建 Tag。详细信息,参考[操作 Tag](../manage-schema/st-ug-crud-tag.md)。 -2. 创建Edge type。详细信息,参考 [操作Edge type](../manage-schema/st-ug-crud-edge-type.md)。 +2. 创建 Edge type。详细信息,参考[操作 Edge type](../manage-schema/st-ug-crud-edge-type.md)。 ## 使用控制台创建 Schema @@ -36,36 +36,36 @@ 1. 在工具栏里,点击 **控制台** 页签。 -2. 在 **当前Space** 中选择一个图空间。在本示例中,选择 **basketballplayer**。 +2. 在 **当前 Space** 中选择一个图空间。在本示例中,选择 **basketballplayer**。 - ![在当前Space 中选择一个图空间](../figs/st-ug-007-1.png "选择图空间") + ![在当前 Space 中选择一个图空间](../figs/st-ug-007-1.png "选择图空间") 3. 在命令行中,依次输入以下语句,并点击 ![表示运行的图标](../figs/st-ug-008.png "Run 图标") 图标。 ```nGQL - -- 创建Tag player,带有 2 个属性 + -- 创建 Tag player,带有 2 个属性 CREATE TAG player(name string, age int); - -- 创建Tag team,带有 1 个属性 + -- 创建 Tag team,带有 1 个属性 CREATE TAG team(name string); - -- 创建Edge type follow,带有 1 个属性 + -- 创建 Edge type follow,带有 1 个属性 CREATE EDGE follow(degree int); - -- 创建Edge type serve,带有 2 个属性 + -- 创建 Edge type serve,带有 2 个属性 CREATE EDGE serve(start_year int, end_year int); ``` -至此,用户已经完成了 Schema 创建。用户可以运行以下语句查看Tag与Edge type的定义是否正确、完整。 +至此,用户已经完成了 Schema 创建。用户可以运行以下语句查看 Tag 与 Edge type 的定义是否正确、完整。 ```nGQL --- 列出当前图空间中所有Tag +-- 列出当前图空间中所有 Tag SHOW TAGS; --- 列出当前图空间中所有Edge type +-- 列出当前图空间中所有 Edge type SHOW EDGES; --- 查看每种Tag和Edge type的结构是否正确 +-- 查看每种 Tag 和 Edge type 的结构是否正确 DESCRIBE TAG player; DESCRIBE TAG team; DESCRIBE EDGE follow; @@ -74,4 +74,4 @@ DESCRIBE EDGE serve; ## 后续操作 -创建 Schema 后,用户可以开始 [导入数据](st-ug-import-data.md)。 +创建 Schema 后,用户可以开始[导入数据](st-ug-import-data.md)。 diff --git a/docs-2.0/nebula-studio/quick-start/st-ug-explore.md b/docs-2.0/nebula-studio/quick-start/st-ug-explore.md index c70e4917af9..f7642da4326 100644 --- a/docs-2.0/nebula-studio/quick-start/st-ug-explore.md +++ b/docs-2.0/nebula-studio/quick-start/st-ug-explore.md @@ -8,8 +8,8 @@ 以查询代表球员 `player100` 与球队 `team204` 的边的属性为例: -* 在 **控制台** 页面:运行 `FETCH PROP ON serve "player100" -> "team204";`,数据库会返回 Rank 为0的边。返回结果后,点击 **查看子图** 按钮,将点数据查询结果导入 **图探索** 进行可视化显示。 +* 在 **控制台** 页面:运行 `FETCH PROP ON serve "player100" -> "team204";`,数据库会返回 Rank 为 0 的边。返回结果后,点击 **查看子图** 按钮,将点数据查询结果导入 **图探索** 进行可视化显示。 ![将控制台上查询得到的点数据信息导入到图探索进行可视化](../figs/st-ug-012-1.png "将点数据查询结果导入图探索") -* 在 **图探索** 页面:点击 **开始探索** 按钮,在 **指定VID** 对话框中,输入 **"player101"**,**图探索** 画布里会显示这个点,将鼠标移到点上,用户能看到这个点所有属性信息,如下图所示。 +* 在 **图探索** 页面:点击 **开始探索** 按钮,在 **指定 VID** 对话框中,输入 **"player101"**,**图探索** 画布里会显示这个点,将鼠标移到点上,用户能看到这个点所有属性信息,如下图所示。 ![可视化显示 History of Chinese Women Through Time 课程的信息](../figs/st-ug-013-1.png "按 VID 查询得到点的信息") diff --git a/docs-2.0/nebula-studio/quick-start/st-ug-import-data.md b/docs-2.0/nebula-studio/quick-start/st-ug-import-data.md index 60677a3e24e..152eae61a63 100644 --- a/docs-2.0/nebula-studio/quick-start/st-ug-import-data.md +++ b/docs-2.0/nebula-studio/quick-start/st-ug-import-data.md @@ -20,13 +20,13 @@ 1. 在工具栏里,点击 **导入** 页签。 -2. 在 **选择Space** 页面,选择一个图空间,再点击 **下一步** 按钮。 +2. 在 **选择 Space** 页面,选择一个图空间,再点击 **下一步** 按钮。 3. 在 **上传文件** 页面,点击 **上传文件** 按钮,并选择需要的 CSV 文件。本示例中,选择 `edge_serve.csv`、`edge_follow.csv`、`vertex_player.csv` 和 `vertex_team.csv` 文件。 !!! Note - 一次可以选择多个 CSV 文件,本文使用的 CSV 文件可以在[规划 Schema ](st-ug-plan-schema.md)中下载。 + 一次可以选择多个 CSV 文件,本文使用的 CSV 文件可以在[规划 Schema ](st-ug-plan-schema.md) 中下载。 4. 在文件列表的 **操作** 列,点击 **预览** 或 **删除**,保证文件信息正确,之后,再点击 **下一步** 按钮。 @@ -42,25 +42,25 @@ !!! Note - 在同一个图空间中,VID 始终唯一,不可重复。关于 VID 的信息,参考 [Nebula Graph 的点ID](../../1.introduction/3.vid.md) "点击进入 Nebula Graph 用户手册"。 + 在同一个图空间中,VID 始终唯一,不可重复。关于 VID 的信息,参考 [Nebula Graph 的点 ID](../../1.introduction/3.vid.md) "点击进入 Nebula Graph 用户手册"。 8. 在 **TAG 1** 部分,完成以下操作: - 3. 在 **TAG** 下拉列表中,选择数据源对应的Tag名称。在本示例中,`vertex_player.csv` 文件对应选择 **player**;`vertex_team.csv` 文件对应选择 **team**。 + 3. 在 **TAG** 下拉列表中,选择数据源对应的 Tag 名称。在本示例中,`vertex_player.csv` 文件对应选择 **player**;`vertex_team.csv` 文件对应选择 **team**。 - 4. 在显示的属性列表中,点击 **选择**,为Tag属性绑定源数据。在本示例中,`player` 标签的 `name` 属性对应 `vertex_player.csv` 文件中的 **Column 2** 列,**类型** 为 **string**,`age` 属性对应文件中的 **Column 1** 列,**类型** 为 **int**;`team` 标签的 `name` 属性对应 `vertex_team.csv` 文件中的 **Column 1** 列,**类型** 为 **string**。 + 4. 在显示的属性列表中,点击 **选择**,为 Tag 属性绑定源数据。在本示例中,`player` 标签的 `name` 属性对应 `vertex_player.csv` 文件中的 **Column 2** 列,**类型** 为 **string**,`age` 属性对应文件中的 **Column 1** 列,**类型** 为 **int**;`team` 标签的 `name` 属性对应 `vertex_team.csv` 文件中的 **Column 1** 列,**类型** 为 **string**。 - ![course类点对应的属性数据源](../figs/st-ug-010-1.png "为点属性选择数据源") + ![course 类点对应的属性数据源](../figs/st-ug-010-1.png "为点属性选择数据源") -9. (可选)如果有多个Tag数据文件,重复步骤 5 到步骤 8。 +9. (可选)如果有多个 Tag 数据文件,重复步骤 5 到步骤 8。 10. 完成配置后,点击 **下一步**。 - 界面提示 **配置验证成功**,表示Tag数据源绑定成功。 + 界面提示 **配置验证成功**,表示 Tag 数据源绑定成功。 11. 在 **关联边** 页面,点击 **+ 绑定数据源** 按钮,在对话框中选择边数据文件,并点击 **确认** 按钮。如本示例中的 `edge_follow.csv` 文件。 -12. 在 **Edge X** 页签的 **类型** 下拉列表中,选择Edge type名称。本示例中,选择 **follow**。 +12. 在 **Edge X** 页签的 **类型** 下拉列表中,选择 Edge type 名称。本示例中,选择 **follow**。 -13. 根据Edge type的属性,从 `edge_follow.csv` 文件中选择相应的数据列。其中,**srcId** 和 **dstId** 分别表示边的起点与终点,所选择的数据及处理方式必须与相应的 VID 保持一致。本示例中,**srcId** 对应的是表示起点球员的 VID,**dstId** 对应的是表示终点球员的 VID。**rank** 为选填项,可以忽略。 +13. 根据 Edge type 的属性,从 `edge_follow.csv` 文件中选择相应的数据列。其中,**srcId** 和 **dstId** 分别表示边的起点与终点,所选择的数据及处理方式必须与相应的 VID 保持一致。本示例中,**srcId** 对应的是表示起点球员的 VID,**dstId** 对应的是表示终点球员的 VID。**rank** 为选填项,可以忽略。 ![actions 边对应的属性数据源](../figs/st-ug-011-1.png "为边属性选择数据源") @@ -73,4 +73,4 @@ ## 后续操作 -完成数据导入后,用户可以开始 [图探索](st-ug-explore.md)。 +完成数据导入后,用户可以开始[图探索](st-ug-explore.md)。 diff --git a/docs-2.0/nebula-studio/quick-start/st-ug-plan-schema.md b/docs-2.0/nebula-studio/quick-start/st-ug-plan-schema.md index 31927a5d1c5..f8063f21d1d 100644 --- a/docs-2.0/nebula-studio/quick-start/st-ug-plan-schema.md +++ b/docs-2.0/nebula-studio/quick-start/st-ug-plan-schema.md @@ -4,11 +4,11 @@ Schema 至少要包含以下要素: -* Tag,以及每种Tag的属性。 +* Tag,以及每种 Tag 的属性。 -* Edge type,以及每种Edge type的属性。 +* Edge type,以及每种 Edge type 的属性。 -用户可以下载Nebula Graph示例数据集[basketballplayer](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip "点击下载") ,本文将通过该实例说明如何规划 Schema。 +用户可以下载 Nebula Graph 示例数据集 [basketballplayer](https://docs-cdn.nebula-graph.com.cn/dataset/dataset.zip "点击下载") ,本文将通过该实例说明如何规划 Schema。 下表列出了 Schema 要素。 diff --git a/docs-2.0/nebula-studio/st-ug-toc.md b/docs-2.0/nebula-studio/st-ug-toc.md deleted file mode 100644 index cc3881a3608..00000000000 --- a/docs-2.0/nebula-studio/st-ug-toc.md +++ /dev/null @@ -1,37 +0,0 @@ -# Nebula Graph Studio 用户手册 - -- 认识 Nebula Graph Studio - - [什么是 Nebula Graph Studio](about-studio/st-ug-what-is-graph-studio.md) - - [名词解释](about-studio/st-ug-terms.md) - - [使用限制](about-studio/st-ug-limitations.md) - - [版本更新](about-studio/st-ug-check-updates.md) - - [快捷键](about-studio/st-ug-shortcuts.md) -- 安装与登录 - - [部署 Studio](deploy-connect/st-ug-deploy.md) - - [连接数据库](deploy-connect/st-ug-connect.md) - - [清除连接](deploy-connect/st-ug-reset-connection.md) -- 快速开始 - - [规划 Schema](quick-start/st-ug-plan-schema.md) - - - [创建 Schema](quick-start/st-ug-create-schema.md) - - [导入数据](quick-start/st-ug-import-data.md) - - [查询图数据](quick-start/st-ug-explore.md) -- 操作指南 - - 管理 Schema - - [操作图空间](manage-schema/st-ug-crud-space.md) - - [操作Tag](manage-schema/st-ug-crud-tag.md) - - [操作Edge type](manage-schema/st-ug-crud-edge-type.md) - - [操作索引](manage-schema/st-ug-crud-index.md) - - 使用图探索[TODO] - - 使用控制台 - - [控制台界面](use-console/st-ug-console.md) - - [导入图探索](use-console/st-ug-open-in-explorer.md) - - [查看子图](use-console/st-ug-visualize-findpath.md) -- 最佳实践 [TODO] -- 故障排查 - - [连接数据库错误](troubleshooting/st-ug-connection-errors.md) - - [无法访问 Studio](troubleshooting/st-ug-connection-errors.md) - - [常见问题](troubleshooting/st-ug-faq.md) - - 错误信息 [TODO] - -\* 本页面所列 [TODO] 仅表示文档尚未完成,并非表示 Studio 不具备相应的功能。 diff --git a/docs-2.0/nebula-studio/troubleshooting/st-ug-config-server-errors.md b/docs-2.0/nebula-studio/troubleshooting/st-ug-config-server-errors.md index 51c7196f814..e25434c57dd 100644 --- a/docs-2.0/nebula-studio/troubleshooting/st-ug-config-server-errors.md +++ b/docs-2.0/nebula-studio/troubleshooting/st-ug-config-server-errors.md @@ -2,28 +2,28 @@ ## 问题描述 -按 [连接 Studio](../deploy-connect/st-ug-connect.md) 文档操作,提示 **配置失败**。 +按[连接 Studio](../deploy-connect/st-ug-connect.md) 文档操作,提示 **配置失败**。 ## 可能的原因及解决方法 用户可以按以下步骤排查问题。 -### 第 1 步. 确认 **Host** 字段的格式是否正确 +### 第 1 步。确认 **Host** 字段的格式是否正确 必须填写 Nebula Graph 图数据库 Graph 服务的 IP 地址(`graph_server_ip`)和端口。如果未做修改,端口默认为 `9669`。即使 Nebula Graph 与 Studio 都部署在当前机器上,用户也必须使用本机 IP 地址,而不能使用 `127.0.0.1`、`localhost` 或者 `0.0.0.0`。 -### 第 2 步. 确认 **用户名** 和 **密码** 是否正确 +### 第 2 步。确认 **用户名** 和 **密码** 是否正确 如果 Nebula Graph 没有开启身份认证,用户可以填写任意字符串登录。 如果已经开启身份认证,用户必须使用分配的账号登录。 -### 第 3 步. 确认 Nebula Graph 服务是否正常 +### 第 3 步。确认 Nebula Graph 服务是否正常 检查 Nebula Graph 服务状态。关于查看服务的操作: -- 如果在 Linux 服务器上通过编译部署的 Nebula Graph,参考 [查看 Nebula Graph 服务](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md "点击查看Nebula Graph内核文档")。 -- 如果使用 Docker Compose 部署和 RPM 部署的 Nebula Graph,参考 [查看 Nebula Graph 服务状态和端口](../deploy-connect/st-ug-deploy.md "点击前往 GitHub 网站")。 +- 如果在 Linux 服务器上通过编译部署的 Nebula Graph,参考[查看 Nebula Graph 服务](../../4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md "点击查看 Nebula Graph 内核文档")。 +- 如果使用 Docker Compose 部署和 RPM 部署的 Nebula Graph,参考[查看 Nebula Graph 服务状态和端口](../deploy-connect/st-ug-deploy.md "点击前往 GitHub 网站")。 如果 Nebula Graph 服务正常,进入第 4 步继续排查问题。否则,请重启 Nebula Graph 服务。 @@ -31,7 +31,7 @@ 如果之前使用 `docker-compose up -d` 启动 Nebula Graph,必须运行 `docker-compose down` 命令停止 Nebula Graph。 -### 第 4 步. 确认 Graph 服务的网络连接是否正常 +### 第 4 步。确认 Graph 服务的网络连接是否正常 在 Studio 机器上运行命令(例如 `telnet 9669`)确认 Nebula Graph 的 Graph 服务网络连接是否正常。 @@ -40,4 +40,4 @@ - 如果 Studio 与 Nebula Graph 在同一台机器上,检查端口是否已暴露。 - 如果两者不在同一台机器上,检查 Nebula Graph 服务器的网络配置,例如,防火墙、网关以及端口。 -如果按上述步骤排查后仍无法连接 Nebula Graph 服务,请前往 [Nebula Graph 官方论坛](https://discuss.nebula-graph.com.cn/ "点击前往 Nebula Graph 官方论坛") 咨询。 +如果按上述步骤排查后仍无法连接 Nebula Graph 服务,请前往 [Nebula Graph 官方论坛](https://discuss.nebula-graph.com.cn/ "点击前往 Nebula Graph 官方论坛")咨询。 diff --git a/docs-2.0/nebula-studio/troubleshooting/st-ug-connection-errors.md b/docs-2.0/nebula-studio/troubleshooting/st-ug-connection-errors.md index e1d8b6cfc32..f6cf2f56bb2 100644 --- a/docs-2.0/nebula-studio/troubleshooting/st-ug-connection-errors.md +++ b/docs-2.0/nebula-studio/troubleshooting/st-ug-connection-errors.md @@ -8,11 +8,11 @@ 用户可以按以下顺序排查问题。 -### 第 1 步. 确认系统架构 +### 第 1 步。确认系统架构 需要确认部署 Studio 服务的机器是否为 x86_64 架构。目前 Studio 仅支持 x86_64 系统架构。 -### 第 2 步. 检查 Studio 服务是否正常启动 +### 第 2 步。检查 Studio 服务是否正常启动 运行 `docker-compose ps` 查看服务是否已经正常启动。 @@ -27,19 +27,19 @@ nebula-web-docker_nginx_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0: nebula-web-docker_web_1 docker-entrypoint.sh npm r ... Up 0.0.0.0:32784->7001/tcp ``` -如果没有返回以上结果,则先停止 Studio 重新启动。详细信息,参考 [部署 Studio](../deploy-connect/st-ug-deploy.md)。 +如果没有返回以上结果,则先停止 Studio 重新启动。详细信息,参考[部署 Studio](../deploy-connect/st-ug-deploy.md)。 !!! Note 如果之前使用 `docker-compose up -d` 启动 Studio,必须运行 `docker-compose down` 命令停止 Studio。 -### 第 3 步. 确认访问地址 +### 第 3 步。确认访问地址 如果 Studio 与浏览器在同一台机器上,用户可以在浏览器里使用 `localhost:7001`、`127.0.0.1:7001` 或者 `0.0.0.0:7001` 访问 Studio。 如果两者不在同一台机器上,必须在浏览器里输入 `:7001`。其中,`studio_server_ip` 是指部署 Studio 服务的机器的 IP 地址。 -### 第 4 步. 确认网络连通性 +### 第 4 步。确认网络连通性 运行 `curl :7001 -I` 确认是否正常。如果返回 `HTTP/1.1 200 OK`,表示网络连通正常。 @@ -48,4 +48,4 @@ nebula-web-docker_web_1 docker-entrypoint.sh npm r ... Up 0.0.0.0: - 如果浏览器与 Studio 在同一台机器上,检查端口是否已暴露。 - 如果两者不在同一台机器上,检查 Studio 所在机器的网络配置,例如,防火墙、网关以及端口。 -如果按上述步骤排查后仍无法访问 Studio,请前往 [Nebula Graph 官方论坛](https://discuss.nebula-graph.com.cn/ "点击前往 Nebula Graph 官方论坛") 咨询。 +如果按上述步骤排查后仍无法访问 Studio,请前往 [Nebula Graph 官方论坛](https://discuss.nebula-graph.com.cn/ "点击前往 Nebula Graph 官方论坛")咨询。 diff --git a/docs-2.0/nebula-studio/troubleshooting/st-ug-faq.md b/docs-2.0/nebula-studio/troubleshooting/st-ug-faq.md index 0c3915bab2e..3d30a11ae19 100644 --- a/docs-2.0/nebula-studio/troubleshooting/st-ug-faq.md +++ b/docs-2.0/nebula-studio/troubleshooting/st-ug-faq.md @@ -5,8 +5,8 @@ 如果发现无法使用某个功能,建议按以下步骤排除问题: 1. 确认 Nebula Graph 是最新版本。如果使用 Docker Compose 部署 Nebula Graph 数据库,建议运行 `docker-compose pull && docker-compose up -d` 拉取最新的 Docker 镜像,并启动容器。 -2. 确认 Studio 是最新版本。详细信息参考 [版本更新](../about-studio/st-ug-check-updates.md)。 -3. 搜索 [论坛](https://discuss.nebula-graph.com.cn/) 或 GitHub 的 [nebula](https://github.com/vesoft-inc/nebula) 和 [nebula-web-docker](https://github.com/vesoft-inc/nebula-web-docker/issues) 项目,确认是否已经有类似的问题。 +2. 确认 Studio 是最新版本。详细信息参考[版本更新](../about-studio/st-ug-check-updates.md)。 +3. 搜索[论坛](https://discuss.nebula-graph.com.cn/)或 GitHub 的 [nebula](https://github.com/vesoft-inc/nebula) 和 [nebula-web-docker](https://github.com/vesoft-inc/nebula-web-docker/issues) 项目,确认是否已经有类似的问题。 4. 如果上述操作均未解决问题,欢迎在论坛上提交问题。 +用户可以使用已支持的[客户端或者命令行工具](https://docs.nebula-graph.com.cn/{{nebula.release}}/20.appendix/6.eco-tool-version/)来连接 Nebula Graph 数据库。 - -## 使用Nebula Console连接Nebula Graph +## 使用 Nebula Console 连接 Nebula Graph ### 前提条件 -- Nebula Graph服务已[启动](https://docs.nebula-graph.com.cn/{{nebula.release}}/4.deployment-and-installation/manage-service/)。 +- Nebula Graph 服务已[启动](https://docs.nebula-graph.com.cn/{{nebula.release}}/4.deployment-and-installation/manage-service/)。 -- 运行Nebula Console的机器和运行Nebula Graph的服务器网络互通。 +- 运行 Nebula Console 的机器和运行 Nebula Graph 的服务器网络互通。 ### 操作步骤 -1. 在[Nebula Console](https://github.com/vesoft-inc/nebula-console/releases "the nebula-console Releases page")下载页面,确认需要的版本,单击**Assets**。 +1. 在 [Nebula Console](https://github.com/vesoft-inc/nebula-console/releases "the nebula-console Releases page") 下载页面,确认需要的版本,单击** Assets**。 !!! Note @@ -26,7 +26,7 @@ Nebula Graph支持多种类型客户端,包括CLI客户端、GUI客户端和 ![Select a Nebula Graph version and click **Assets**](../reuse/console260.png "Click Assets to show the available Nebula Graph binary files") -2. 在**Assets**区域找到机器运行所需的二进制文件,下载文件到机器上。 +2. 在** Assets **区域找到机器运行所需的二进制文件,下载文件到机器上。 ![Click to download the package according to your hardware architecture](../reuse/assets260.png "Click the package name to download it") @@ -34,23 +34,23 @@ Nebula Graph支持多种类型客户端,包括CLI客户端、GUI客户端和 !!! Note - 在Windows系统中,请重命名为`nebula-console.exe`。 + 在 Windows 系统中,请重命名为`nebula-console.exe`。 -4. 在运行Nebula Console的机器上执行如下命令,为用户授予nebula-console文件的执行权限。 +4. 在运行 Nebula Console 的机器上执行如下命令,为用户授予 nebula-console 文件的执行权限。 !!! Note - Windows系统请跳过此步骤。 + Windows 系统请跳过此步骤。 ```bash $ chmod 111 nebula-console ``` -5. 在命令行界面中,切换工作目录至nebula-console文件所在目录。 +5. 在命令行界面中,切换工作目录至 nebula-console 文件所在目录。 -6. 执行如下命令连接Nebula Graph。 +6. 执行如下命令连接 Nebula Graph。 - - Linux或macOS + - Linux 或 macOS ```bash $ ./nebula-console -addr -port -u -p @@ -69,53 +69,53 @@ Nebula Graph支持多种类型客户端,包括CLI客户端、GUI客户端和 | 参数 | 说明 | | - | - | | `-h` | 显示帮助菜单。 | - | `-addr` | 设置要连接的graphd服务的IP地址。默认地址为127.0.0.1。| - | `-port` | 设置要连接的graphd服务的端口。默认端口为9669。| - | `-u/-user` | 设置Nebula Graph账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为`root`)。 | + | `-addr` | 设置要连接的 graphd 服务的 IP 地址。默认地址为 127.0.0.1。| + | `-port` | 设置要连接的 graphd 服务的端口。默认端口为 9669。| + | `-u/-user` | 设置 Nebula Graph 账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为`root`)。 | | `-p/-password` | 设置用户名对应的密码。未启用身份认证时,密码可以填写任意字符。 | - | `-t/-timeout` | 设置整数类型的连接超时时间。单位为秒,默认值为120。 | - | `-e/-eval` | 设置字符串类型的nGQL语句。连接成功后会执行一次该语句并返回结果,然后自动断开连接。 | - | `-f/-file` | 设置存储nGQL语句的文件的路径。连接成功后会执行该文件内的nGQL语句并返回结果,执行完毕后自动断开连接。 | + | `-t/-timeout` | 设置整数类型的连接超时时间。单位为秒,默认值为 120。 | + | `-e/-eval` | 设置字符串类型的 nGQL 语句。连接成功后会执行一次该语句并返回结果,然后自动断开连接。 | + | `-f/-file` | 设置存储 nGQL 语句的文件的路径。连接成功后会执行该文件内的 nGQL 语句并返回结果,执行完毕后自动断开连接。 | 用户可以使用`./nebula-console --help`命令获取所有参数的说明,也可以在[项目仓库](https://github.com/vesoft-inc/nebula-console/tree/{{console.branch}})找到更多说明。 -## Nebula Console命令 +## Nebula Console 命令 -Nebula Console提供部分命令,可以导出CSV文件、导出DOT文件、导入测试数据集等。 +Nebula Console 提供部分命令,可以导出 CSV 文件、导出 DOT 文件、导入测试数据集等。 !!! note 命令不区分大小写。 -### 导出CSV文件 +### 导出 CSV 文件 -CSV文件用于保存命令执行的返回结果。 +CSV 文件用于保存命令执行的返回结果。 !!! note - - CSV文件保存在当前工作目录中,即Linux命令`pwd`显示的目录。 + - CSV 文件保存在当前工作目录中,即 Linux 命令`pwd`显示的目录。 - 命令只对下一条查询语句生效。 -导出CSV文件命令如下: +导出 CSV 文件命令如下: ```ngql nebula> :CSV ``` -### 导出DOT文件 +### 导出 DOT 文件 -DOT文件同样用于保存命令执行的返回结果,其保存的结果信息和CSV文件不同。 +DOT 文件同样用于保存命令执行的返回结果,其保存的结果信息和 CSV 文件不同。 !!! Note - - DOT文件保存在当前工作目录中,即Linux命令`pwd`显示的目录。 + - DOT 文件保存在当前工作目录中,即 Linux 命令`pwd`显示的目录。 - - DOT文件的内容可以复制后在[GraphvizOnline](https://dreampuf.github.io/GraphvizOnline/)网页中粘贴,生成可视化的执行计划图。 + - DOT 文件的内容可以复制后在 [GraphvizOnline](https://dreampuf.github.io/GraphvizOnline/) 网页中粘贴,生成可视化的执行计划图。 - 命令只对下一条查询语句生效。 -导出DOT文件命令如下: +导出 DOT 文件命令如下: ```ngql nebula> :dot @@ -130,7 +130,7 @@ nebula> PROFILE FORMAT="dot" GO FROM "player100" OVER follow; ### 加载测试数据集 -测试数据集名称为nba,详细Schema信息和数据信息请使用相关`SHOW`命令查看。 +测试数据集名称为 nba,详细 Schema 信息和数据信息请使用相关`SHOW`命令查看。 加载测试数据集命令如下: @@ -140,7 +140,7 @@ nebula> :play nba ### 重复执行 -重复执行下一个命令N次,然后打印平均执行时间。命令如下: +重复执行下一个命令 N 次,然后打印平均执行时间。命令如下: ```ngql nebula> :repeat N @@ -186,7 +186,7 @@ Executed 3 times, (total time spent 3681/4734 us), (average time spent 1227/1578 ### 睡眠 -睡眠N秒。常用于修改Schema的操作中,因为修改Schema是异步实现的,需要在下一个心跳周期才同步数据。命令如下: +睡眠 N 秒。常用于修改 Schema 的操作中,因为修改 Schema 是异步实现的,需要在下一个心跳周期才同步数据。命令如下: ```ngql nebula> :sleep N @@ -194,7 +194,7 @@ nebula> :sleep N ### 断开连接 -用户可以使用`:EXIT`或者`:QUIT`从Nebula Graph断开连接。为方便使用,Nebula Console支持使用不带冒号(:)的小写命令,例如`quit`。 +用户可以使用`:EXIT`或者`:QUIT`从 Nebula Graph 断开连接。为方便使用,Nebula Console 支持使用不带冒号(:)的小写命令,例如`quit`。 示例: @@ -206,6 +206,6 @@ Bye root! ## 常见问题 -### 如何通过源码安装Nebula Console? +### 如何通过源码安装 Nebula Console? -下载和编译Nebula Console的最新源码,请参见[GitHub nebula console](https://github.com/vesoft-inc/nebula-console#build-nebula-graph-console)页面的说明。 +下载和编译 Nebula Console 的最新源码,请参见 [GitHub nebula console](https://github.com/vesoft-inc/nebula-console#build-nebula-graph-console) 页面的说明。 diff --git a/docs-2.0/reuse/source_install-nebula-graph-by-rpm-or-deb.md b/docs-2.0/reuse/source_install-nebula-graph-by-rpm-or-deb.md index c534cfebbc9..92e123a2244 100644 --- a/docs-2.0/reuse/source_install-nebula-graph-by-rpm-or-deb.md +++ b/docs-2.0/reuse/source_install-nebula-graph-by-rpm-or-deb.md @@ -1,8 +1,8 @@ -RPM和DEB是Linux系统下常见的两种安装包格式,本文介绍如何使用RPM或DEB文件在一台机器上快速安装Nebula Graph。 +RPM 和 DEB 是 Linux 系统下常见的两种安装包格式,本文介绍如何使用 RPM 或 DEB 文件在一台机器上快速安装 Nebula Graph。 !!! note - 部署Nebula Graph集群的方式参见[使用RPM/DEB包部署集群](https://docs.nebula-graph.com.cn/{{nebula.release}}/4.deployment-and-installation/deploy-nebula-graph-cluster/)。 + 部署 Nebula Graph 集群的方式参见[使用 RPM/DEB 包部署集群](https://docs.nebula-graph.com.cn/{{nebula.release}}/4.deployment-and-installation/deploy-nebula-graph-cluster/)。 !!! enterpriseonly @@ -10,15 +10,15 @@ RPM和DEB是Linux系统下常见的两种安装包格式,本文介绍如何使 ## 前提条件 -安装wget +安装 wget ## 下载安装包 -### 阿里云OSS下载 +### 阿里云 OSS 下载 -- 下载release版本 +- 下载 release 版本 - URL格式如下: + URL 格式如下: ```bash //Centos 7 @@ -50,14 +50,14 @@ RPM和DEB是Linux系统下常见的两种安装包格式,本文介绍如何使 wget https://oss-cdn.nebula-graph.com.cn/package/{{ nebula.release }}/nebula-graph-{{ nebula.release }}.ubuntu1804.amd64.deb.sha256sum.txt ``` -- 下载日常开发版本(nightly) +- 下载日常开发版本 (nightly) !!! danger - + - nightly 版本通常用于测试新功能、新特性,请**不要**在生产环境中使用 nightly 版本。 - nightly 版本不保证每日都能完整发布,也不保证是否会更改文件名。 - URL格式如下: + URL 格式如下: ```bash //Centos 7 @@ -76,62 +76,62 @@ RPM和DEB是Linux系统下常见的两种安装包格式,本文介绍如何使 https://oss-cdn.nebula-graph.com.cn/package/nightly//nebula-graph--nightly.ubuntu2004.amd64.deb ``` - 例如要下载`2021.11.28`适用于`Centos 7.5`的`2.x`安装包: + 例如要下载`2021.11.24`适用于`Centos 7.5`的`2.x`安装包: ```bash - wget https://oss-cdn.nebula-graph.com.cn/package/nightly/2021.11.28/nebula-graph-2021.11.28-nightly.el7.x86_64.rpm - wget https://oss-cdn.nebula-graph.com.cn/package/nightly/2021.11.28/nebula-graph-2021.11.28-nightly.el7.x86_64.rpm.sha256sum.txt + wget https://oss-cdn.nebula-graph.com.cn/package/nightly/2021.11.24/nebula-graph-2021.11.24-nightly.el7.x86_64.rpm + wget https://oss-cdn.nebula-graph.com.cn/package/nightly/2021.11.24/nebula-graph-2021.11.24-nightly.el7.x86_64.rpm.sha256sum.txt ``` - 要下载`2021.11.28`适用于`Ubuntu 1804`的`2.x`安装包: + 要下载`2021.11.24`适用于`Ubuntu 1804`的`2.x`安装包: ```bash - wget https://oss-cdn.nebula-graph.com.cn/package/nightly/2021.11.28/nebula-graph-2021.11.28-nightly.ubuntu1804.amd64.deb - wget https://oss-cdn.nebula-graph.com.cn/package/nightly/2021.11.28/nebula-graph-2021.11.28-nightly.ubuntu1804.amd64.deb.sha256sum.txt + wget https://oss-cdn.nebula-graph.com.cn/package/nightly/2021.11.24/nebula-graph-2021.11.24-nightly.ubuntu1804.amd64.deb + wget https://oss-cdn.nebula-graph.com.cn/package/nightly/2021.11.24/nebula-graph-2021.11.24-nightly.ubuntu1804.amd64.deb.sha256sum.txt ``` -## 安装Nebula Graph +## 安装 Nebula Graph -- 安装RPM包 +- 安装 RPM 包 ```bash $ sudo rpm -ivh --prefix= ``` - 例如在默认路径下安装{{nebula.release}}版本的RPM包: + 例如在默认路径下安装{{nebula.release}}版本的 RPM 包: ```bash sudo rpm -ivh nebula-graph-{{nebula.release}}.el7.x86_64.rpm - ``` + ``` -- 安装DEB包 +- 安装 DEB 包 ```bash $ sudo dpkg -i --instdir== ``` - 例如在默认路径下安装{{nebula.release}}版本的DEB包: + 例如在默认路径下安装{{nebula.release}}版本的 DEB 包: ```bash sudo dpkg -i nebula-graph-{{nebula.release}}.ubuntu1804.amd64.deb @@ -143,5 +143,7 @@ RPM和DEB是Linux系统下常见的两种安装包格式,本文介绍如何使 ## 后续操作 -- [启动Nebula Graph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/5.start-stop-service/) -- [连接Nebula Graph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.connect-to-nebula-graph/) +- (企业版)[设置 License](https://docs.nebula-graph.com.cn/{{nebula.release}}/4.deployment-and-installation/deploy-license) + +- [启动 Nebula Graph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/5.start-stop-service/) +- [连接 Nebula Graph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.connect-to-nebula-graph/) diff --git a/docs-2.0/reuse/source_manage-service.md b/docs-2.0/reuse/source_manage-service.md index 550e5042c79..258dd459b12 100644 --- a/docs-2.0/reuse/source_manage-service.md +++ b/docs-2.0/reuse/source_manage-service.md @@ -1,4 +1,4 @@ -Nebula Graph使用脚本`nebula.service`管理服务,包括启动、停止、重启、中止和查看。 +Nebula Graph 使用脚本`nebula.service`管理服务,包括启动、停止、重启、中止和查看。 `nebula.service`的默认路径是`/usr/local/nebula/scripts`,如果修改过安装路径,请使用实际路径。 @@ -20,16 +20,16 @@ $ sudo /usr/local/nebula/scripts/nebula.service |`restart`|重启服务。| |`kill`|中止服务。| |`status`|查看服务状态。| -|`metad`|管理Meta服务。| -|`graphd`|管理Graph服务。| -|`storaged`|管理Storage服务。| +|`metad`|管理 Meta 服务。| +|`graphd`|管理 Graph 服务。| +|`storaged`|管理 Storage 服务。| |`all`|管理所有服务。| -## 启动Nebula Graph服务 +## 启动 Nebula Graph 服务 ### 非容器部署 -对于使用RPM或DEB文件安装的Nebula Graph,执行如下命令启动服务: +对于使用 RPM 或 DEB 文件安装的 Nebula Graph,执行如下命令启动服务: ```bash $ sudo /usr/local/nebula/scripts/nebula.service start all @@ -43,7 +43,7 @@ $ sudo /usr/local/nebula/scripts/nebula.service start all ### 容器部署 -对于使用Docker Compose部署的Nebula Graph,在`nebula-docker-compose/`目录内执行如下命令启动服务: +对于使用 Docker Compose 部署的 Nebula Graph,在`nebula-docker-compose/`目录内执行如下命令启动服务: ```bash [nebula-docker-compose]$ docker-compose up -d @@ -60,7 +60,7 @@ Creating nebula-docker-compose_graphd2_1 ... done Creating nebula-docker-compose_graphd_1 ... done ``` -## 停止Nebula Graph服务 +## 停止 Nebula Graph 服务 !!! danger @@ -68,7 +68,7 @@ Creating nebula-docker-compose_graphd_1 ... done ### 非容器部署 -执行如下命令停止Nebula Graph服务: +执行如下命令停止 Nebula Graph 服务: ```bash $ sudo /usr/local/nebula/scripts/nebula.service stop all @@ -82,7 +82,7 @@ $ sudo /usr/local/nebula/scripts/nebula.service stop all ### 容器部署 -在`nebula-docker-compose/`目录内执行如下命令停止Nebula Graph服务: +在`nebula-docker-compose/`目录内执行如下命令停止 Nebula Graph 服务: ```bash nebula-docker-compose]$ docker-compose down @@ -109,27 +109,27 @@ Removing network nebula-docker-compose_nebula-net !!! Note - 命令`docker-compose down -v`将会**删除**所有本地Nebula Graph的数据。如果使用的是developing或nightly版本,并且有一些兼容性问题,请尝试这个命令。 + 命令`docker-compose down -v`将会**删除**所有本地 Nebula Graph 的数据。如果使用的是 developing 或 nightly 版本,并且有一些兼容性问题,请尝试这个命令。 -## 查看Nebula Graph服务 +## 查看 Nebula Graph 服务 ### 非容器部署 -执行如下命令查看Nebula Graph服务状态: +执行如下命令查看 Nebula Graph 服务状态: ```bash $ sudo /usr/local/nebula/scripts/nebula.service status all ``` -- 如果返回如下结果,表示Nebula Graph服务正常运行。 +- 如果返回如下结果,表示 Nebula Graph 服务正常运行。 ```bash - [INFO] nebula-metad(3ba41bd): Running as 26601, Listening on 9559 - [INFO] nebula-graphd(3ba41bd): Running as 26644, Listening on 9669 - [INFO] nebula-storaged(3ba41bd): Running as 26709, Listening on 9779 + [INFO] nebula-metad(de03025): Running as 26601, Listening on 9559 + [INFO] nebula-graphd(de03025): Running as 26644, Listening on 9669 + [INFO] nebula-storaged(de03025): Running as 26709, Listening on 9779 ``` -- 如果返回类似如下结果,表示Nebula Graph服务异常,可以根据异常服务信息进一步排查,或者在[Nebula Graph社区](https://discuss.nebula-graph.com.cn/)寻求帮助。 +- 如果返回类似如下结果,表示 Nebula Graph 服务异常,可以根据异常服务信息进一步排查,或者在 [Nebula Graph 社区](https://discuss.nebula-graph.com.cn/)寻求帮助。 ```bash [INFO] nebula-metad: Running as 25600, Listening on 9559 @@ -137,11 +137,11 @@ $ sudo /usr/local/nebula/scripts/nebula.service status all [INFO] nebula-storaged: Running as 25646, Listening on 9779 ``` -Nebula Graph服务由Meta服务、Graph服务和Storage服务共同提供,这三种服务的配置文件都保存在安装目录的`etc`目录内,默认路径为`/usr/local/nebula/etc/`,用户可以检查相应的配置文件排查问题。 +Nebula Graph 服务由 Meta 服务、Graph 服务和 Storage 服务共同提供,这三种服务的配置文件都保存在安装目录的`etc`目录内,默认路径为`/usr/local/nebula/etc/`,用户可以检查相应的配置文件排查问题。 ### 容器部署 -在`nebula-docker-compose`目录内执行如下命令查看Nebula Graph服务状态: +在`nebula-docker-compose`目录内执行如下命令查看 Nebula Graph 服务状态: ```bash nebula-docker-compose]$ docker-compose ps @@ -166,7 +166,7 @@ nebula-docker-compose_storaged2_1 ./bin/nebula-storaged --fl ... Up (healthy 如果服务有异常,用户可以先确认异常的容器名称(例如`nebula-docker-compose_graphd2_1`), -然后执行`docker ps`查看对应的`CONTAINER ID`(示例为`2a6c56c405f5`)。 +然后执行`docker ps`查看对应的`CONTAINER ID`(示例为`2a6c56c405f5`)。 ```bash [nebula-docker-compose]$ docker ps @@ -191,4 +191,4 @@ nebula-docker-compose]$ docker exec -it 2a6c56c405f5 bash ## 下一步 -[连接Nebula Graph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.connect-to-nebula-graph/) +[连接 Nebula Graph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.connect-to-nebula-graph/) diff --git a/docs-2.0/spark-connector/reader/sc-ug-reader-example.md b/docs-2.0/spark-connector/reader/sc-ug-reader-example.md index f763e7d98ff..2f0d414e383 100644 --- a/docs-2.0/spark-connector/reader/sc-ug-reader-example.md +++ b/docs-2.0/spark-connector/reader/sc-ug-reader-example.md @@ -11,11 +11,11 @@ - Scala - Java:1.8 -- 已经成功编译 Nebula Spark Connector Reader,并已经将 `nebula-spark-1.x.y.jar` 复制到本地 Maven 库。详细信息参考 [编译 Nebula Spark Connector](../sc-ug-compile.md) +- 已经成功编译 Nebula Spark Connector Reader,并已经将 `nebula-spark-1.x.y.jar` 复制到本地 Maven 库。详细信息参考[编译 Nebula Spark Connector](../sc-ug-compile.md) - 已经获取 Nebula Graph 数据库的以下信息: - 图空间名称和分区数量(如果创建图空间时未设置分区数量,则默认使用 100) - - Tag和Edge type的名称以及属性 + - Tag 和 Edge type 的名称以及属性 - Meta 服务所在机器的 IP 地址及端口号 ## 操作步骤 @@ -80,13 +80,13 @@ - `loadVerticesToDF(, )`,所有参数均为必需参数。 - - ``:配置为指定 Nebula Graph 图空间中某个Tag的名称。 - - ``:配置为指定Tag的属性名称,不允许为空。如果一个Tag有多个属性,则以英文逗号分隔。如果指定了属性名称,表示只读取指定的属性。如果配置为 `*`,表示读取指定Tag的所有属性。 + - ``:配置为指定 Nebula Graph 图空间中某个 Tag 的名称。 + - ``:配置为指定 Tag 的属性名称,不允许为空。如果一个 Tag 有多个属性,则以英文逗号分隔。如果指定了属性名称,表示只读取指定的属性。如果配置为 `*`,表示读取指定 Tag 的所有属性。 - `loadEdgesToDF(, )`,所有参数均为必需参数。 - - ``:配置为指定 Nebula Graph 图空间中某个Edge type的名称。 - - ``:配置为指定Edge type的属性名称,不允许为空。如果一个Edge type有多个属性,则以英文逗号分隔。如果指定了属性名称,表示只读取指定的属性,如果配置为 `*` 表示读取指定Edge type的所有属性。 + - ``:配置为指定 Nebula Graph 图空间中某个 Edge type 的名称。 + - ``:配置为指定 Edge type 的属性名称,不允许为空。如果一个 Edge type 有多个属性,则以英文逗号分隔。如果指定了属性名称,表示只读取指定的属性,如果配置为 `*` 表示读取指定 Edge type 的所有属性。 以下为读取结果示例。 diff --git a/docs-2.0/spark-connector/reader/sc-ug-what-is-reader.md b/docs-2.0/spark-connector/reader/sc-ug-what-is-reader.md index 8c0d2828896..31ac830f4c3 100644 --- a/docs-2.0/spark-connector/reader/sc-ug-what-is-reader.md +++ b/docs-2.0/spark-connector/reader/sc-ug-what-is-reader.md @@ -1,6 +1,6 @@ # 什么是 Nebula Spark Connector Reader -Nebula Spark Connector Reader 是 Nebula Spark Connector 的组成部分,提供了 Spark SQL 接口,用户可以使用 Spark SQL 接口编程读取 Nebula Graph 图数据,单次读取一个Tag或Edge type的数据,并将读取的结果组装成 Spark 的 DataFrame。读出的 DataFrame 可以通过 Nebula Spark Connector Writer 写入 Nebula Graph 数据库或实现不同图空间之间的数据迁移。 +Nebula Spark Connector Reader 是 Nebula Spark Connector 的组成部分,提供了 Spark SQL 接口,用户可以使用 Spark SQL 接口编程读取 Nebula Graph 图数据,单次读取一个 Tag 或 Edge type 的数据,并将读取的结果组装成 Spark 的 DataFrame。读出的 DataFrame 可以通过 Nebula Spark Connector Writer 写入 Nebula Graph 数据库或实现不同图空间之间的数据迁移。 ## Nebula Spark Connector Reader 实现原理 diff --git a/docs-2.0/spark-connector/sc-ug-what-is-spark-connector.md b/docs-2.0/spark-connector/sc-ug-what-is-spark-connector.md index 47a4819df22..3a02510afd3 100644 --- a/docs-2.0/spark-connector/sc-ug-what-is-spark-connector.md +++ b/docs-2.0/spark-connector/sc-ug-what-is-spark-connector.md @@ -2,7 +2,7 @@ [Nebula Spark Connector](https://github.com/vesoft-inc/nebula-java/tree/v1.0/tools "点击前往 GitHub")(在本手册中简称为 Spark Connector)是一个 Spark 连接器,提供了通过 Spark 标准形式读写 Nebula Graph 数据库的能力,由以下两部分组成: -- Reader:提供了一个 Spark SQL 接口,用户可以使用 Spark SQL 接口编程读取 Nebula Graph 图数据,单次读取一个点或Edge type的数据,并将读取的结果组装成 Spark 的 DataFrame。参考 [Nebula Spark Connector Reader](reader/sc-ug-what-is-reader.md)。 +- Reader:提供了一个 Spark SQL 接口,用户可以使用 Spark SQL 接口编程读取 Nebula Graph 图数据,单次读取一个点或 Edge type 的数据,并将读取的结果组装成 Spark 的 DataFrame。参考 [Nebula Spark Connector Reader](reader/sc-ug-what-is-reader.md)。 - Writer:提供了一个 Spark SQL 接口,用户可以使用 Spark SQL 接口编程将 DataFrame 格式的数据逐条或批量写入 Nebula Graph。参考 [Nebula Spark Connector Writer](writer/sc-ug-what-is-writer.md)。 diff --git a/docs-2.0/spark-connector/writer/sc-ug-what-is-writer.md b/docs-2.0/spark-connector/writer/sc-ug-what-is-writer.md index 79ca6645368..5371ea3bc20 100644 --- a/docs-2.0/spark-connector/writer/sc-ug-what-is-writer.md +++ b/docs-2.0/spark-connector/writer/sc-ug-what-is-writer.md @@ -28,7 +28,7 @@ Nebula Spark Connector Writer 的实现类图如下: ![Nebula Spark Connector Writer 实现类图](../figs/sc-ug-002.png "Nebula Spark Connector Writer 实现类图") -`NebulaVertexWriter` 和 `NebulaEdgeWriter的write` 方法中定义了具体写入逻辑。逐条写入数据的逻辑概括如下: +`NebulaVertexWriter` 和 `NebulaEdgeWriter 的 write` 方法中定义了具体写入逻辑。逐条写入数据的逻辑概括如下: 1. 创建客户端,连接 Nebula Graph 的 Graph 服务。 2. 指定即将写入数据的 Nebula Graph 图空间。 diff --git a/docs-2.0/spark-connector/writer/sc-ug-writer-example.md b/docs-2.0/spark-connector/writer/sc-ug-writer-example.md index aad3d142e76..21f7afffe43 100644 --- a/docs-2.0/spark-connector/writer/sc-ug-writer-example.md +++ b/docs-2.0/spark-connector/writer/sc-ug-writer-example.md @@ -11,7 +11,7 @@ - Scala - Java:1.8 -- 已经成功编译 Nebula Spark Connector,并已经将 `nebula-spark-1.x.y.jar` 复制到本地 Maven 库。详细信息参考 [编译 Nebula Spark Connector](../sc-ug-compile.md)。 +- 已经成功编译 Nebula Spark Connector,并已经将 `nebula-spark-1.x.y.jar` 复制到本地 Maven 库。详细信息参考[编译 Nebula Spark Connector](../sc-ug-compile.md)。 - 待写入的点和边数据源。在本示例中所用的数据源为 JSON 文件,用户可以从 [nebula-java 库](https://github.com/vesoft-inc/nebula-java/tree/v1.0/examples/src/main/resources "点击前往 GitHub 网站") 中下载。 @@ -19,8 +19,8 @@ - 在 Nebula Graph 中创建 Schema,并获取以下信息: - 图空间名称和分区数量。在本示例中,对应的信息为 `nb` 和 `100`。 - - 点的信息,包括Tag和 VID 映射策略(`hash`)。 - - 边的信息,包括起点和终点对应的Tag,以及 VID 映射策略(`hash`)。 + - 点的信息,包括 Tag 和 VID 映射策略(`hash`)。 + - 边的信息,包括起点和终点对应的 Tag,以及 VID 映射策略(`hash`)。 - (可选)如果是批量写入,需要确认单次写入的最大数据条数,默认为 2000。详见本文 `batchInsert` 配置项说明。 @@ -80,12 +80,12 @@ - `partitionNum`:在 Nebula Graph 中创建图空间时指定的 `partitionNum` 的值。如果未指定,这里填写 `100`。 - `writeVertices(tag: String, vertexField: String, policy: String = "")` - - `tag`:点对应的 Nebula Graph 图空间中的Tag名称。 + - `tag`:点对应的 Nebula Graph 图空间中的 Tag 名称。 - `vertexField`:DataFrame 中可作为 Nebula Graph 点 VID 的列。例如,如果 DataFrame 有三列,分别为 a、b、c,其中 a 列作为点 VID 列,则该参数设置为 `"a"`。 - `policy`:如果 DataFrame 中 `vertexField` 列的数据类型非数值型,则需要配置 Nebula Graph 中 VID 的映射策略,即该参数设置为 `"hash"`。如果 `vertexField` 列的数据类型为整数型,则不需要配置。 - `writeEdges(edge: String, srcVertexField: String, dstVertexField: String, policy: String = "")` - - `edge`:边对应的 Nebula Graph 图空间中的Edge type名称。 + - `edge`:边对应的 Nebula Graph 图空间中的 Edge type 名称。 - `srcVertexField` 和 `dstVertexField`:DataFrame 中可作为边起点和边终点的列。列值必须同为整数型或同为非数值型。 - `policy`:如果 DataFrame 中 `srcVertexField` 列和 `dstVertexField` 列的数据类型非数值型,则需要配置 Nebula Graph 中 VID 的映射策略,即该参数设置为 `"hash"`。如果 `srcVertexField` 列和 `dstVertexField` 列的数据类型为整数型,则不需要配置。 @@ -122,13 +122,13 @@ new NebulaBatchWriterUtils() - `batchToNebulaVertex(data: DataFrame, tag: String, vertexField: String, policy: String = "")`: - `data`:待写入 Nebula Graph 的 DataFrame 数据。 - - `tag`:Nebula Graph 图空间中对应的Tag名称。 - - `vertexField`:DataFrame 中可作为 Nebula Graph 点 VID 的列。例如,如果 DataFrame 有三列,分别为 a、b、c,其中a 列作为点 VID 列,则该参数设置为 `"a"`。 + - `tag`:Nebula Graph 图空间中对应的 Tag 名称。 + - `vertexField`:DataFrame 中可作为 Nebula Graph 点 VID 的列。例如,如果 DataFrame 有三列,分别为 a、b、c,其中 a 列作为点 VID 列,则该参数设置为 `"a"`。 - `policy`:如果 DataFrame 中 `vertexField` 列的数据类型非数值型,则需要配置 Nebula Graph 中 VID 的映射策略,即该参数设置为 `"hash"`。如果 `vertexField` 列的数据类型为整数型,则不需要配置。 - `batchToNebulaEdge(data: DataFrame,  edge: String, srcVertexField: String, dstVertexField: String, rankField: String = "",  policy: String = "")`: - `data`:待写入 Nebula Graph 的 DataFrame 数据。 - - `edge`:Nebula Graph 中对应的Edge type。 + - `edge`:Nebula Graph 中对应的 Edge type。 - `srcVertexField` 和 `dstVertexField`:DataFrame 中可作为边起点和边终点的列。列值必须同为整数型或同为非数值型。 - `rankField`:DataFrame 中可作为边 `rank` 值的列,可选配。 - `policy`:可选。如果 DataFrame 中 `srcVertexField` 列和 `dstVertexField` 列的数据类型非数值型,则需要配置 Nebula Graph 中 VID 的映射策略,即该参数设置为 `"hash"`。如果 `srcVertexField` 列和 `dstVertexField` 列的数据类型为整数型,则不需要配置。 diff --git a/mkdocs.yml b/mkdocs.yml index 1c01d6042b7..076cf3b3ab6 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -61,10 +61,14 @@ extra: release: 3.1.0 explorer: base100: 1.0.0 - release: 2.0.0 - exchange: + release: 2.1.0 + exchange_ent: release: 2.6.0 - branch: v2.6.0 + branch: v2.6 + exchange: + release: 2.6.1 + branch: v2.6 + tag: v2.6.1 importer: release: 2.6.0 branch: v2.6.0 @@ -72,20 +76,22 @@ extra: release: 2.5.1 branch: v2.5 sparkconnector: - release: 2.5.1 - branch: v2.5 + release: 2.6.1 + branch: v2.6 + tag: v2.6.1 flinkconnector: - release: 2.5.0 - branch: v2.5 + release: 2.6.1 + branch: v2.6 + tag: v2.6.1 dockercompose: release: 2.6.0 branch: v2.6.0 common: release: 2.5.0 dashboard: - release: 1.0.1 + release: 1.0.2 base100: 1.0.0 - branch: v1.0.1 + branch: v1.0.2 dashboard_ent: release: 1.0.0 console: @@ -97,8 +103,8 @@ extra: release: 2.5.0 branch: v2.5.0 java: - release: 2.6.0 - branch: v2.6.0 + release: 2.6.1 + branch: v2.6.1 python: release: 2.6.0 branch: v2.6.0 @@ -108,6 +114,7 @@ extra: bench: release: 1.0.0 branch: master + tag: v1.0.0 operator: release: 0.9.0 branch: v0.9.0 @@ -115,32 +122,32 @@ extra: nav: - 前言: README.md - 简介: - - 什么是Nebula Graph: 1.introduction/1.what-is-nebula-graph.md + - 什么是 Nebula Graph: 1.introduction/1.what-is-nebula-graph.md - 数据模型: 1.introduction/2.data-model.md - 路径: 1.introduction/2.1.path.md - VID: 1.introduction/3.vid.md - 服务架构: - 架构总览: 1.introduction/3.nebula-graph-architecture/1.architecture-overview.md - - Meta服务: 1.introduction/3.nebula-graph-architecture/2.meta-service.md - - Graph服务: 1.introduction/3.nebula-graph-architecture/3.graph-service.md - - Storage服务: 1.introduction/3.nebula-graph-architecture/4.storage-service.md + - Meta 服务: 1.introduction/3.nebula-graph-architecture/2.meta-service.md + - Graph 服务: 1.introduction/3.nebula-graph-architecture/3.graph-service.md + - Storage 服务: 1.introduction/3.nebula-graph-architecture/4.storage-service.md - 快速入门: - 快速入门流程: 2.quick-start/1.quick-start-workflow.md - - 步骤1:安装Nebula Graph: 2.quick-start/2.install-nebula-graph.md - - 步骤2:启动Nebula Graph: 2.quick-start/5.start-stop-service.md - - 步骤3:连接Nebula Graph: 2.quick-start/3.connect-to-nebula-graph.md + - 步骤1:安装 Nebula Graph: 2.quick-start/2.install-nebula-graph.md + - 步骤2:启动 Nebula Graph: 2.quick-start/5.start-stop-service.md + - 步骤3:连接 Nebula Graph: 2.quick-start/3.connect-to-nebula-graph.md - 步骤4:使用常用命令: 2.quick-start/4.nebula-graph-crud.md - - nGQL命令汇总: 2.quick-start/6.cheatsheet-for-ngql-command.md + - nGQL 命令汇总: 2.quick-start/6.cheatsheet-for-ngql-command.md - - nGQL指南: - - nGQL概述: - - 什么是nGQL: 3.ngql-guide/1.nGQL-overview/1.overview.md + - nGQL 指南: + - nGQL 概述: + - 什么是 nGQL: 3.ngql-guide/1.nGQL-overview/1.overview.md - 图模式: 3.ngql-guide/1.nGQL-overview/3.graph-patterns.md - 注释: 3.ngql-guide/1.nGQL-overview/comments.md - 大小写区分: 3.ngql-guide/1.nGQL-overview/identifier-case-sensitivity.md - 关键字: 3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md - - nGQL风格指南: 3.ngql-guide/1.nGQL-overview/ngql-style-guide.md + - nGQL 风格指南: 3.ngql-guide/1.nGQL-overview/ngql-style-guide.md - 数据类型: - 数值: 3.ngql-guide/3.data-types/1.numeric.md @@ -173,16 +180,16 @@ nav: - 数学函数: 3.ngql-guide/6.functions-and-expressions/1.math.md - 字符串函数: 3.ngql-guide/6.functions-and-expressions/2.string.md - 日期时间函数: 3.ngql-guide/6.functions-and-expressions/3.date-and-time.md - - Schema函数: 3.ngql-guide/6.functions-and-expressions/4.schema.md - - CASE表达式: 3.ngql-guide/6.functions-and-expressions/5.case-expressions.md + - Schema 函数: 3.ngql-guide/6.functions-and-expressions/4.schema.md + - CASE 表达式: 3.ngql-guide/6.functions-and-expressions/5.case-expressions.md - 列表函数: 3.ngql-guide/6.functions-and-expressions/6.list.md - - count函数: 3.ngql-guide/6.functions-and-expressions/7.count.md - - collect函数: 3.ngql-guide/6.functions-and-expressions/10.collect.md - - reduce函数: 3.ngql-guide/6.functions-and-expressions/11.reduce.md - - hash函数: 3.ngql-guide/6.functions-and-expressions/12.hash.md - - concat函数: 3.ngql-guide/6.functions-and-expressions/13.concat.md + - count 函数: 3.ngql-guide/6.functions-and-expressions/7.count.md + - collect 函数: 3.ngql-guide/6.functions-and-expressions/10.collect.md + - reduce 函数: 3.ngql-guide/6.functions-and-expressions/11.reduce.md + - hash 函数: 3.ngql-guide/6.functions-and-expressions/12.hash.md + - concat 函数: 3.ngql-guide/6.functions-and-expressions/13.concat.md - 谓词函数: 3.ngql-guide/6.functions-and-expressions/8.predicate.md - - geo函数: 3.ngql-guide/6.functions-and-expressions/14.geo.md + - geo 函数: 3.ngql-guide/6.functions-and-expressions/14.geo.md - 自定义函数: 3.ngql-guide/6.functions-and-expressions/9.user-defined-functions.md - 通用查询语句: @@ -195,7 +202,7 @@ nav: - SHOW CHARSET: 3.ngql-guide/7.general-query-statements/6.show/1.show-charset.md - SHOW COLLATION: 3.ngql-guide/7.general-query-statements/6.show/2.show-collation.md - SHOW CREATE SPACE: 3.ngql-guide/7.general-query-statements/6.show/4.show-create-space.md - - SHOW CREATE TAGS/EDGES: 3.ngql-guide/7.general-query-statements/6.show/5.show-create-tags-edges.md + - SHOW CREATE TAG/EDGE: 3.ngql-guide/7.general-query-statements/6.show/5.show-create-tag-edge.md - SHOW HOSTS: 3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md - SHOW INDEX STATUS: 3.ngql-guide/7.general-query-statements/6.show/7.show-index-status.md - SHOW INDEXES: 3.ngql-guide/7.general-query-statements/6.show/8.show-indexes.md @@ -228,14 +235,15 @@ nav: - DESCRIBE SPACE: 3.ngql-guide/9.space-statements/4.describe-space.md - DROP SPACE: 3.ngql-guide/9.space-statements/5.drop-space.md - - Tag语句: + - Tag 语句: - CREATE TAG: 3.ngql-guide/10.tag-statements/1.create-tag.md - DROP TAG: 3.ngql-guide/10.tag-statements/2.drop-tag.md - ALTER TAG: 3.ngql-guide/10.tag-statements/3.alter-tag.md - SHOW TAGS: 3.ngql-guide/10.tag-statements/4.show-tags.md - DESCRIBE TAG: 3.ngql-guide/10.tag-statements/5.describe-tag.md - DELETE TAG: 3.ngql-guide/10.tag-statements/6.delete-tag.md - - Edge type语句: + - 增加和删除标签: 3.ngql-guide/10.tag-statements/improve-query-by-tag-index.md + - Edge type 语句: - CREATE EDGE: 3.ngql-guide/11.edge-type-statements/1.create-edge.md - DROP EDGE: 3.ngql-guide/11.edge-type-statements/2.drop-edge.md - ALTER EDGE: 3.ngql-guide/11.edge-type-statements/3.alter-edge.md @@ -268,7 +276,7 @@ nav: # - 索引介绍: 3.ngql-guide/14.native-index-statements/README.md - 全文索引限制: 4.deployment-and-installation/6.deploy-text-based-index/1.text-based-index-restrictions.md - 部署全文索引: 4.deployment-and-installation/6.deploy-text-based-index/2.deploy-es.md - - 部署Raft listener: 4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md + - 部署 Raft listener: 4.deployment-and-installation/6.deploy-text-based-index/3.deploy-listener.md - 全文搜索: 3.ngql-guide/15.full-text-index-statements/1.search-with-text-based-index.md - 子图和路径: @@ -288,54 +296,54 @@ nav: - 准备资源: 4.deployment-and-installation/1.resource-preparations.md - 编译与安装: - 使用源码安装: 4.deployment-and-installation/2.compile-and-install-nebula-graph/1.install-nebula-graph-by-compiling-the-source-code.md - - 使用RPM/DEB包安装: 4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md - - 使用tar.gz文件安装: 4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md - - 使用Docker Compose部署: 4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md - - 使用RPM/DEB包部署多机集群: 4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md + - 使用 RPM/DEB 包安装: 4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md + - 使用 tar.gz 文件安装: 4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md + - 使用 Docker Compose 部署: 4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md + - 使用 RPM/DEB 包部署多机集群: 4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster.md + - 设置企业版 License: 4.deployment-and-installation/deploy-license.md - 管理服务: 4.deployment-and-installation/manage-service.md - 连接服务: 4.deployment-and-installation/connect-to-nebula-graph.md - 升级版本: - - 升级历史版本至v2.6.0: 4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-260.md - - 升级v2.0.x至v2.6.0: 4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-260.md - - 卸载Nebula Graph: 4.deployment-and-installation/4.uninstall-nebula-graph.md + - 升级历史版本至当前版本: 4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-latest.md + - 升级 v2.0.x 至当前版本: 4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-200-to-latest.md + - 卸载 Nebula Graph: 4.deployment-and-installation/4.uninstall-nebula-graph.md - 配置与日志: - 配置: - 配置管理: 5.configurations-and-logs/1.configurations/1.configurations.md - - Meta服务配置: 5.configurations-and-logs/1.configurations/2.meta-config.md - - Graph服务配置: 5.configurations-and-logs/1.configurations/3.graph-config.md - - Storage服务配置: 5.configurations-and-logs/1.configurations/4.storage-config.md - - Linux内核配置: 5.configurations-and-logs/1.configurations/6.kernel-config.md + - Meta 服务配置: 5.configurations-and-logs/1.configurations/2.meta-config.md + - Graph 服务配置: 5.configurations-and-logs/1.configurations/3.graph-config.md + - Storage 服务配置: 5.configurations-and-logs/1.configurations/4.storage-config.md + - Linux 内核配置: 5.configurations-and-logs/1.configurations/6.kernel-config.md - 日志: - 日志配置: 5.configurations-and-logs/2.log-management/logs.md - 监控: - - 查询Nebula Graph监控指标: 6.monitor-and-metrics/1.query-performance-metrics.md - - RocksDB统计数据: 6.monitor-and-metrics/2.rocksdb-statistics.md + - 查询 Nebula Graph 监控指标: 6.monitor-and-metrics/1.query-performance-metrics.md + - RocksDB 统计数据: 6.monitor-and-metrics/2.rocksdb-statistics.md - 数据安全: - 验证和授权: - 身份验证: 7.data-security/1.authentication/1.authentication.md - 用户管理: 7.data-security/1.authentication/2.management-user.md - 内置角色权限: 7.data-security/1.authentication/3.role-list.md - - OpenLDAP验证: 7.data-security/1.authentication/4.ldap.md + - OpenLDAP 验证: 7.data-security/1.authentication/4.ldap.md # - 备份恢复: -# - 什么是BR: 7.data-security/2.backup-restore/1.what-is-br.md -# - 编译BR: 7.data-security/2.backup-restore/2.compile-br.md -# - 使用BR备份数据: 7.data-security/2.backup-restore/3.br-backup-data.md -# - 使用BR恢复数据: 7.data-security/2.backup-restore/4.br-restore-data.md +# - 什么是 BR: 7.data-security/2.backup-restore/1.what-is-br.md +# - 编译 BR: 7.data-security/2.backup-restore/2.compile-br.md +# - 使用 BR 备份数据: 7.data-security/2.backup-restore/3.br-backup-data.md +# - 使用 BR 恢复数据: 7.data-security/2.backup-restore/4.br-restore-data.md - 管理快照: 7.data-security/3.manage-snapshot.md - Group&Zone: 7.data-security/5.zone.md - - SSL加密: 7.data-security/4.ssl.md + - SSL 加密: 7.data-security/4.ssl.md - 最佳实践: - Compaction: 8.service-tuning/compaction.md - - Storage负载均衡: 8.service-tuning/load-balance.md + - Storage 负载均衡: 8.service-tuning/load-balance.md - 图建模: 8.service-tuning/2.graph-modeling.md - 系统建模: 8.service-tuning/3.system-design.md - 执行计划: 8.service-tuning/4.plan.md - 超级节点(稠密点): 8.service-tuning/super-node.md - - 增加和删除标签: 8.service-tuning/improve-query-by-tag-index.md - 实践案例: 8.service-tuning/practice.md @@ -347,7 +355,7 @@ nav: - Nebula Go: 14.client/6.nebula-go-client.md - Nebula Graph Studio: - - Studio版本更新说明: nebula-studio/about-studio/st-ug-release-note.md + - Studio 版本更新说明: nebula-studio/about-studio/st-ug-release-note.md - 认识 Nebula Graph Studio: - 什么是 Nebula Graph Studio: nebula-studio/about-studio/st-ug-what-is-graph-studio.md - 名词解释: nebula-studio/about-studio/st-ug-terms.md @@ -367,8 +375,8 @@ nav: - 操作指南: - 管理 Schema: - 操作图空间: nebula-studio/manage-schema/st-ug-crud-space.md - - 操作Tag: nebula-studio/manage-schema/st-ug-crud-tag.md - - 操作Edge type: nebula-studio/manage-schema/st-ug-crud-edge-type.md + - 操作 Tag: nebula-studio/manage-schema/st-ug-crud-tag.md + - 操作 Edge type: nebula-studio/manage-schema/st-ug-crud-edge-type.md - 操作索引: nebula-studio/manage-schema/st-ug-crud-index.md - 使用控制台: - 控制台界面: nebula-studio/use-console/st-ug-console.md @@ -380,15 +388,15 @@ nav: - Studio 常见问题: nebula-studio/troubleshooting/st-ug-faq.md - Nebula Dashboard(社区版): - - 什么是Nebula Dashboard: nebula-dashboard/1.what-is-dashboard.md - - 部署Dashboard: nebula-dashboard/2.deploy-dashboard.md - - 连接Dashboard: nebula-dashboard/3.connect-dashboard.md - - Dashboard页面介绍: nebula-dashboard/4.use-dashboard.md + - 什么 是Nebula Dashboard: nebula-dashboard/1.what-is-dashboard.md + - 部署 Dashboard: nebula-dashboard/2.deploy-dashboard.md + - 连接 Dashboard: nebula-dashboard/3.connect-dashboard.md + - Dashboard 页面介绍: nebula-dashboard/4.use-dashboard.md - 监控指标说明: nebula-dashboard/6.monitor-parameter.md - Nebula Dashboard(企业版): - - 什么是Nebula Dashboard: nebula-dashboard-ent/1.what-is-dashboard-ent.md - - 部署Dashboard: nebula-dashboard-ent/2.deploy-connect-dashboard-ent.md + - 什么是 Nebula Dashboard: nebula-dashboard-ent/1.what-is-dashboard-ent.md + - 部署 Dashboard: nebula-dashboard-ent/2.deploy-connect-dashboard-ent.md - 创建及导入集群: - 创建集群: nebula-dashboard-ent/3.create-import-dashboard/1.create-cluster.md - 导入集群: nebula-dashboard-ent/3.create-import-dashboard/2.import-cluster.md @@ -402,10 +410,10 @@ nav: - 权限管理: nebula-dashboard-ent/5.account-management.md - 系统设置: nebula-dashboard-ent/6.system-settings.md - 监控指标说明: nebula-dashboard-ent/7.monitor-parameter.md - - 常见问题FAQ: nebula-dashboard-ent/8.faq.md + - 常见问题 FAQ: nebula-dashboard-ent/8.faq.md - Nebula Explorer: - - 什么是Nebula Explorer: nebula-explorer/about-explorer/ex-ug-what-is-explorer.md + - 什么是 Nebula Explorer: nebula-explorer/about-explorer/ex-ug-what-is-explorer.md - 安装与登录: - 部署 Explorer: nebula-explorer/deploy-connect/ex-ug-deploy.md - 连接数据库: nebula-explorer/deploy-connect/ex-ug-connect.md @@ -419,48 +427,48 @@ nav: - 快捷键: nebula-explorer/operation-guide/ex-ug-shortcuts.md - Nebula Importer: - - 使用Nebula Importer: nebula-importer/use-importer.md + - 使用 Nebula Importer: nebula-importer/use-importer.md - 有表头配置说明: nebula-importer/config-with-header.md - 无表头配置说明: nebula-importer/config-without-header.md - Nebula Exchange: - - 认识Nebula Exchange: - - 什么是Nebula Exchange: nebula-exchange/about-exchange/ex-ug-what-is-exchange.md + - 认识 Nebula Exchange: + - 什么是 Nebula Exchange: nebula-exchange/about-exchange/ex-ug-what-is-exchange.md - 使用限制: nebula-exchange/about-exchange/ex-ug-limitations.md - - 获取Nebula Exchange: nebula-exchange/ex-ug-compile.md + - 获取 Nebula Exchange: nebula-exchange/ex-ug-compile.md - 参数说明: - 导入命令参数: nebula-exchange/parameter-reference/ex-ug-para-import-command.md - 配置参数: nebula-exchange/parameter-reference/ex-ug-parameter.md - - 使用Nebula Exchange: - - 导入CSV文件数据: nebula-exchange/use-exchange/ex-ug-import-from-csv.md - - 导入JSON文件数据: nebula-exchange/use-exchange/ex-ug-import-from-json.md - - 导入ORC文件数据: nebula-exchange/use-exchange/ex-ug-import-from-orc.md - - 导入Parquet文件数据: nebula-exchange/use-exchange/ex-ug-import-from-parquet.md - - 导入HBase数据: nebula-exchange/use-exchange/ex-ug-import-from-hbase.md - - 导入MySQL数据: nebula-exchange/use-exchange/ex-ug-import-from-mysql.md - - 导入ClickHouse数据: nebula-exchange/use-exchange/ex-ug-import-from-clickhouse.md - - 导入Neo4j数据: nebula-exchange/use-exchange/ex-ug-import-from-neo4j.md - - 导入Hive数据: nebula-exchange/use-exchange/ex-ug-import-from-hive.md - - 导入MaxCompute数据: nebula-exchange/use-exchange/ex-ug-import-from-maxcompute.md - - 导入Pulsar数据: nebula-exchange/use-exchange/ex-ug-import-from-pulsar.md - - 导入Kafka数据: nebula-exchange/use-exchange/ex-ug-import-from-kafka.md - - 导入SST文件数据: nebula-exchange/use-exchange/ex-ug-import-from-sst.md - - 导出Nebula Graph数据: nebula-exchange/use-exchange/ex-ug-export-from-nebula.md + - 使用 Nebula Exchange: + - 导入 CSV 文件数据: nebula-exchange/use-exchange/ex-ug-import-from-csv.md + - 导入 JSON 文件数据: nebula-exchange/use-exchange/ex-ug-import-from-json.md + - 导入 ORC 文件数据: nebula-exchange/use-exchange/ex-ug-import-from-orc.md + - 导入 Parquet 文件数据: nebula-exchange/use-exchange/ex-ug-import-from-parquet.md + - 导入 HBase 数据: nebula-exchange/use-exchange/ex-ug-import-from-hbase.md + - 导入 MySQL 数据: nebula-exchange/use-exchange/ex-ug-import-from-mysql.md + - 导入 ClickHouse 数据: nebula-exchange/use-exchange/ex-ug-import-from-clickhouse.md + - 导入 Neo4j 数据: nebula-exchange/use-exchange/ex-ug-import-from-neo4j.md + - 导入 Hive 数据: nebula-exchange/use-exchange/ex-ug-import-from-hive.md + - 导入 MaxCompute 数据: nebula-exchange/use-exchange/ex-ug-import-from-maxcompute.md + - 导入 Pulsar 数据: nebula-exchange/use-exchange/ex-ug-import-from-pulsar.md + - 导入 Kafka 数据: nebula-exchange/use-exchange/ex-ug-import-from-kafka.md + - 导入 SST 文件数据: nebula-exchange/use-exchange/ex-ug-import-from-sst.md + - 导出 Nebula Graph 数据: nebula-exchange/use-exchange/ex-ug-export-from-nebula.md - Exchange 常见问题: nebula-exchange/ex-ug-FAQ.md - Nebula Operator: - - 什么是Nebula Operator: nebula-operator/1.introduction-to-nebula-operator.md + - 什么是 Nebula Operator: nebula-operator/1.introduction-to-nebula-operator.md - 使用流程: nebula-operator/6.get-started-with-operator.md - - 部署Nebula Operator: nebula-operator/2.deploy-nebula-operator.md - - 部署Nebula Graph集群: - - 使用Kubectl部署Nebula Graph集群: nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md - - 使用Helm部署Nebula Graph集群: nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md - - 配置Nebula Graph集群: - - 自定义Nebula Graph集群的配置参数: nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md - - 回收PV: nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md - - 均衡扩容后的Storage数据: nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md - - 升级Nebula Graph集群: nebula-operator/9.upgrade-nebula-cluster.md - - 连接Nebula Graph数据库: nebula-operator/4.connect-to-nebula-graph-service.md + - 部署 Nebula Operator: nebula-operator/2.deploy-nebula-operator.md + - 部署 Nebula Graph集群: + - 使用 Kubectl 部署 Nebula Graph 集群: nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md + - 使用 Helm 部署 Nebula Graph 集群: nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md + - 配置 Nebula Graph 集群: + - 自定义 Nebula Graph 集群的配置参数: nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md + - 回收 PV: nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md + - 均衡扩容后的 Storage 数据: nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md + - 升级 Nebula Graph 集群: nebula-operator/9.upgrade-nebula-cluster.md + - 连接 Nebula Graph 数据库: nebula-operator/4.connect-to-nebula-graph-service.md - 故障自愈: nebula-operator/5.operator-failover.md - 常见问题: nebula-operator/7.operator-faq.md @@ -512,6 +520,9 @@ plugins: glob: # Exclude all files in a directory. The path starts with the directory name in docs-2.0, such as `20.appendix/*`. - 7.data-security/2.backup-restore/* + - nebula-flink/* + - CHANGELOG.md + - spark-connector/* # Exclude the file with the following file name. # - abc.md # Exclude files with regular expressions (regexes) diff --git a/overrides/partials/header.html b/overrides/partials/header.html index 023ed66359f..dce5c274c5e 100644 --- a/overrides/partials/header.html +++ b/overrides/partials/header.html @@ -97,4 +97,4 @@ } } } - \ No newline at end of file +