pingcap / pingcap/community

Incubating Program: Modelized Data Interface (MDI)

Open
#418 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
267
Forks
154
PR merge metrics
No merged PRs in 30d

Description

Project Incubating Request

Modelized Data Interface(Hereinafter referred to as, MDI)

Describe the project you want to incubate:

Summary

We note that there is no dedicated data service tool in the TiDB ecosystem, i.e., it is easy to obtain high-performance APIs for data manipulation (or access) through existing databases in order to achieve the goal of simplifying (or replacing) the back-end development work without repeating the inefficient work of developing interfaces for third-party systems.

Motivation

This project mainly addresses the following issues.

  • Centralized data management. TiDB is naturally suitable for storing large amount of data and becoming a data center, then the management of these data is required to have special tools. the functions currently designed by MDI include the management of data models and their versions, the management of model relationships, and the management of data access rights.
  • Flexible data query. Most of the Automatic API generation Tool on the market currently generates traditional APIs like restful, which is less flexible and less available. Then MDI also supports custom queries like GraphQL and OData to improve the flexibility of system queries and the availability of APIs, and really reduce the back-end development workload. In addition, in order to support more complex queries, you can consider SQL wrapping function to wrap a segment SQL query into an API.
  • Flexible data processing. Combined crosstalk function of APIs. Encapsulate a simple business logic and become a restful API by arranging add, delete, and check APIs with some transactional.
  • Alternatives to triggers. TiDB currently does not support triggers, and the implementation of related functions requires users to operate at the business level, which is tedious. MDI can provide a unified URL callback function to achieve a trigger-like effect.

Estimated Time

6 Months

Your RFC/Proposal?

A POC version has been implemented internally in our company. It already has features related to automatic generation of restful API and GraphQL, OData API, other features mentioned above are yet to be improved. In addition, the code specification, unit testing are to be improved. We are now ready to open source this project, with the power of the community to give it more life.Here is the open source code for this project:https://github.com/DigitalChinaOpenSource/MDI-kernel

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked MDI-kernel repository and compare its existing RESTful API, GraphQL, and OData proof-of-concept features with this proposal. The issue identifies unit testing and code specification as incomplete, but a suitable outcome would first require a defined, concrete incubation scope beyond the six-month project estimate.

Written by the indexing model from the issue text.

Assessment

Tech stack
graphql, sql
Domain
api, backend-api-design, databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.