ಕನ್ನಡ

ವೈವಿಧ್ಯಮಯ ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗೆ ಸೇವೆ ಸಲ್ಲಿಸುವ ದೃಢವಾದ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲ APIಗಳನ್ನು ನಿರ್ಮಿಸಲು ಸ್ಕೇಲೆಬಲ್ GraphQL ಸ್ಕೀಮಾ ವಿನ್ಯಾಸದ ಮಾದರಿಗಳನ್ನು ತಿಳಿಯಿರಿ. ಸ್ಕೀಮಾ ಸ್ಟಿಚಿಂಗ್, ಫೆಡರೇಶನ್ ಮತ್ತು ಮಾಡ್ಯುಲರೈಸೇಶನ್‌ನಲ್ಲಿ ಪರಿಣಿತಿ ಪಡೆಯಿರಿ.

GraphQL ಸ್ಕೀಮಾ ವಿನ್ಯಾಸ: ಜಾಗತಿಕ APIಗಳಿಗಾಗಿ ಸ್ಕೇಲೆಬಲ್ ಮಾದರಿಗಳು

GraphQL ಸಾಂಪ್ರದಾಯಿಕ REST APIಗಳಿಗೆ ಒಂದು ಶಕ್ತಿಯುತ ಪರ್ಯಾಯವಾಗಿ ಹೊರಹೊಮ್ಮಿದೆ, ಕ್ಲೈಂಟ್‌ಗಳಿಗೆ ತಮಗೆ ಬೇಕಾದ ಡೇಟಾವನ್ನು ನಿಖರವಾಗಿ ವಿನಂತಿಸುವ ನಮ್ಯತೆಯನ್ನು ನೀಡುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನಿಮ್ಮ GraphQL API ಸಂಕೀರ್ಣತೆ ಮತ್ತು ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಬೆಳೆದಂತೆ - ವಿಶೇಷವಾಗಿ ವೈವಿಧ್ಯಮಯ ಡೇಟಾ ಅವಶ್ಯಕತೆಗಳಿರುವ ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗೆ ಸೇವೆ ಸಲ್ಲಿಸುವಾಗ - ನಿರ್ವಹಣೆ, ಸ್ಕೇಲೆಬಿಲಿಟಿ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ ಎಚ್ಚರಿಕೆಯ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸವು ನಿರ್ಣಾಯಕವಾಗುತ್ತದೆ. ಈ ಲೇಖನವು ಜಾಗತಿಕ ಅಪ್ಲಿಕೇಶನ್‌ನ ಬೇಡಿಕೆಗಳನ್ನು ನಿಭಾಯಿಸಬಲ್ಲ ದೃಢವಾದ APIಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುವ ಹಲವಾರು ಸ್ಕೇಲೆಬಲ್ GraphQL ಸ್ಕೀಮಾ ವಿನ್ಯಾಸ ಮಾದರಿಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ.

ಸ್ಕೇಲೆಬಲ್ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸದ ಪ್ರಾಮುಖ್ಯತೆ

ಚೆನ್ನಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ GraphQL ಸ್ಕೀಮಾ ಯಶಸ್ವಿ APIನ ಅಡಿಪಾಯವಾಗಿದೆ. ನಿಮ್ಮ ಡೇಟಾ ಮತ್ತು ಸೇವೆಗಳೊಂದಿಗೆ ಕ್ಲೈಂಟ್‌ಗಳು ಹೇಗೆ ಸಂವಹನ ನಡೆಸಬಹುದು ಎಂಬುದನ್ನು ಇದು ನಿರ್ದೇಶಿಸುತ್ತದೆ. ಕಳಪೆ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸವು ಹಲವಾರು ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು, ಅವುಗಳೆಂದರೆ:

ಜಾಗತಿಕ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗಾಗಿ, ಈ ಸಮಸ್ಯೆಗಳು ವರ್ಧಿಸುತ್ತವೆ. ವಿವಿಧ ಪ್ರದೇಶಗಳು ವಿಭಿನ್ನ ಡೇಟಾ ಅವಶ್ಯಕತೆಗಳು, ನಿಯಂತ್ರಕ ನಿರ್ಬಂಧಗಳು ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯ ನಿರೀಕ್ಷೆಗಳನ್ನು ಹೊಂದಿರಬಹುದು. ಸ್ಕೇಲೆಬಲ್ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸವು ಈ ಸವಾಲುಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿಭಾಯಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

ಸ್ಕೇಲೆಬಲ್ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸದ ಪ್ರಮುಖ ತತ್ವಗಳು

ನಿರ್ದಿಷ್ಟ ಮಾದರಿಗಳಿಗೆ ಧುಮುಕುವ ಮೊದಲು, ನಿಮ್ಮ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸಕ್ಕೆ ಮಾರ್ಗದರ್ಶನ ನೀಡುವ ಕೆಲವು ಪ್ರಮುಖ ತತ್ವಗಳನ್ನು ವಿವರಿಸೋಣ:

ಸ್ಕೇಲೆಬಲ್ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸದ ಮಾದರಿಗಳು

ದೃಢವಾದ GraphQL APIಗಳನ್ನು ನಿರ್ಮಿಸಲು ನೀವು ಬಳಸಬಹುದಾದ ಹಲವಾರು ಸ್ಕೇಲೆಬಲ್ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸ ಮಾದರಿಗಳು ಇಲ್ಲಿವೆ:

1. ಸ್ಕೀಮಾ ಸ್ಟಿಚಿಂಗ್ (Schema Stitching)

ಸ್ಕೀಮಾ ಸ್ಟಿಚಿಂಗ್ ಬಹು GraphQL APIಗಳನ್ನು ಒಂದೇ, ಏಕೀಕೃತ ಸ್ಕೀಮಾದಲ್ಲಿ ಸಂಯೋಜಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ನಿಮ್ಮ ಡೇಟಾದ ವಿವಿಧ ಭಾಗಗಳಿಗೆ ವಿವಿಧ ತಂಡಗಳು ಅಥವಾ ಸೇವೆಗಳು ಜವಾಬ್ದಾರರಾಗಿರುವಾಗ ಇದು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ. ಇದು ಹಲವಾರು ಮಿನಿ-APIಗಳನ್ನು ಹೊಂದಿರುವುದು ಮತ್ತು 'ಗೇಟ್‌ವೇ' API ಮೂಲಕ ಅವುಗಳನ್ನು ಜೋಡಿಸುವಂತಿದೆ.

ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:

  1. ಪ್ರತಿ ತಂಡ ಅಥವಾ ಸೇವೆಯು ತನ್ನದೇ ಆದ ಸ್ಕೀಮಾದೊಂದಿಗೆ ತನ್ನದೇ ಆದ GraphQL API ಅನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ.
  2. ಕೇಂದ್ರೀಯ ಗೇಟ್‌ವೇ ಸೇವೆಯು ಈ ಸ್ಕೀಮಾಗಳನ್ನು ಒಂದೇ, ಏಕೀಕೃತ ಸ್ಕೀಮಾದಲ್ಲಿ ವಿಲೀನಗೊಳಿಸಲು ಸ್ಕೀಮಾ ಸ್ಟಿಚಿಂಗ್ ಪರಿಕರಗಳನ್ನು (ಅಪೊಲೊ ಫೆಡರೇಶನ್ ಅಥವಾ GraphQL ಮೆಶ್‌ನಂತಹ) ಬಳಸುತ್ತದೆ.
  3. ಕ್ಲೈಂಟ್‌ಗಳು ಗೇಟ್‌ವೇ ಸೇವೆಯೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತಾರೆ, ಅದು ವಿನಂತಿಗಳನ್ನು ಸೂಕ್ತವಾದ ಆಧಾರವಾಗಿರುವ APIಗಳಿಗೆ ರವಾನಿಸುತ್ತದೆ.

ಉದಾಹರಣೆ:

ಉತ್ಪನ್ನಗಳು, ಬಳಕೆದಾರರು ಮತ್ತು ಆರ್ಡರ್‌ಗಳಿಗಾಗಿ ಪ್ರತ್ಯೇಕ APIಗಳನ್ನು ಹೊಂದಿರುವ ಇ-ಕಾಮರ್ಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಪ್ರತಿಯೊಂದು API ತನ್ನದೇ ಆದ ಸ್ಕೀಮಾವನ್ನು ಹೊಂದಿದೆ:

  
    # ಉತ್ಪನ್ನಗಳ API
    type Product {
      id: ID!
      name: String!
      price: Float!
    }

    type Query {
      product(id: ID!): Product
    }

    # ಬಳಕೆದಾರರ API
    type User {
      id: ID!
      name: String!
      email: String!
    }

    type Query {
      user(id: ID!): User
    }

    # ಆರ್ಡರ್‌ಗಳ API
    type Order {
      id: ID!
      userId: ID!
      productId: ID!
      quantity: Int!
    }

    type Query {
      order(id: ID!): Order
    }
  

ಗೇಟ್‌ವೇ ಸೇವೆಯು ಏಕೀಕೃತ ಸ್ಕೀಮಾವನ್ನು ರಚಿಸಲು ಈ ಸ್ಕೀಮಾಗಳನ್ನು ಒಟ್ಟಿಗೆ ಜೋಡಿಸಬಹುದು:

  
    type Product {
      id: ID!
      name: String!
      price: Float!
    }

    type User {
      id: ID!
      name: String!
      email: String!
    }

    type Order {
      id: ID!
      user: User! @relation(field: "userId")
      product: Product! @relation(field: "productId")
      quantity: Int!
    }

    type Query {
      product(id: ID!): Product
      user(id: ID!): User
      order(id: ID!): Order
    }
  

Order ಪ್ರಕಾರವು ಈಗ User ಮತ್ತು Product ಗೆ ಉಲ್ಲೇಖಗಳನ್ನು ಹೇಗೆ ಒಳಗೊಂಡಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ, ಈ ಪ್ರಕಾರಗಳನ್ನು ಪ್ರತ್ಯೇಕ APIಗಳಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದ್ದರೂ ಸಹ. ಇದನ್ನು ಸ್ಕೀಮಾ ಸ್ಟಿಚಿಂಗ್ ನಿರ್ದೇಶನಗಳ ಮೂಲಕ ಸಾಧಿಸಲಾಗುತ್ತದೆ (ಈ ಉದಾಹರಣೆಯಲ್ಲಿ @relation ನಂತಹ).

ಪ್ರಯೋಜನಗಳು:

ಪರಿಗಣನೆಗಳು:

2. ಸ್ಕೀಮಾ ಫೆಡರೇಶನ್ (Schema Federation)

ಸ್ಕೀಮಾ ಫೆಡರೇಶನ್ ಸ್ಕೀಮಾ ಸ್ಟಿಚಿಂಗ್‌ನ ಒಂದು ವಿಕಸನವಾಗಿದೆ, ಅದರ ಕೆಲವು ಮಿತಿಗಳನ್ನು ಪರಿಹರಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಇದು GraphQL ಸ್ಕೀಮಾಗಳನ್ನು ಸಂಯೋಜಿಸಲು ಹೆಚ್ಚು ಘೋಷಣಾತ್ಮಕ ಮತ್ತು ಪ್ರಮಾಣಿತ ವಿಧಾನವನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:

  1. ಪ್ರತಿಯೊಂದು ಸೇವೆಯು GraphQL API ಅನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ ಮತ್ತು ಅದರ ಸ್ಕೀಮಾವನ್ನು ಫೆಡರೇಶನ್ ನಿರ್ದೇಶನಗಳೊಂದಿಗೆ (ಉದಾ., @key, @extends, @external) ಟಿಪ್ಪಣಿ ಮಾಡುತ್ತದೆ.
  2. ಕೇಂದ್ರೀಯ ಗೇಟ್‌ವೇ ಸೇವೆಯು (ಅಪೊಲೊ ಫೆಡರೇಶನ್ ಬಳಸಿ) ಈ ನಿರ್ದೇಶನಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸೂಪರ್‌ಗ್ರಾಫ್ ಅನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ - ಇದು ಸಂಪೂರ್ಣ ಫೆಡರೇಟೆಡ್ ಸ್ಕೀಮಾದ ಪ್ರಾತಿನಿಧ್ಯವಾಗಿದೆ.
  3. ಗೇಟ್‌ವೇ ಸೇವೆಯು ವಿನಂತಿಗಳನ್ನು ಸೂಕ್ತವಾದ ಆಧಾರವಾಗಿರುವ ಸೇವೆಗಳಿಗೆ ರವಾನಿಸಲು ಮತ್ತು ಅವಲಂಬನೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಸೂಪರ್‌ಗ್ರಾಫ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.

ಉದಾಹರಣೆ:

ಅದೇ ಇ-ಕಾಮರ್ಸ್ ಉದಾಹರಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು, ಫೆಡರೇಟೆಡ್ ಸ್ಕೀಮಾಗಳು ಈ ರೀತಿ ಕಾಣಿಸಬಹುದು:

  
    # ಉತ್ಪನ್ನಗಳ API
    type Product @key(fields: "id") {
      id: ID!
      name: String!
      price: Float!
    }

    type Query {
      product(id: ID!): Product
    }

    # ಬಳಕೆದಾರರ API
    type User @key(fields: "id") {
      id: ID!
      name: String!
      email: String!
    }

    type Query {
      user(id: ID!): User
    }

    # ಆರ್ಡರ್‌ಗಳ API
    type Order {
      id: ID!
      userId: ID!
      productId: ID!
      quantity: Int!
      user: User! @requires(fields: "userId")
      product: Product! @requires(fields: "productId")
    }

    extend type Query {
      order(id: ID!): Order
    }
  

ಫೆಡರೇಶನ್ ನಿರ್ದೇಶನಗಳ ಬಳಕೆಯನ್ನು ಗಮನಿಸಿ:

ಪ್ರಯೋಜನಗಳು:

ಪರಿಗಣನೆಗಳು:

3. ಮಾಡ್ಯುಲರ್ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸ

ಮಾಡ್ಯುಲರ್ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸವು ದೊಡ್ಡ, ಏಕಶಿಲೆಯ ಸ್ಕೀಮಾವನ್ನು ಸಣ್ಣ, ಹೆಚ್ಚು ನಿರ್ವಹಿಸಬಲ್ಲ ಮಾಡ್ಯೂಲ್‌ಗಳಾಗಿ ವಿಭಜಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಫೆಡರೇಟೆಡ್ ಸ್ಕೀಮಾಗಳನ್ನು ಆಶ್ರಯಿಸದೆಯೇ ನಿಮ್ಮ APIನ ಪ್ರತ್ಯೇಕ ಭಾಗಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ಮಾರ್ಪಡಿಸಲು ಮತ್ತು ಮರುಬಳಕೆ ಮಾಡಲು ಇದು ಸುಲಭಗೊಳಿಸುತ್ತದೆ.

ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:

  1. ನಿಮ್ಮ ಸ್ಕೀಮಾದೊಳಗೆ ತಾರ್ಕಿಕ ಗಡಿಗಳನ್ನು ಗುರುತಿಸಿ (ಉದಾ., ಬಳಕೆದಾರರು, ಉತ್ಪನ್ನಗಳು, ಆರ್ಡರ್‌ಗಳು).
  2. ಪ್ರತಿ ಗಡಿಗೆ ಪ್ರತ್ಯೇಕ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ರಚಿಸಿ, ಆ ಗಡಿಗೆ ಸಂಬಂಧಿಸಿದ ಪ್ರಕಾರಗಳು, ಕ್ವೆರಿಗಳು ಮತ್ತು ಮ್ಯುಟೇಶನ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ.
  3. ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಒಂದೇ, ಏಕೀಕೃತ ಸ್ಕೀಮಾದಲ್ಲಿ ಸಂಯೋಜಿಸಲು ಆಮದು/ರಫ್ತು ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಬಳಸಿ (ನಿಮ್ಮ GraphQL ಸರ್ವರ್ ಅನುಷ್ಠಾನವನ್ನು ಅವಲಂಬಿಸಿ).

ಉದಾಹರಣೆ (JavaScript/Node.js ಬಳಸಿ):

ಪ್ರತಿ ಮಾಡ್ಯೂಲ್‌ಗೆ ಪ್ರತ್ಯೇಕ ಫೈಲ್‌ಗಳನ್ನು ರಚಿಸಿ:

  
    // users.graphql
    type User {
      id: ID!
      name: String!
      email: String!
    }

    type Query {
      user(id: ID!): User
    }

    // products.graphql
    type Product {
      id: ID!
      name: String!
      price: Float!
    }

    type Query {
      product(id: ID!): Product
    }
  

ನಂತರ, ಅವುಗಳನ್ನು ನಿಮ್ಮ ಮುಖ್ಯ ಸ್ಕೀಮಾ ಫೈಲ್‌ನಲ್ಲಿ ಸಂಯೋಜಿಸಿ:

  
    // schema.js
    const { makeExecutableSchema } = require('graphql-tools');
    const { typeDefs: userTypeDefs, resolvers: userResolvers } = require('./users');
    const { typeDefs: productTypeDefs, resolvers: productResolvers } = require('./products');

    const typeDefs = [
      userTypeDefs,
      productTypeDefs,
      ""
    ];

    const resolvers = {
      Query: {
        ...userResolvers.Query,
        ...productResolvers.Query,
      }
    };

    const schema = makeExecutableSchema({
      typeDefs,
      resolvers,
    });

    module.exports = schema;
  

ಪ್ರಯೋಜನಗಳು:

ಪರಿಗಣನೆಗಳು:

4. ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ಯೂನಿಯನ್ ಪ್ರಕಾರಗಳು

ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ಯೂನಿಯನ್ ಪ್ರಕಾರಗಳು ಬಹು ಕಾಂಕ್ರೀಟ್ ಪ್ರಕಾರಗಳಿಂದ ಅಳವಡಿಸಬಹುದಾದ ಅಮೂರ್ತ ಪ್ರಕಾರಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಪಾಲಿಮಾರ್ಫಿಕ್ ಡೇಟಾವನ್ನು ಪ್ರತಿನಿಧಿಸಲು ಇದು ಉಪಯುಕ್ತವಾಗಿದೆ - ಸಂದರ್ಭವನ್ನು ಅವಲಂಬಿಸಿ ವಿಭಿನ್ನ ರೂಪಗಳನ್ನು ಪಡೆಯಬಹುದಾದ ಡೇಟಾ.

ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:

ಉದಾಹರಣೆ:

  
    interface Node {
      id: ID!
    }

    type User implements Node {
      id: ID!
      name: String!
      email: String!
    }

    type Product implements Node {
      id: ID!
      name: String!
      price: Float!
    }

    union SearchResult = User | Product

    type Query {
      node(id: ID!): Node
      search(query: String!): [SearchResult!]!
    }
  

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, User ಮತ್ತು Product ಎರಡೂ Node ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಅಳವಡಿಸುತ್ತವೆ, ಇದು ಸಾಮಾನ್ಯ id ಫೀಲ್ಡ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. SearchResult ಯೂನಿಯನ್ ಪ್ರಕಾರವು User ಅಥವಾ Product ಆಗಿರಬಹುದಾದ ಹುಡುಕಾಟ ಫಲಿತಾಂಶವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಕ್ಲೈಂಟ್‌ಗಳು `search` ಫೀಲ್ಡ್ ಅನ್ನು ಪ್ರಶ್ನಿಸಬಹುದು ಮತ್ತು ನಂತರ ತಾವು ಸ್ವೀಕರಿಸಿದ ಫಲಿತಾಂಶದ ಪ್ರಕಾರವನ್ನು ನಿರ್ಧರಿಸಲು `__typename` ಫೀಲ್ಡ್ ಅನ್ನು ಬಳಸಬಹುದು.

ಪ್ರಯೋಜನಗಳು:

ಪರಿಗಣನೆಗಳು:

5. ಕನೆಕ್ಷನ್ ಪ್ಯಾಟರ್ನ್ (Connection Pattern)

ಕನೆಕ್ಷನ್ ಪ್ಯಾಟರ್ನ್ GraphQL APIಗಳಲ್ಲಿ ಪುಟಸಂಖ್ಯೆ (pagination) ಅಳವಡಿಸಲು ಒಂದು ಪ್ರಮಾಣಿತ ಮಾರ್ಗವಾಗಿದೆ. ಇದು ದೊಡ್ಡ ಡೇಟಾ ಪಟ್ಟಿಗಳನ್ನು ತುಂಡುಗಳಲ್ಲಿ ಹಿಂಪಡೆಯಲು ಸ್ಥಿರ ಮತ್ತು ಸಮರ್ಥ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:

ಉದಾಹರಣೆ:

  
    type User {
      id: ID!
      name: String!
      email: String!
    }

    type UserEdge {
      node: User!
      cursor: String!
    }

    type UserConnection {
      edges: [UserEdge!]!
      pageInfo: PageInfo!
    }

    type PageInfo {
      hasNextPage: Boolean!
      hasPreviousPage: Boolean!
      startCursor: String
      endCursor: String
    }

    type Query {
      users(first: Int, after: String, last: Int, before: String): UserConnection!
    }
  

ಪ್ರಯೋಜನಗಳು:

ಪರಿಗಣನೆಗಳು:

ಜಾಗತಿಕ ಪರಿಗಣನೆಗಳು

ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗಾಗಿ GraphQL ಸ್ಕೀಮಾವನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವಾಗ, ಈ ಹೆಚ್ಚುವರಿ ಅಂಶಗಳನ್ನು ಪರಿಗಣಿಸಿ:

ಉದಾಹರಣೆಗೆ, ಉತ್ಪನ್ನ ವಿವರಣಾ ಫೀಲ್ಡ್ ಅನ್ನು ಪರಿಗಣಿಸಿ:


type Product {
 id: ID!
 name: String!
 description(language: String = "en"): String!
}

ಇದು ಕ್ಲೈಂಟ್‌ಗಳಿಗೆ ನಿರ್ದಿಷ್ಟ ಭಾಷೆಯಲ್ಲಿ ವಿವರಣೆಯನ್ನು ವಿನಂತಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಯಾವುದೇ ಭಾಷೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದಿದ್ದರೆ, ಅದು ಇಂಗ್ಲಿಷ್ (`en`) ಗೆ ಡೀಫಾಲ್ಟ್ ಆಗುತ್ತದೆ.

ತೀರ್ಮಾನ

ಜಾಗತಿಕ ಅಪ್ಲಿಕೇಶನ್‌ನ ಬೇಡಿಕೆಗಳನ್ನು ನಿಭಾಯಿಸಬಲ್ಲ ದೃಢವಾದ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲ GraphQL APIಗಳನ್ನು ನಿರ್ಮಿಸಲು ಸ್ಕೇಲೆಬಲ್ ಸ್ಕೀಮಾ ವಿನ್ಯಾಸವು ಅತ್ಯಗತ್ಯ. ಈ ಲೇಖನದಲ್ಲಿ ವಿವರಿಸಿದ ತತ್ವಗಳನ್ನು ಅನುಸರಿಸುವ ಮೂಲಕ ಮತ್ತು ಸೂಕ್ತವಾದ ವಿನ್ಯಾಸ ಮಾದರಿಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ, ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ಮಾರ್ಪಡಿಸಲು ಮತ್ತು ವಿಸ್ತರಿಸಲು ಸುಲಭವಾದ APIಗಳನ್ನು ರಚಿಸಬಹುದು, ಜೊತೆಗೆ ಅತ್ಯುತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಸ್ಕೇಲೆಬಿಲಿಟಿಯನ್ನು ಒದಗಿಸಬಹುದು. ನಿಮ್ಮ ಸ್ಕೀಮಾವನ್ನು ಮಾಡ್ಯುಲರೈಸ್ ಮಾಡಲು, ಸಂಯೋಜಿಸಲು ಮತ್ತು ಅಮೂರ್ತಗೊಳಿಸಲು ಮತ್ತು ನಿಮ್ಮ ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರ ನಿರ್ದಿಷ್ಟ ಅಗತ್ಯಗಳನ್ನು ಪರಿಗಣಿಸಲು ಮರೆಯದಿರಿ.

ಈ ಮಾದರಿಗಳನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುವ ಮೂಲಕ, ನೀವು GraphQLನ ಸಂಪೂರ್ಣ ಸಾಮರ್ಥ್ಯವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಬಹುದು ಮತ್ತು ಮುಂಬರುವ ವರ್ಷಗಳಲ್ಲಿ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಶಕ್ತಿ ತುಂಬಬಲ್ಲ APIಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು.