{
    "componentChunkName": "component---src-templates-news-detail-ts",
    "path": "/news/43",
    "result": {"pageContext":{"next":{"id":28,"attributes":{"feature":true,"title":"JD Technology and SphereEx Sign a Cooperation Agreement to Build a Versatile Database and Data Ecosystem","content":"\n\n>On January 31, 2022, JD Technology and SphereEx signed a strategic cooperation agreement to take their partnership in the database service industry to the next level. \n>SphereEx and JD Technology stated that \"by drawing on each others' strengths, we'll jointly develop new product solutions and explore applications for online transactions, online monitoring, elastic scale-out,  single or multi-site high availability (HA), and disaster recovery (DR).\"\n\n\n## Why did SphereEx and JD Technology Establish a Cooperation?\n\nFacing strong competition to strengthen its positioning in the market, while being part of China's largest retailer and world's third-largest Internet company, JD Technology continuously seeks opportunities for business growth. \n\nThe increased digital technologies adoption rate has inspired large Internet companies to leverage their powerful data infrastructure to empower enterprises' digital transformation. \n\nIn 2017, JD Technology shared its intentions to \"serve technological transformation\", and quickly acted on them by going on a hiring spree and recruiting the best database talent around. \n\nZhang Liang and Trista Pan, the SphereEx Founder & CEO and Co-Founder & CTO were at the time employed at JD Technology as Head of Database Development and Senior Database Administrator respectively. \n\nThey acted as the minds behind ShardingSphere's integration into JD Technology's infrastructure. The successful integration earned ShardingSphere the support of JD Technology to enter the Apache Software Foundation (ASF) as an Incubator project in 2019, and eventually successfully graduate as an Apache Top-Level project in April, 2020.\n\nCurrently, Apache ShardingSphere is integrated into the infrastructure of various JD.com business units, thanks to its plugin oriented architecture design. This type of architecture allows the flexible integration of features such as data sharding, read/write splitting, data encryption, and elastic scale-out - useful for building extensible database clusters, and ultimately linking data & services simply.\n\nThe ShardingSphere community, proudly supported by SphereEx, took the chance to extend its heartfelt gratitude to the JD Technology team for providing great use case scenarios. \n\nThe success of the 11.11 Shopping Festival aka \"Singles Day\" and the 6.18 Mid-Year Shopping Festival for JD.com meant significant surges in data traffic. These surges allowed Apache ShardingSphere to develop into the data governance tool able to handle trillion-level data traffic that it is today.\n\nSphereEx was founded by Apache ShardingSphere's core developer team, and is therefore closely linked to JD Technology.\n\nWith JD Technology's increasingly diversified application scenarios, increasingly professional and efficient services have become to be expected. This offers SphereEx the opportunity to test and develop products in close partnership with JD and its customers. \n\nPartnering on technology development will allow for better future database services. \n\n## Core Objective: Build a Better Data Ecosystem\n\nTo achieve their common goal of building a better data ecosystem, SphereEx and JD Technology will cooperate to build next-gen data application and governance solutions. \n\nWe will utilize our intelligent data governance platform to provide data processing, data asset management, data service management, and additional core services. \n\nSphereEx will aso cooperate with JD Technology to jointly create products and solution for online transactions, online monitoring, elastic scale-out, single or multi-site high availability (HA) and disaster recovery (DR).\n\nIn the future, SphereEx and JD.com will seek better collaboration models for database product delivery and DevOps in the finance, Internet-related and manufacturing scenarios. \n\nBy establishing a commercial cooperation, innovation iteration speed and efficiency for the Internet-related verticals will be improved with significant innovations coming to the database field.  ","date":"2022-02-22","author":"SphereEx","excerpt":"On January 31, 2022, JD Technology and SphereEx signed a strategic cooperation agreement to take their partnership in the database service industry to the next level. ","createdAt":"2022-02-22T08:25:34.613Z","updatedAt":"2022-02-22T08:25:36.441Z","publishedAt":"2022-02-22T08:25:36.437Z","locale":"en","newsType":{"data":null},"cover":{"data":{"id":173,"attributes":{"name":"京东科技战略合作头图_画板 1.png","alternativeText":"京东科技战略合作头图_画板 1.png","caption":"京东科技战略合作头图_画板 1.png","width":3750,"height":1596,"formats":{"thumbnail":{"name":"thumbnail_京东科技战略合作头图_画板 1.png","hash":"thumbnail_1_9cd84fa3a1","ext":".png","mime":"image/png","width":245,"height":104,"size":34.2,"path":null,"url":"https://official-media.sphere-ex.com/thumbnail_1_9cd84fa3a1.png"},"large":{"name":"large_京东科技战略合作头图_画板 1.png","hash":"large_1_9cd84fa3a1","ext":".png","mime":"image/png","width":1000,"height":426,"size":346.49,"path":null,"url":"https://official-media.sphere-ex.com/large_1_9cd84fa3a1.png"},"medium":{"name":"medium_京东科技战略合作头图_画板 1.png","hash":"medium_1_9cd84fa3a1","ext":".png","mime":"image/png","width":750,"height":319,"size":213.86,"path":null,"url":"https://official-media.sphere-ex.com/medium_1_9cd84fa3a1.png"},"small":{"name":"small_京东科技战略合作头图_画板 1.png","hash":"small_1_9cd84fa3a1","ext":".png","mime":"image/png","width":500,"height":213,"size":108.51,"path":null,"url":"https://official-media.sphere-ex.com/small_1_9cd84fa3a1.png"}},"hash":"1_9cd84fa3a1","ext":".png","mime":"image/png","size":453.19,"url":"https://official-media.sphere-ex.com/1_9cd84fa3a1.png","previewUrl":null,"provider":"dine-strapi-provider-upload-aws-s3","provider_metadata":null,"createdAt":"2022-02-16T09:45:42.189Z","updatedAt":"2022-02-16T09:45:42.189Z"}}},"localizations":{"data":[{"id":27,"attributes":{"feature":true,"title":"京东科技 x SphereEx｜推进多行业数据库产业生态建设","content":"\n>2022 年 1 月 31 日，SphereEx 与京东科技签署战略合作协议。协议中指出，双方将**在数据库领域达成深度协作，在数据库服务领域实现优势互补，探索在线交易、在线分析、弹性伸缩、同城多活、异地灾备等技术应用与落地，形成产品的联合解决方案。**\n\n## 共同的基因与价值观，是促成签约的基础\n\n作为国内电商领域的龙头企业之一，在国内互联网流量逐渐见顶后，京东需要在电商之外寻找更多的产业增长点。随着数字化浪潮涌来，大型互联网公司利用自身强大的数据基础和技术优势，为企业的数字化转型赋能，已经成为一条可见的发展方向。因此在 2017 年，京东就提出『全面向技术转型』的企业发展方向，为此招揽了许多数据库领域的人才。其中，就包括时任京东科技数据库团队负责人的 SphereEx 创始人兼 CEO 张亮，以及时任京东科技高级 DBA 的 SphereEx 联合创始人兼 CTO 潘娟，他们也将 ShardingSphere 带入到了京东科技的技术体系当中。在京东科技的支持下，ShardingSphere 进入了 Apache 孵化器，并最终毕业，成为顶级开源项目。京东科技见证了 Apache ShardingSphere 从青涩到顶级项目的全部历程。\n\n在此期间，Apache ShardingSphere 逐渐深入到京东科技的各条业务线之中，通过可插拔架构的设计理念，为京东内部海量系统提供了数据分片、读写分离、数据加密、弹性伸缩等多个服务化插件，共同构建具备弹性可扩展的数据库集群，为用户提供便捷的数据与应用连接服务。另一方面，也正是得益于在京东科技内部的广泛应用，ShardingSphere 扛过了 11.11、6.18 等多个巨额流量场景，逐渐成长为承担着万亿级别流量的数据治理工具。\n\n作为一家以 Apache ShardingSphere 为技术基础所成立的商业化公司，SphereEx 与京东科技之间也因此产生了千丝万缕的联系。\n\n随着应用场景的丰富，京东科技逐渐需要更加专业、高效的定制化服务。而另一方面，SphereEx 也需要在京东科技的应用场景下，围绕客户需求持续打磨自身产品。同时在技术之外，两家企业的价值观能否匹配也是决定最终合作成功的重要因素。**京东科技与 SphereEx 两家企业流淌着共同的基因，也表明双方对于未来技术走势、经济走向有着共同的认识，这才促成了此次签约。**\n\n## 以数据生态建设为核心\n\n通过此次以及后续合作，SphereEx 与京东科技双方将围绕着以数据生态建设为核心目标，以此次合作为开端，共同开启数据应用与治理的新篇章。SphereEx 也将**继续秉持以客户业务价值为驱动，依托自身数据智能平台体系，提供数据处理、数据资产管理、数据服务管理等核心服务，与京东科技双方在数据库领域优势互补，探索在线交易、在线分析、弹性伸缩、同城多活、异地灾备等技术应用与落地，形成产品的联合解决方案。**\n\n后续，SphereEx 将与京东科技展开更多业务场景下的实践与探索，就数据库产品在金融、政务、互联网、制造等各个领域的交付、运维等方面进行合作模式的探索，深钻业务应用场景，推动各个场景下技术的创新融合发展，共同推动商业化合作，进一步提升互联网 + 实体经济的创新速度和效率，探索更多数据落地可能，为后续项目的具体落地形成可参考的案例。\n\n![尾图.png](https://official-media.sphere-ex.com/_cb69dec077.png)","date":"2022-02-15","author":"SphereEx","excerpt":"2022 年 1 月 31 日，SphereEx 与京东科技签署战略合作协议","createdAt":"2022-02-16T10:14:26.045Z","updatedAt":"2022-03-31T05:55:24.244Z","publishedAt":"2022-02-16T10:14:29.144Z","locale":"zh"}}]}}},"prev":{"id":48,"attributes":{"feature":true,"title":"Pisanix v0.3.0 is Released, Introducing Data Sharding Strategy!","content":"Data sharding is an effective solution to deal with massive data storage and computation. \n\n[Pisanix](https://www.pisanix.io/en/), a database mesh solution sponsored by SphereEx, now provides data sharding governance capability based on the underlying database - allowing users to scale out computing and storage. \n\nStarting from v0.3.0, Pisanix will gradually support data sharding, with this release supporting single database sharding.\n\n### 1. Introducing data sharding\n\nAs shown in Figure 1 below, data sharding mainly consists of SQL parse, SQL rewriting, SQL route, SQL execution, and result merge.\n\n![db mesh figure1.png](https://official-media.sphere-ex.com/db_mesh_figure1_826abe9841.png)\n\n**Concepts:**\n\n**SQL Parse:** During the sharding process, once the request is received by Pisa-Proxy, it will first go through SQL Parser, and the SQL will be parsed into AST.\n**SQL Rewriting:** After parsing, Pisa-Proxy will rewrite the current SQL statement according to the sharding rules to generate the real SQL statement to be executed.\n**SQL Route:** Pisa-Proxy routes the rewritten SQL statements to the corresponding data source at the backend to execute the SQL statements according to the sharding rules.\n**SQL Execution:** Pisa-Proxy will rewrite the SQL statement and push it down to the back-end real database for execution.\n**Result Merge:** Pisa-Proxy merges the query results and returns them to the client.\n\n### Introducing SQL Rewriting\n\nSQL rewriting is a critical module in data sharding. Pisa-Proxy needs to rewrite the current SQL statement according to the sharding rules to generate the real SQL statement to be executed. SQL rewriting can be of the following types: \n\n#### Identifier Rewriting\n\nIdentifiers to be rewritten include table names, index names, and schema names.\n\nTable name rewriting means the process of finding the location of a logical table in the original SQL and rewriting it to a real table. Table name rewriting is a typical scenario that requires parsing of SQL. For example, if the logical SQL is:\n\n```\nSELECT order_id FROM order.t_order WHERE order_id = 1;\n```\n\n\nSuppose that the shard key of this table is `order_id` and `order_id=1`, and the number of sharding is specified as two, then the SQL statement would be as follows:\n\n```\nSELECT order_id FROM order.t_order_00001 WHERE order_id = 1;\n```\n\nThe following figure shows the data query process: \n\n![db mesh figure2.png](https://official-media.sphere-ex.com/db_mesh_figure2_dbe7559362.png)\n\nTaking data writing as an example, the data insertion process is as follows: \n\n![db mesh figure3.png](https://official-media.sphere-ex.com/db_mesh_figure3_2a91460b38.png)\n\n**Note:** When the SQL rewriting process modifies the identifier to calculate the real table name, it will automatically add the table index according to the sharding rule. The index rule is table name_index, and the index bit is five. For example, the t_order table is overwritten to t_order_00000. Therefore, you need to create the corresponding table name based on the actual business scenario.\n\n#### Column Supplement Rewriting\n\nThere are two cases that need supplement columns in a query statement. In the first case, Pisa-Proxy needs to get the data during the result merge, but the data is not returned by the queried SQL. \n\nIn this case, it mainly applies to GROUP BY and ORDER BY. When merging the results, you need to group and order the field items according to GROUP BY and ORDER BY, but if the original SQL does not contain grouping or ordering items in the selections, you need to rewrite the original SQL. \n\nFor instance, with an instance with the following SQL statement:\n\n```\nSELECT order_id, user_id FROM t_order ORDER BY user_id;\n```\n\nSince user_id is used for sorting, the data of user_id needs to be retrieved in the result merge, the above SQL statement contains the data of user_id, so there is no need to add columns, and modifying the identifier is enough.\n\n```\nSELECT order_id FROM t_order ORDER BY user_id;\n```\n\nThis SQL depends on the user_id for sorting. Therefore, the column must be supplemented. The rewritten SQL is as follows: \n\n```\nSELECT order_id, user_id AS USER_ID_ORDER_BY_DERIVED_00000 FROM t_order_00000 ORDER BY user_id;\n```\n\nThe second case of column supplement is the use of AVG aggregate functions. \n\nIn distributed scenarios, using (avg1 + avg2 + avg3)/3 to calculate the average is incorrect and should be rewritten as (sum1 + sum2 + sum3) /(count1 + count2 + count3). \n\nIn this case, rewriting the SQL containing AVG to SUM and COUNT is required, and recalculating the average when the results are merged. For example: \n\n```\nSELECT AVG(price) FROM t_order WHERE user_id = 1;\n```\n\nThe rewritten SQL is as follows: \n\n```\nSELECT COUNT(price) AS AVG_DERIVED_COUNT_00000, SUM(price) AS AVG_DERIVED_SUM_00000 FROM t_order_00000 WHERE user_id = 1;\n```\n\n### Configuration Description\n\nThis release supports query, update, deletion, and modification of the single database sharding based on a single shard key. The configuration items are as follows:\n\n![configuration description.png](https://official-media.sphere-ex.com/configuration_description_b62a3423c8.png)\n\n**Note:** The broadcast table, binding table, sub-query, table sharding, distributed rules based on expressions, distributed transaction, and cross-database Join will be gradually supported in later versions.\n\nTaking the scenario in Figure 2 and Figure 3 as an example, its corresponding CRD configuration is as follows: \n\n```\n# Declare a VirtualDatabase as a logical database\napiVersion: core.database-mesh.io/v1alpha1\nkind: VirtualDatabase\nmetadata:\n  name: test\n  namespace: default\nspec:\n  services:\n  - databaseMySQL:\n      db: test\n      host: 127.0.0.1\n      password: \"root\"\n      port: 3306\n      user: root\n    name: mysql\n    trafficStrategy: test\n    dataShard: test\n---\n# Declare TrafficStrategy the specified proxy\napiVersion: core.database-mesh.io/v1alpha1\nkind: TrafficStrategy\nmetadata:\n  name: test\n  namespace: default\nspec:\n  loadBalance:\n    simpleLoadBalance:\n      kind: random\n  selector:\n    matchLabels:\n      source: test\n---\n# Declare DataShard the sharding rules\napiVersion: core.database-mesh.io/v1alpha1\nkind: DataShard\nmetadata:\n  name: test\n  namespace: default\n  labels:\n    source: test\nspec:\n  rules:\n  - tableName: \"t_order\"\n    tableStrategy:\n      tableShardingAlgorithmName: \"mod\"\n      tableShardingColumn: \"id\"\n      shardingCount: 2\n    actualDatanodes:\n      valueSource:\n        nodes:\n        - value: \"ds001\"\n---\n# Declare DatabaseEndpoint the identified physical database\napiVersion: core.database-mesh.io/v1alpha1\nkind: DatabaseEndpoint\nmetadata:\n  labels:\n    source: test\n  name: ds001\n  namespace: default\nspec:\n  database:\n    MySQL:\n      db: test\n      host: mysql.default\n      password: root\n      port: 3306\n      user: root\n```\n\n\n### 2. Pisanix v0.3.0 Overview\nThis release has been made possible thanks to 102 merged PRs by the following contributors:\n\n![Pisanix 3 contributors.png](https://official-media.sphere-ex.com/Pisanix_3_contributors_fd029e9f69.png)\n\n#### New Features\n- **Pisa-Controller**\n  - Support DataShard CRD #326\n- **Pisa-Proxy**\n  - Support single database sharding #338\n \n#### Enhancements\n- **Pisa-Controller**\n  - Optimized Sidecar injection #234\n  - Support generic static read/write splitting rule #251\n- **Pisa-Proxy**\n  - Support SHOW STATUS parser #254\n  - Introduce CloudWatch Sinker for later audit events #258\n  - Support CREATE TABLESPACE parser #259\n  - Support CREATE SERVER #261\n  - Front MySQL protocol uses tokio codec #263\n  - Support dynamic read/write splitting Monitor switch #264\n  - Refactor MySQL server runtime #274\n  - Experimental SIMD in SQL Parser #278\n  \n#### Fixes\n- **Pisa-Proxy**\n  - Fix Apple M1 Macbook build failure in some cases #260\n  - Fix malformed SQL format in some cases #291\n  - Fix abnormal SQL parsing issues #297\n  - Fix unexpected AST in some cases #301\n  - Fix Pisa-Proxy crash without receiving VirtualDatabase configuration #319\n  \n#### Others\n- **Golang-SDK**\n  - Move CRD and kubernetes client to github.com/database-mesh/golang-sdk #247\n  - Add DataShard CRD and update VirtualDatabase with DataShard as new spec member in Golang-SDK\n- **Docs**\n  - Add sharding doc: https://www.pisanix.io/docs/Features/sharding\n  - Optimized microservices-demo deployment instruction #318\n  - Fork and optimize the code and configuration of github.com/microservices-demo/microservices-demo for a better demo. See: github.com/database-mesh/microservices-demo\n- **Charts**\n  - Update controller and proxy mirror to v0.3.0\n \n#### Known Issues\n- DO NOT support SHOW DATABASES and SHOW TABLES\n- DO NOT support observability under sharding mode\n\n### 3. Community\n\n![Database Mesh2.png](https://official-media.sphere-ex.com/Database_Mesh2_00ac6eb990.png)\n\n**Pisanix is an open source implementation of Database Mesh. It builds unified database governance based on Rust, and aims at providing four major development and application experiences: local database, unified configuration management, multi-protocol support, and cloud-native architecture.**\n\nThe community is currently collecting more user scenarios and applications. If you've started or are planning to test Pisanix, please record it in the [issue](https://github.com/database-mesh/pisanix/issues/282) below. \n\nThe community will prioritize the development and optimization of features related to real scenarios. \n\n![who's using pisanix.png](https://official-media.sphere-ex.com/who_s_using_pisanix_95f4415d05.png)\n\n【[Download Link](https://github.com/database-mesh/pisanix/releases/tag/v0.3.0)】\n\nThe Pisanix community organizes an online meeting every two weeks. Here are the details to join: \n- [Mailing list](https://groups.google.com/g/database-mesh)\n- [Biweekly meeting - English community](https://meet.google.com/yhv-zrby-pyt) (from February 16, 2022), on Wednesday 9:00 AM PST\n- [Biweekly meeting - Chinese community](https://meeting.tencent.com/dm/6UXDMNsHBVQO) (from April 27, 2022), on Wednesday 9:00 PM GMT+8\n- [Slack](https://databasemesh.slack.com/)\n- [Meeting minutes](https://bit.ly/39Fqt3x)\n\nYou're welcome to join us!","date":"2022-09-28","author":"SphereEx","excerpt":"Data sharding is an effective solution to deal with massive data storage and computation. \n\nPisanix now provides data sharding governance capability based on the underlying database, allowing users to scale out computing and storage.","createdAt":"2022-09-29T08:17:46.414Z","updatedAt":"2022-09-29T10:19:33.554Z","publishedAt":"2022-09-29T08:18:42.213Z","locale":"en","newsType":{"data":null},"cover":{"data":{"id":396,"attributes":{"name":"Database Mesh2.png","alternativeText":"Database Mesh2.png","caption":"Database Mesh2.png","width":1080,"height":414,"formats":{"thumbnail":{"name":"thumbnail_Database Mesh2.png","hash":"thumbnail_Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","width":245,"height":94,"size":20.45,"path":null,"url":"https://official-media.sphere-ex.com/thumbnail_Database_Mesh2_00ac6eb990.png"},"large":{"name":"large_Database Mesh2.png","hash":"large_Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","width":1000,"height":383,"size":126.15,"path":null,"url":"https://official-media.sphere-ex.com/large_Database_Mesh2_00ac6eb990.png"},"medium":{"name":"medium_Database Mesh2.png","hash":"medium_Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","width":750,"height":288,"size":89.97,"path":null,"url":"https://official-media.sphere-ex.com/medium_Database_Mesh2_00ac6eb990.png"},"small":{"name":"small_Database Mesh2.png","hash":"small_Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","width":500,"height":192,"size":52.99,"path":null,"url":"https://official-media.sphere-ex.com/small_Database_Mesh2_00ac6eb990.png"}},"hash":"Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","size":60.86,"url":"https://official-media.sphere-ex.com/Database_Mesh2_00ac6eb990.png","previewUrl":null,"provider":"strapi-provider-upload-s3-compat","provider_metadata":null,"createdAt":"2022-09-29T08:05:47.915Z","updatedAt":"2022-09-29T08:05:47.915Z"}}},"localizations":{"data":[]}}},"article":{"id":43,"attributes":{"feature":true,"title":"Pisanix is Available! An Open Source Database Mesh Solution Launched by SphereEx","content":"\n>We are launching Pisanix v0.1.0, an open source solution for [Database Mesh](https://www.database-mesh.io/index.html). From its inception, Pisanix embraced the core idea of Database Mesh: **to build an efficient and programmable database governance experience for the cloud native era**. This marks a turning point, making Database Mesh no longer mere theory, but a framework that can be implemented in real scenarios.\n\n[Pisanix](https://github.com/database-mesh/pisanix) is an open source solution for Database Mesh sponsored by SphereEx. Written in [Go](https://go.dev/) and [Rust](https://www.rust-lang.org/) for the [Kubernetes](https://kubernetes.io/) environment, it currently supports [MySQL](https://www.mysql.com/). It includes the following three components: Pisa-Controller, Pisa-Proxy and Pisa-Daemon (coming soon), which help users easily implement SQL-aware traffic governance based on the Database Mesh framework, runtime resource-oriented programmability, and database reliability engineering (DBRE) to facilitate database governance in the cloud native era.\n## Pisanix v0.1.0 Features\nPisanix v0.1.0 supports the following features:\n- Pisa-Controller\n  - Support the injection of [Sidecar](https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-sidecar/).\n  - Read Kubernetes custom resources, such as VirtualDatabase, TrafficStrategy and DatabaseEndpoint, and convert them to Pisa-Proxy configuration.\n- Pisa-Proxy\n  - Support the deployment of Kubernetes Sidecar and obtain configuration from Pisa-Controller.\n  - Support multi-port MySQL protocol proxy.\n  - Support connection pool and basic load balancer.\n  - Support [Yacc](https://www.geeksforgeeks.org/introduction-to-yacc/)-based SQL parser including , `SELECT`, `INSERT`, `UPDATE`, `DELETE`, `PREPARE`, `EXECUTE`, `BEGIN`, and `SET`.\n  - Support [Regex](https://en.wikipedia.org/wiki/Regular_expression)-based SQL circuit breaker.\n  - Support SQL concurrency control: restrict the number of SQL executed at a given time based on the Regex.\n  - Observability: support `sql_processed_total` and `sql_processed_duration`.\n  - Support deployment in a non-Kubernetes environment as an independent component.\n## Introducing Pisanix\nPisanix adopts the classic deployment mode of separating the control plane and data plane. It supports unified database access declaration configuration, supports access resource limits to the programmable database, and supports standardized automatic database maintenance through various `CustomResourceDefinition`. It is designed to implement database governance in a cloud native environment.\n\nPisanix currently provides the following capabilities: \n- **SQL-Aware Traffic Governance**: provide load balancing, auditing, access control, and observability of database traffic based on SQL parsing capability.\n- **Runtime Resource-Oriented Management**: support configurable and programmable resource capabilities by means of Linux kernel.\n- **DBRE**: it can design an engineer-centered product with database reliability as the principle, and establish a unified cloud interface on the database\n ![00000.PNG](https://official-media.sphere-ex.com/00000_e39fd0bb0b.PNG)\n**Pisa-Controller**\nPisa-Controller is the control plane of Pisanix and an indispensable component, implemented by Go language. It is responsible for the control of data plane components and is the entry point for all Pisanix configurations. It has the following functions:\n- Sidecar injection: inject Pisa-Proxy container into the specified Pod with MutatingAdmissionWebhook.\n- Pisa-Proxy Configuration delivery and indicator collection: obtain and convert service discovery, load balancer, traffic control, and SQL firewall rules in CRD format in the cluster, deliver them to Pisa-Proxy, and collect various indicators when Pisa-Proxy is running.\n- Pisa-Daemon configuration conversion and indicator collection: obtain and convert traffic QoS rules in CRD format in the cluster, deliver them to Pisa-Daemon, and collect various indicators when Pisa-Daemon is running.\n\n**Pisa-Proxy**\nPisa-Proxy is a high-performance proxy and an indispensable component implemented by Rust. It is deployed in the same Pod with business applications in Sidecar mode. It monitors the MySQL protocol to obtain the traffic when applications access the database, and provides various governance capabilities:\n- SQL traffic governance: implement load balancer strategies and circuit breaker through SQL parsing.\n- Access control: achieve fine-grained permission control based on the relationship between users and data permission.\n- SQL firewall: prevent high-risk SQL statements from being executed\n- Observability: expose various database access indicators, such as throughput and latency.\n**Pisa-Daemon (coming soon）**\nPisa-Daemon is a node-level data plane and is an optional component. Pisa-Daemon is deployed on every node in a Kubernetes cluster and provides functions such as resource management through the various capabilities of the host kernel. \n- Runtime traffic governance: it provides QoS guarantee for database access traffic with [eBPF](https://ebpf.io/) and other technologies to reduce the interference between traffic.\n## Pisanix Examples\nDatabase Mesh's governance framework relies on the following workloads:\n- Virtual database: a database endpoint accessible to developers.\n- Traffic strategy: governance strategies for database access traffic such as label router, data sharding, load balancer, concurrency control and circuit breaker.\n- Access control: provides fine-grained access control based on specified rules, such as table level.\n- Security statement: data security statements such as data encryption.\n- Audit application: record applications’ operation behavior on the database, such as accessing the risk control system.\n- Observability: configuration of database observability such as access traffic, running state, and performance indicators etc.\n- Event bus: an event bus that accepts data changes.\n- QoS statements: resource QoS metrics set to improve the overall SLO metrics of the database.\n- Backup plan: perform database backups as scheduled tasks.\n- `Schema` pipeline: manage database `schema` changes in code to improve the success rate of database DDL and DML changes.\n\nCurrently, Pisanix supports the following three `CustomResourceDefinition`: VirtualDatabase, TrafficStrategy and DatabaseEndpoint.\n\n**VirtualDatabase**\nVirtualDatabase is the central concept for all database governance activities. VirtualDatabase represents an endpoint for database access for developers and a logical database for DBAs. The actual back-end data source, DatabaseEndpoint, and specified TrafficStrategy need to be provided for VirtualDatabase.\nPisanix currently supports VirtualDatabase of the MySQL type. The configuration example is as follows:\n\n```\napiVersion: core.database-mesh.io/v1alpha1\nkind: VirtualDatabase\nmetadata:\n  name: catalogue\n  namespace: default\nspec:\n  services:\n  - databaseMySQL:               # the virtual database type is MySQL\n      db: socksdb                # virtual database: schema\n      host: 127.0.0.1            # access address of virtual database\n      port: 3306                 # access port of virtual database\n      user: catalogue_user       # access username of virtual database\n      password: default_password # access password of virtual database\n    name: mysql                  # name of virtual database\n    trafficStrategy: catalogue   # traffic strategy of specified virtual database\n```\n\n**TrafficStrategy**\nTrafficStrategy describes the governance policies for database access traffic, which are configured by DBAs, such as label-based request routing, SLA-driven load balancer, SQL circuit breaker, and concurrency control.\nPisanix supports basic load balancer, regex-based SQL circuit breaker, and concurrency control. The configuration example is as follows:\n\n```\napiVersion: core.database-mesh.io/v1alpha1\nkind: TrafficStrategy\nkind: TrafficStrategy\nmetadata:\n  name: catalogue\n  namespace: default\nspec:\n  loadBalance:                   # load balancer strategy of accessing virtual database\n    simpleLoadBalance:           # load balancer strategy is simple load balancer\n      kind: random               # load balancer strategy is random\n  selector:\n    matchLabels:                 # declare label selector to select a target DatabaseEndpoint\n      source: catalogue\n```\n\n**DatabaseEndpoint**\nDatabaseEndpoint describes the actual database access endpoint, which can be a database instance deployed on the cloud and is a priority resource for DBAs. As an abstraction from a real database, DatabaseEndpoint can be consumed by multiple VirtualDatabase, meeting different needs of developers and DBAs.\nPisanix supports DatabaseEndpoint of the MySQL type. The configuration example is as follows: \nsource\n\n```\napiVersion: core.database-mesh.io/v1alpha1\nkind: DatabaseEndpoint\nmetadata:\n  name: catalogue-db\n  namespace: default\nspec:\n  database:\n    MySQL:                        # data source type is MySQL\n      db: socksdb                 # database is schema\n      host: cataloguedb.codtynlacssn.rds.cn-northwest-1.amazonaws.com.cn # address of data source\n      port: 3306                  # access port of data source\n      user: root                  # access username of data source    \n      password: fake_password     # access password of data \n```\n\n[Weaveworks](https://www.weave.works/)' [Socks-Shop](https://microservices-demo.github.io/) simulates the user-facing part of an e-commerce website that sells socks. It is intended to aid the demonstration and testing of microservice and cloud native technologies and provide a real testable application. The project uses the following technologies or frameworks: Java Spring Boot, Go, Node.js and uses containers to build and deploy.\n\nTaking the socks-shop microservice project as an example, its governance process with the Pisanix framework is as follows:\n\n1. The developer will submit VirtualDatabase for Catalogue service to apply for the VirtualDatabase type.\n2. The DBA creates the associated TrafficStrategy and DatabaseEndpoint for VirtualDatabase.\n3. Add label pisanix.io/inject=enabled for the Catalogue service by the SRE, enable the injection of Sidecar, and then configure the Catalogue database access information to the address in VirtualDatabase and start the application.\nAfter the configuration is completed, access the front-end service for verification.\n![1111110.png](https://official-media.sphere-ex.com/1111110_b5a1b2f868.png)\n## Pisanix's design concept: Database Mesh\nThe article [Database Mesh 2.0](https://www.sphere-ex.com/zh/news/33/): Database Governance in a Cloud Native Environment, describes how Database Mesh 2.0 provides a database-centric governance framework.\n- Databases are first-class citizens. All abstractions are centered on database governance, such as access control, traffic governance, and observability.\n- Engineer-oriented experience: developers can continue to develop through easy to use database declarations and definitions regardless of the location of the database. For operation and maintenance personnel and DBAs, it provides a variety of abstraction of database governance behavior to realize automatic database reliability engineering.\n- Cloud native: built and oriented towards cloud native, it is suitable to various cloud environments with an open ecosystem and implementation mechanism. Vendor lock-in is effectively eliminated.\n![333.png](https://official-media.sphere-ex.com/333_57bed58e11.png)\nFor more details, refer to [Database Mesh's official website](https://www.database-mesh.io/).\n## Outlook\nPisanix is just getting started. In the future, it will focus on enhancing traffic governance ability, such as developing data sharding ability based on sharding key, audit application for data access behavior, QoS of runtime resources, etc. while continuously improving its performance and ease of use. Pisanix plans to open the plugin extension mechanism, allowing users to write policies to adapt to different business scenarios, putting Unix's design philosophy of \"policy and mechanism separation\" into practice.\n## Community\nPisanix is just getting started. The Pisanix welcomes you to join us and share your ideas and opinions. It can be with code or documentation, issues or pull requests. For those of you who are willing to engage in database governance, let's build the Pisanix community together.\nThe community holds an online discussion every two weeks:\n- [Mailing list](https://groups.google.com/g/database-mesh)\n- [Biweekly meeting - English community](https://meet.google.com/yhv-zrby-pyt) (from February 27, 2022), on Wednesday 9:00 AM PST\n- [Biweekly meeting - Chinese community](https://meeting.tencent.com/dm/6UXDMNsHBVQO) (from April 27, 2022), on Wednesday 9:00 PM GMT+8\n- [Slack](https://databasemesh.slack.com/)\n- [Meeting minutes](https://bit.ly/39Fqt3x)","date":"2022-06-17","author":null,"excerpt":"Facilitate database governance in the cloud native era","createdAt":"2022-06-17T07:23:39.056Z","updatedAt":"2022-10-11T06:20:03.747Z","publishedAt":"2022-06-17T07:39:11.741Z","locale":"en","newsType":{"data":null},"cover":{"data":{"id":396,"attributes":{"name":"Database Mesh2.png","alternativeText":"Database Mesh2.png","caption":"Database Mesh2.png","width":1080,"height":414,"formats":{"thumbnail":{"name":"thumbnail_Database Mesh2.png","hash":"thumbnail_Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","width":245,"height":94,"size":20.45,"path":null,"url":"https://official-media.sphere-ex.com/thumbnail_Database_Mesh2_00ac6eb990.png"},"large":{"name":"large_Database Mesh2.png","hash":"large_Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","width":1000,"height":383,"size":126.15,"path":null,"url":"https://official-media.sphere-ex.com/large_Database_Mesh2_00ac6eb990.png"},"medium":{"name":"medium_Database Mesh2.png","hash":"medium_Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","width":750,"height":288,"size":89.97,"path":null,"url":"https://official-media.sphere-ex.com/medium_Database_Mesh2_00ac6eb990.png"},"small":{"name":"small_Database Mesh2.png","hash":"small_Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","width":500,"height":192,"size":52.99,"path":null,"url":"https://official-media.sphere-ex.com/small_Database_Mesh2_00ac6eb990.png"}},"hash":"Database_Mesh2_00ac6eb990","ext":".png","mime":"image/png","size":60.86,"url":"https://official-media.sphere-ex.com/Database_Mesh2_00ac6eb990.png","previewUrl":null,"provider":"strapi-provider-upload-s3-compat","provider_metadata":null,"createdAt":"2022-09-29T08:05:47.915Z","updatedAt":"2022-09-29T08:05:47.915Z"}}},"localizations":{"data":[]}}}}},
    "staticQueryHashes": []}