{
    "componentChunkName": "component---src-templates-case-study-detail-ts",
    "path": "/case-studies/15",
    "result": {"pageContext":{"next":{"id":16,"attributes":{"feature":false,"title":"Apache ShardingSphere & China Unicom Digital Technology: Ensuring Stability, Efficiency, and Replicability at Scale","content":"China Unicom Digital Tech is the subsidiary of [China Unicom](https://www.chinaunicom.com.hk/en/global/home.php), a global leading telecommunication operator with over 310 million subscribers as of 2021.\n\nThe company integrates with China Unicom’s capabilities such as cloud computing, Big Data, IoT, AI, blockchain, and security and touches on smart city, industrial internet, ecological protection, cultural tourism, and other fields.\n\nUnicom Digital Tech has accumulated a large number of industry benchmark cases and successfully provided customers with diverse and professional products & services.\n\n## Background\nIn recent years, dozens of service hotline platforms have been launched with the help of Unicom Digital Tech, in a bid to improve enterprise and government services.\n\nThe service hotlines are characterized by high concurrency and large amounts of data. Every time we dial a hotline, a work order record is generated. The business volumes of a hotline during the epidemic have increased several times compared to the past.\n\nIn the work order module of the government or emergency services hotlines, to meet the business needs of massive amounts of data and high stability, Unicom Digital Tech adopts [ShardingSphere](https://shardingsphere.apache.org/) to carry out sharding and store work order information.\n\n## Business challenges\nGovernment service hotlines are the main channel through which the government interacts with enterprises and the public. It provides 24/7 services for the public through a single telephone number.\n\nIn addition to dealing with work orders, it also involves services such as telephone traffic, Wiki, voice chat, etc.\n\nIn the system planning stage, the database layer is the cornerstone of the business system, so the technology selection process is crucial. System stability is a hard indicator, followed by performance, which directly affects the hotline’s service capability.\n\nAt the same time, it should allow for easy maintenance and management, and facilitate system upgrades and backend maintenance.\n\nThe hotline service raises the following requirements for database architecture selection:\n\n- Maturity and stability\n- High performance\n- Easy maintenance\n- Low coupling of business code\n\n## Why did Unicom Digital Technology choose ShardingSphere?\nThe technical team conducted several rounds of research and tests in terms of stability, features, access mode, and product performance, and they finally choose the “ShardingSphere + [MySQL](https://www.mysql.com/)” distributed database solution.\n\n- **Advanced concept**\n\nAn increasing number of application scenarios have exacerbated database fragmentation. [Database Plus](https://faun.pub/whats-the-database-plus-concepand-what-challenges-can-it-solve-715920ba65aa) is designed to build an ecosystem on top of fragmented heterogeneous databases and provide enhancements capability for the database.\n\nAdditionally, it can prevent database binding, achieve independent control, add more features to the original database, and improve the overall feature ceiling of the data infrastructure.\n\n- **Maturity and stability**\n\nThe ShardingSphere project started in 2016. Following years of R&D and iterations, the project has been polished and has proven its stability, maturity, and reliability in multiple Internet scenarios.\n\n- **Comprehensive features**\n\nIn addition to sharding capability, ShardingSphere is also capable of data encryption & decryption and shadow DB, which were also among the evaluation indicators of the technical team.\n\nThe scenario requirements of security and stress testing can be met by a set of technology stacks. ShardingSphere’s capabilities provide improved support for the construction and architecture expansion of the hotline system.\n\n- **High compatibility / easy access**\n\nShardingSphere is compatible with the MySQL protocol and supports multiple syntaxes. In the development process, there is almost no need to worry about access to SQL as it is really convenient.\n\n- **High performance**\n\nWhen the hotline is busy, thousands of on-duty operators are online. The work order record includes tens of millions of records, which create a certain demand for performance.\n\nShardingSphere-JDBC is positioned as a lightweight Java framework with ideal stress test results and data, which can meet the requirements of government system service capabilities.\n\n- **Simplified operation & maintenance**\n\nOn the basis of JDBC’s high performance, ShardingSphere also provides a Proxy friendly to ops teams, which can be directly accessed using common clients.\n\nIn addition to the trade-offs of the above five key considerations, other database middleware products were also taken into consideration. The following table indicates the comparison between ShardingSphere and [MyCat](http://mycat.sourceforge.net/).\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mc2d1n3csc1bf9vu26ab.png)\n \n\n## Solutions\nAs “ShardingSphere+MySQL” ensures stability, ease of use, and ultimate performance, this configuration has been replicated and used in many government and enterprise service hotline projects of Unicom Digital Tech.\n\n- **Deployment mode**\nThe combination of [ShardingSphere-JDBC](https://shardingsphere.apache.org/document/current/en/overview/#shardingsphere-jdbc) and [ShardingSphere-Proxy](https://shardingsphere.apache.org/document/current/en/quick-start/shardingsphere-proxy-quick-start/) ensures both system performance and maintainability.\n\n- **Sharding key / sharding algorithm**\nThe work order table of the hotline service is relatively large, and the logic is simple to use. Therefore, the work order ID is selected as the sharding key, and the data is distributed through the hash algorithm.\n\n- **Migration**\nThe new project does not involve historical data, so there is no need to consider the data migration process, and it can be directly used when it goes live.\n\n- **Implementation process**\nOwing to the comprehensive evaluation of the technical scheme and multiple copies of the scheme, the implementation process is smooth.\n\n- **System architecture**\nThe hotline service module adopts the micro-service architecture\n\nThe business module of the hotline service adopts the micro-service architecture, with nodes ranging from ten to dozens, depending on the scale of specific provinces and cities. At the database layer, physical machines are used to deploy three-node MHA. Each hotline system requires four sets of MHA in general.\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v8k9lv1l3pjxme0e7sxs.png)\n \n\n## Advantages\n\n> Business\n\n-  the client mode. It ensures the government hotline’s requirements on performance to the greatest degree.\n- System stability provides strong support for business continuity.\n\n> R&D\n\n- Excellent compatibility. It is compatible with mainstream database SQL syntax and can be used after docking.\n- Comprehensive features. It supports read/write splitting, data encryption, and full-link stress testing, with strong system scalability.\n\n> OPS\n\n- It supports the proxy mode and provides easy maintenance for Ops teams.\n\n> Technology selection\n\n- It prevents database binding and provides enough flexibility for future upgrades.\n\n## Conclusion\nThe hotline service cases of China Unicom Digital Tech verified ShardingSphere’s capability to support government service scenarios and further proved that ShardingSphere can be used in any industry.\n\n## Project Links:\n[ShardingSphere Github](https://github.com/apache/shardingsphere/issues?page=1&q=is%3Aopen+is%3Aissue+label%3A%22project%3A+OpenForce+2022%22)\n\n[ShardingSphere Twitter](https://github.com/apache/shardingsphere/issues?page=1&q=is%3Aopen+is%3Aissue+label%3A%22project%3A+OpenForce+2022%22)\n\n[ShardingSphere Slack](https://join.slack.com/t/apacheshardingsphere/shared_invite/zt-sbdde7ie-SjDqo9~I4rYcR18bq0SYTg)\n\n[Contributor Guide](https://shardingsphere.apache.org/community/cn/contribute/)","date":"2022-07-20","author":"SphereEx","excerpt":"China Unicom Digital Technology, a global telco operator with 310 million subscribers, chose ShardingSphere to manage its gov and enterprise hotlines data infrastructure.","metaDescription":"China Unicom is a company that provides broadband communications and information services. It has subsidiaries in 31 provinces (autonomous regions and municipalities) across China and many countries and regions around the world.","createdAt":"2022-09-26T06:38:43.311Z","updatedAt":"2022-09-27T06:55:16.269Z","publishedAt":"2022-09-27T06:55:16.266Z","locale":"en","caseStudiesType":{"data":{"id":7,"attributes":{"name":"Telecom","createdAt":"2022-09-26T10:29:57.244Z","updatedAt":"2022-09-27T06:59:48.158Z","publishedAt":"2022-09-27T06:59:48.156Z","locale":"en"}}},"cover":{"data":{"id":335,"attributes":{"name":"China unicom.png","alternativeText":"China unicom.png","caption":"China unicom.png","width":722,"height":615,"formats":{"thumbnail":{"name":"thumbnail_China unicom.png","hash":"thumbnail_China_unicom_483a43110d","ext":".png","mime":"image/png","width":183,"height":156,"size":11.99,"path":null,"url":"https://official-media.sphere-ex.com/thumbnail_China_unicom_483a43110d.png"},"small":{"name":"small_China unicom.png","hash":"small_China_unicom_483a43110d","ext":".png","mime":"image/png","width":500,"height":426,"size":46.22,"path":null,"url":"https://official-media.sphere-ex.com/small_China_unicom_483a43110d.png"}},"hash":"China_unicom_483a43110d","ext":".png","mime":"image/png","size":61.21,"url":"https://official-media.sphere-ex.com/China_unicom_483a43110d.png","previewUrl":null,"provider":"strapi-provider-upload-s3-compat","provider_metadata":null,"createdAt":"2022-09-26T06:39:16.946Z","updatedAt":"2022-09-26T06:39:16.946Z"}}},"metaLogo":{"data":{"id":350,"attributes":{"name":"China unicom logo.png","alternativeText":"China unicom logo.png","caption":"China unicom logo.png","width":750,"height":571,"formats":{"thumbnail":{"name":"thumbnail_China unicom logo.png","hash":"thumbnail_China_unicom_logo_2aba6471b9","ext":".png","mime":"image/png","width":205,"height":156,"size":13.18,"path":null,"url":"https://official-media.sphere-ex.com/thumbnail_China_unicom_logo_2aba6471b9.png"},"small":{"name":"small_China unicom logo.png","hash":"small_China_unicom_logo_2aba6471b9","ext":".png","mime":"image/png","width":500,"height":381,"size":31.14,"path":null,"url":"https://official-media.sphere-ex.com/small_China_unicom_logo_2aba6471b9.png"}},"hash":"China_unicom_logo_2aba6471b9","ext":".png","mime":"image/png","size":15.23,"url":"https://official-media.sphere-ex.com/China_unicom_logo_2aba6471b9.png","previewUrl":null,"provider":"strapi-provider-upload-s3-compat","provider_metadata":null,"createdAt":"2022-09-26T08:28:31.851Z","updatedAt":"2022-09-26T08:28:31.851Z"}}},"localizations":{"data":[]}}},"prev":null,"article":{"id":15,"attributes":{"feature":true,"title":"Apache ShardingSphere & Energy Monster","content":"[Energy Monster](https://ir.enmonster.com/)’s application of [ShardingSphere-JDBC](https://shardingsphere.apache.org/document/current/en/overview/#shardingsphere-jdbc)\n\n[Energy Monster](https://ir.enmonster.com/) is a consumer tech company with the mission to energize everyday life. The company is the largest provider of mobile device charging services in Asia.\n\nAs the company’s business concurrency volume is getting larger, the amount of data generated (users, orders, activities, etc.) increases each day. The traditional relational database has proven to be inadequate in supporting millions or tens of millions of data volumes in a single database or table.\n\nPerformance has been unable to meet the benchmark requirements of business development. Under these circumstances, data sharding is an effective way to solve the problem.\n\n## Technology selection\nUnder the [Database Plus](https://shardingsphere.apache.org/) concept, ShardingSphere is designed to build an ecosystem on top of heterogeneous databases. The goal is to provide globally scalable and enhanced computing capabilities while maximizing the original database computing capabilities.\n\nThe interaction between applications and databases becomes oriented towards the Database Plus standard, therefore minimizing the impact of database fragmentation on upper-layer services.\n\nWithin the ShardingSphere ecosystem, [ShardingSphere-JDBC](https://shardingsphere.apache.org/document/current/en/overview/#shardingsphere-jdbc) is positioned as a lightweight Java framework, providing additional services in Java’s JDBC layer.\n\nIt uses the client to directly connect to the database and provide services in the form of a jar package, without additional deployment and dependence. It can be understood as an enhanced version of the JDBC driver, which is fully compatible with JDBC and various ORM frameworks.\n\nShardingSphere-JDBC enables developers to focus only on the work outside the data layer by coordinating the data read and write under the data sharding, instead of using business code to manually select databases and tables.\n\n## Business case\nUCS is Energy Monster’s user-centric service providing basic functionality for users on the Server side. In 2018, it was stripped from [PHP](https://www.php.net/) Server and moved to the Java technology stack to implement microservitization.\n\nIt involves the design of new databases and tables and data cleaning and migration. The whole switchover process was expected to ensure the following functions:\n\n- Stability: smooth release in a short time without halting.\n\n- Accuracy: ensure accurate cleaning of tens of millions of data volumes.\n\n- Scalability: solve the performance problems caused by increasing data volume and ensure scalability.\n\n> Solutions to data cleansing and migration\n\n- Initial data synchronization.\n- The application’s server cuts off the entry (users).\n- Data synchronization (updates and new users since the last time point).\n- Data cleaning.\n- User center release.\n\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2t8jnqgh5pfimhxa07id.png)\n\n\n> Data sharding strategy\n\nThe database adopts a database shards design, divided into 16 databases. The default shard key is `user_id` and the default sharding strategy `user_id` is mod 16, such as `${user_id % 16}` for the user table. For SQL that does not carry shard keys, broadcast routing is used.\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t6nihbk4du8d9h1sd5sf.png)\n\n\n`user_id` is used as the shard key because `user_id` can cover most business scenarios, and other fields possibly can be empty. In the local test, the query of shard key strategy (openId,mobile) took 50ms to 200ms.\n\n> Using the sharding algorithm\n\nThere are currently three sharding algorithms available.\n\n- Standard sharding algorithm. It corresponds to `StandardShardingAlgorithm`, used for scenarios that use a single key as the shard key, such as =, IN, BETWEEN AND, >, <, > =, < =.\n- Complex sharding algorithm. It corresponds to `ComplexKeysShardingAlgorithm`, used for scenarios that use multi-key as the shard key. The logic with multiple shard keys is complex and requires developers to handle it by themselves.\n- Hint sharding algorithm. It corresponds to `HintShardingAlgorithm`, used for scenarios where the Hint row is used for sharding.\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5uv7u0nrglequ83gn4ky.png)\n\n\n## Upgrading ShardingSphere-JDBC\n\nShardingSphere-JDBC is used in multiple business scenarios, such as order, inventory, and finance. By 2021, the R&D groups or teams were using different versions of ShardingSphere-JDBC, ranging from 1.X to 4.X, which is difficult to achieve unified maintenance in the later stage.\n\nAdditionally, there are some potential bugs and missing functions in the earlier version. Based on requirements for unified management and availability, we implemented a project to unify the ShardingSphere-JDBC’s versions used by the company and upgrade them to a 4.1.1 stable version in April 2021.\n\n**The following problems were encountered during the upgrade:**\n\n**1. It takes a long time to start the service after the upgrade.**\n\nShardingSphere-JDBC checks the metadata consistency of sub-tables when the service is started. The configuration item `max.connections.size.per.quer` (maximum number of connections that can be opened per query) is 1 by default. With a large number of tables, the loading process would be slow. You need to refer to the connection pool configuration to improve the loading speed.\n\n**2. There is no response when there is no shard key in the sub-table query.**\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/641dysf5zoizgr8bmjuq.png)\n\n\nLogical SQL query does not specify shard keys and it queries all the tables according to the whole database tables router in broadcasting routing.\n\nThe configuration items have 108 pieces of real tables in a database. According to the configuration of `maxConnectionsizeperquery=50`, ShardingSphere-JDBC uses the connection limit mode, divides the query requests into three groups, and merges the results with in-memory. As a result, 36 database connections are required for one query. But the `maxActive` configured by the [druid](https://druid.apache.org/) thread pool is set to 20, resulting in a deadlock.\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ydv03pncno3wsd23y7r1.png)\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/61blt38kcoukha8aguob.png)\n\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2c2w85mdryc53gh4ope5.png)\n\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/568lubr5zg52ropjw374.png)\n\n\n\n**Solutions:**\n\n- Combine `check.table.metadata.enabled=true`（check the metadata consistency in sub-tables when started）and properly configure - `maxConnectionSizePerQuery`（maximum number of connections that can be opened by each query).\n- `maxConnectionSizePerQuery` should be less than the maximum number of active threads configured by the druid thread pool.\n\n**3. After upgrading from 1.X, an error message “Cannot update Sharding key” is displayed in SQL execution, and the actual shard key value is not updated.**\n\nTo avoid data query failure caused by changing the shard key value, shard key detection is added to the `SQL update` in the 4.X version. The error can be rectified in the following ways:\n\n- remove the shard key when updating.\n- the shard key is added to the `where` statement synchronously.\n\n**4. A start failure is caused when using `druid-spring-boot-starter`, which is incompatible with `Sharding-datasource`.**\n\nThe druid data connection pool starter will load and create a default data source. This will cause conflicts when ShardingSphere-JDBC creates data sources.\n\n**5. `inline strategy` reports an error in range query.**\n\nThe `inline strategy` doesn't support range query by default and the `standard strategy` is advised. Add the following configuration if the `inline strategy` is needed for the range query.\n\n`spring.shardingsphere.props.allow.range.query.with.inline.sharding: true`\n\n**Note:** Here all the `inline strategy` range queries will query each sub-table in broadcasting.\n\n**6. The “Cannot find owner from table” error is reported.**\n\nSQL (simplified):\n\n`select id from` (select id from x) as a group by a.id\n\nThe 4.X version supports limited sub-queries. This problem is caused by the name of the intermediate table. Remove the table alias of `select` or `group order` or other fields.\n\n> [https://github.com/apache/shardingsphere/issues/4810](https://github.com/apache/shardingsphere/issues/4810)\n\n**7. The table’s primary key conflicts with the primary key generated by the [SNOWFLAKE](https://programming.vip/docs/overview-of-snowflake-algorithm.html) algorithm.**\n\nShardingSphere provides flexible ways to configure distributed primary key generation strategies. In the sharding rule configuration module, you can configure the primary key generation strategy for each table.\n\nBy default, the [snowflake](https://programming.vip/docs/overview-of-snowflake-algorithm.html) algorithm is used to generate long integer data of 64bit. The snowflake generator needs to be configured with:\n\n`spring.shardingsphere.sharding.tables.x.key-generator.props.worker.id = ${dcc.node.id}`\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dbopmsazvtztkb0p2m0z.png)\n\n\n\nThe company uses the [apollo](https://www.apolloconfig.com/#/) configuration center to deliver the node id of the service instance. The service uses multi-data sources. If you use the YAML file to load sharding configuration, the `workId` cannot be automatically loaded into sharding configuration items.\n\n**Solutions:**\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mfxy2xgsl6w0bwgi0hqv.png)\n\n\nUse the custom generator type based on the built-in `SnowflakeShardingKeyGenerator`.\n\nIf the primary key is used as a shard key, configure `max.vibration.offset` based on the data sharding value to increase the vibration range.\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7jo25gkyz57kyttllvsd.png)\n\n\n\n**8. The 3.X version reports an error when `CASE WHEN` statement is executed.**\n\nFirst, the 3.X and 4.X versions don’t support the `case when` statement.\n\nThe 3.X and 4.X versions have different logics when parsing the shard keys of `case when`'s `update` statement. The 4.X `parserEngine.parse` method will ignore the `case when` parsing parameters, resulting in inconsistency with the external parameter list and an error when 3.X executes the normal SQL.\n\nThe 3.X version works correctly because the first parameter of `case when` is intentionally set to the shard key when the SQL is written, and the `case when` statement comes first.\n\n> [https://github.com/apache/shardingsphere/issues/13233](https://github.com/apache/shardingsphere/issues/13233)\n\n**Solutions：**\n\n- It is suggested to rewrite SQL as the `case when` is not supported.\n- According to the shard key parsing logic in version 4.1.1, `case when` is placed at the end, and the shard key remains the first parameter of `case when`.\n\n**9. The logical table `actualDataNodes` is configured and no default value error is reported for the primary key.**\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7tpr0fitx420itauw5f8.png)\n\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pprbsvn5n8tdrm2mezs7.png)\n\n\n\n\nThe `check.table.metadata.enabled=true` is not configured for service, and the metadata consistency of sub-tables is not checked by default.\n\nThe first table of `actualDataNodes` configured by services does not exist, resulting in an empty `GenerateKeyContenxt`.\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a75kpppwhniaubgw3iti.png)\n\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cw16ejpxmwvcva9bd9t4.png)\n\n\n\n\n**Solutions：**\n\n- Configure `check.table.metadata.enabled=true`. A non-existent table is detected when started and an error is reported.\n- Rewrite the `actualDataNodes inline` expression to make sure that the first table exists.\n\n**10. In version 3.0, there is a deadlock under the high concurrency of the full database and table router.**\n\nShardingSphere-JDBC uses local transactions by default. In local transactions, the database connection is obtained asynchronously. Under high concurrency, it is possible that all database connections cannot be obtained, resulting in a deadlock.\n\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5eo47dqy991nmvu048k8.png)\n\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdnnfskjri9un1wj6n3h.png)\n\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y8fpd887zvkg5oovt4hm.png)\n\n\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pzqw4c89j1mplfmwfxz0.png)\n\n\n\n\n## Conclusion\n\nAs a [ShardingSphere](https://shardingsphere.apache.org/) core user, [Energy Monster](https://ir.enmonster.com/)’s upgrade process also reflects some problems that community users may encounter in the application of ShardingSphere.\n\nCurrently, Apache ShardingSphere’s stable version has been updated to 5.1.2 and has been optimized in terms of its functions, performance, testing, documentation, and examples.\n\nYou can refer to [Apache ShardingSphere’s official website](https://shardingsphere.apache.org/) for more information. If you have any questions or suggestions, you are also welcome to give feedback on [Github](https://github.com/apache/shardingsphere). The community will actively respond and discuss.\n\n**Project Links:**\n\n[ShardingSphere Github](https://github.com/apache/shardingsphere/issues?page=1&q=is%3Aopen+is%3Aissue+label%3A%22project%3A+OpenForce+2022%22)\n\n[ShardingSphere Twitter](https://twitter.com/ShardingSphere)\n\n[ShardingSphere Slack](https://join.slack.com/t/apacheshardingsphere/shared_invite/zt-sbdde7ie-SjDqo9~I4rYcR18bq0SYTg)\n\n[Contributor Guide](https://shardingsphere.apache.org/community/cn/contribute/)\n\n[GitHub Issues\n](https://github.com/apache/shardingsphere/issues)\n[Contributor Guide](https://shardingsphere.apache.org/community/en/contribute/)","date":"2022-09-06","author":"SphereEx","excerpt":"NASDAQ-listed Energy Monster is the largest provider of mobile device charging services in Asia. This article illustrates how Energy Monster uses ShardingSphere-JDBC.","metaDescription":"Energy Monster is a power bank rental company, allowing its users to rent power banks by scanning QR codes. It is designed to help people to live their life without interruptions. Energy Monster reportedly covers 100 cities and 100K merchants. ","createdAt":"2022-09-26T06:27:13.410Z","updatedAt":"2022-09-28T02:42:03.843Z","publishedAt":"2022-09-27T06:55:09.446Z","locale":"en","caseStudiesType":{"data":{"id":9,"attributes":{"name":"Internet","createdAt":"2022-09-26T10:34:03.086Z","updatedAt":"2022-09-27T06:59:34.838Z","publishedAt":"2022-09-27T06:59:34.836Z","locale":"en"}}},"cover":{"data":{"id":334,"attributes":{"name":"energy monster.png","alternativeText":"energy monster.png","caption":"energy monster.png","width":1093,"height":489,"formats":{"thumbnail":{"name":"thumbnail_energy monster.png","hash":"thumbnail_energy_monster_2f744c0ab8","ext":".png","mime":"image/png","width":245,"height":110,"size":18,"path":null,"url":"https://official-media.sphere-ex.com/thumbnail_energy_monster_2f744c0ab8.png"},"large":{"name":"large_energy monster.png","hash":"large_energy_monster_2f744c0ab8","ext":".png","mime":"image/png","width":1000,"height":447,"size":191.25,"path":null,"url":"https://official-media.sphere-ex.com/large_energy_monster_2f744c0ab8.png"},"medium":{"name":"medium_energy monster.png","hash":"medium_energy_monster_2f744c0ab8","ext":".png","mime":"image/png","width":750,"height":336,"size":115.92,"path":null,"url":"https://official-media.sphere-ex.com/medium_energy_monster_2f744c0ab8.png"},"small":{"name":"small_energy monster.png","hash":"small_energy_monster_2f744c0ab8","ext":".png","mime":"image/png","width":500,"height":224,"size":58.44,"path":null,"url":"https://official-media.sphere-ex.com/small_energy_monster_2f744c0ab8.png"}},"hash":"energy_monster_2f744c0ab8","ext":".png","mime":"image/png","size":182.88,"url":"https://official-media.sphere-ex.com/energy_monster_2f744c0ab8.png","previewUrl":null,"provider":"strapi-provider-upload-s3-compat","provider_metadata":null,"createdAt":"2022-09-26T06:34:45.604Z","updatedAt":"2022-09-26T06:34:45.604Z"}}},"metaLogo":{"data":{"id":349,"attributes":{"name":"Energy monster logo.png","alternativeText":"Energy monster logo.png","caption":"Energy monster logo.png","width":373,"height":298,"formats":{"thumbnail":{"name":"thumbnail_Energy monster logo.png","hash":"thumbnail_Energy_monster_logo_102b9745bc","ext":".png","mime":"image/png","width":195,"height":156,"size":8.8,"path":null,"url":"https://official-media.sphere-ex.com/thumbnail_Energy_monster_logo_102b9745bc.png"}},"hash":"Energy_monster_logo_102b9745bc","ext":".png","mime":"image/png","size":17.3,"url":"https://official-media.sphere-ex.com/Energy_monster_logo_102b9745bc.png","previewUrl":null,"provider":"strapi-provider-upload-s3-compat","provider_metadata":null,"createdAt":"2022-09-26T08:19:26.166Z","updatedAt":"2022-09-26T08:19:26.166Z"}}},"localizations":{"data":[]}}}}},
    "staticQueryHashes": []}