பல்வேறு உலகளாவிய பயனர்களுக்கு ஏற்ற, வலுவான மற்றும் பராமரிக்கக்கூடிய API-களை உருவாக்க, அளவிடக்கூடிய கிராஃப்கியூஎல் ஸ்கீமா வடிவமைப்பு உத்திகளைக் கற்றுக்கொள்ளுங்கள். ஸ்கீமா ஸ்டிச்சிங், ஃபெடரேஷன் மற்றும் மாடுலரைசேஷனில் தேர்ச்சி பெறுங்கள்.
கிராஃப்கியூஎல் ஸ்கீமா வடிவமைப்பு: உலகளாவிய API-களுக்கான அளவிடக்கூடிய உத்திகள்
பாரம்பரிய REST API-களுக்கு ஒரு சக்திவாய்ந்த மாற்றாக கிராஃப்கியூஎல் உருவெடுத்துள்ளது, வாடிக்கையாளர்களுக்கு தங்களுக்குத் தேவையான தரவை துல்லியமாகக் கோருவதற்கான நெகிழ்வுத்தன்மையை இது வழங்குகிறது. இருப்பினும், உங்கள் கிராஃப்கியூஎல் API சிக்கலானதாகவும், அதன் நோக்கம் விரிவடையும்போதும் – குறிப்பாக பல்வேறு தரவுத் தேவைகளைக் கொண்ட உலகளாவிய பயனர்களுக்கு சேவை செய்யும் போது – பராமரிப்பு, அளவிடுதல் மற்றும் செயல்திறனுக்கு கவனமான ஸ்கீமா வடிவமைப்பு மிகவும் முக்கியமானதாகிறது. இந்தக் கட்டுரை, உலகளாவிய பயன்பாட்டின் தேவைகளைக் கையாளக்கூடிய வலுவான API-களை உருவாக்க உதவும் பல அளவிடக்கூடிய கிராஃப்கியூஎல் ஸ்கீமா வடிவமைப்பு உத்திகளை ஆராய்கிறது.
அளவிடக்கூடிய ஸ்கீமா வடிவமைப்பின் முக்கியத்துவம்
நன்கு வடிவமைக்கப்பட்ட ஒரு கிராஃப்கியூஎல் ஸ்கீமா ஒரு வெற்றிகரமான API-யின் அடித்தளமாகும். உங்கள் தரவு மற்றும் சேவைகளுடன் வாடிக்கையாளர்கள் எவ்வாறு தொடர்பு கொள்ளலாம் என்பதை இது தீர்மானிக்கிறது. மோசமான ஸ்கீமா வடிவமைப்பு பல சிக்கல்களுக்கு வழிவகுக்கும், அவற்றுள் சில:
- செயல்திறன் தடைகள்: திறமையற்ற வினவல்கள் மற்றும் ரிசால்வர்கள் உங்கள் தரவு மூலங்களை அதிக சுமைக்கு உள்ளாக்கி, பதிலளிக்கும் நேரத்தைக் குறைக்கலாம்.
- பராமரிப்பு சிக்கல்கள்: உங்கள் பயன்பாடு வளரும்போது, ஒரு ஒற்றை ஸ்கீமாவை புரிந்துகொள்வது, மாற்றுவது மற்றும் சோதிப்பது கடினமாகிறது.
- பாதுகாப்பு பாதிப்புகள்: மோசமாக வரையறுக்கப்பட்ட அணுகல் கட்டுப்பாடுகள், அங்கீகரிக்கப்படாத பயனர்களுக்கு முக்கியமான தரவை வெளிப்படுத்தக்கூடும்.
- வரையறுக்கப்பட்ட அளவிடுதல்: இறுக்கமாக பிணைக்கப்பட்ட ஸ்கீமா, உங்கள் API-ஐ பல சேவையகங்கள் அல்லது குழுக்களுக்கு விநியோகிப்பதை கடினமாக்குகிறது.
உலகளாவிய பயன்பாடுகளுக்கு, இந்த சிக்கல்கள் மேலும் பெருகுகின்றன. வெவ்வேறு பிராந்தியங்களுக்கு வெவ்வேறு தரவுத் தேவைகள், ஒழுங்குமுறை கட்டுப்பாடுகள் மற்றும் செயல்திறன் எதிர்பார்ப்புகள் இருக்கலாம். அளவிடக்கூடிய ஸ்கீமா வடிவமைப்பு இந்த சவால்களை திறம்பட எதிர்கொள்ள உங்களை அனுமதிக்கிறது.
அளவிடக்கூடிய ஸ்கீமா வடிவமைப்பின் முக்கிய கோட்பாடுகள்
குறிப்பிட்ட உத்திகளைப் பார்ப்பதற்கு முன், உங்கள் ஸ்கீமா வடிவமைப்பை வழிநடத்த வேண்டிய சில முக்கிய கோட்பாடுகளை கோடிட்டுக் காட்டுவோம்:
- கூறுநிலை (Modularity): உங்கள் ஸ்கீமாவை சிறிய, சுதந்திரமான கூறுகளாகப் பிரிக்கவும். இது உங்கள் API-யின் தனிப்பட்ட பகுதிகளைப் புரிந்துகொள்வதையும், மாற்றுவதையும், மீண்டும் பயன்படுத்துவதையும் எளிதாக்குகிறது.
- இணைக்கும் தன்மை (Composability): வெவ்வேறு கூறுகளை எளிதாக இணைத்து விரிவாக்கக்கூடிய வகையில் உங்கள் ஸ்கீமாவை வடிவமைக்கவும். இது ஏற்கனவே உள்ள வாடிக்கையாளர்களை பாதிக்காமல் புதிய அம்சங்களையும் செயல்பாடுகளையும் சேர்க்க உங்களை அனுமதிக்கிறது.
- சுருக்கம் (Abstraction): உங்கள் அடிப்படை தரவு மூலங்கள் மற்றும் சேவைகளின் சிக்கலான தன்மையை நன்கு வரையறுக்கப்பட்ட கிராஃப்கியூஎல் இடைமுகத்திற்குப் பின்னால் மறைக்கவும். இது வாடிக்கையாளர்களை பாதிக்காமல் உங்கள் செயலாக்கத்தை மாற்ற உங்களை அனுமதிக்கிறது.
- நிலைத்தன்மை (Consistency): உங்கள் ஸ்கீமா முழுவதும் நிலையான பெயரிடல் மரபு, தரவுக் கட்டமைப்பு மற்றும் பிழை கையாளும் உத்தியைப் பராமரிக்கவும். இது வாடிக்கையாளர்கள் உங்கள் API-ஐக் கற்றுக்கொள்வதையும் பயன்படுத்துவதையும் எளிதாக்குகிறது.
- செயல்திறன் மேம்படுத்தல் (Performance Optimization): ஸ்கீமா வடிவமைப்பின் ஒவ்வொரு கட்டத்திலும் செயல்திறன் தாக்கங்களைக் கருத்தில் கொள்ளுங்கள். தரவுத்தள வினவல்கள் மற்றும் நெட்வொர்க் கோரிக்கைகளின் எண்ணிக்கையைக் குறைக்க டேட்டா லோடர்கள் மற்றும் ஃபீல்ட் அலியாசிங் போன்ற நுட்பங்களைப் பயன்படுத்தவும்.
அளவிடக்கூடிய ஸ்கீமா வடிவமைப்பு உத்திகள்
வலுவான கிராஃப்கியூஎல் API-களை உருவாக்க நீங்கள் பயன்படுத்தக்கூடிய பல அளவிடக்கூடிய ஸ்கீமா வடிவமைப்பு உத்திகள் இங்கே:
1. ஸ்கீமா ஸ்டிச்சிங் (Schema Stitching)
ஸ்கீமா ஸ்டிச்சிங் பல கிராஃப்கியூஎல் API-களை ஒரே, ஒருங்கிணைந்த ஸ்கீமாவாக இணைக்க உங்களை அனுமதிக்கிறது. உங்கள் தரவின் வெவ்வேறு பகுதிகளுக்கு வெவ்வேறு குழுக்கள் அல்லது சேவைகள் பொறுப்பாக இருக்கும்போது இது மிகவும் பயனுள்ளதாக இருக்கும். இது பல மினி-API-களைக் கொண்டு, அவற்றை ஒரு 'கேட்வே' API வழியாக இணைப்பது போன்றது.
இது எப்படி வேலை செய்கிறது:
- ஒவ்வொரு குழுவும் அல்லது சேவையும் அதன் சொந்த ஸ்கீமாவுடன் அதன் சொந்த கிராஃப்கியூஎல் API-ஐ வெளிப்படுத்துகிறது.
- ஒரு மைய கேட்வே சேவையானது, இந்த ஸ்கீமாக்களை ஒரே, ஒருங்கிணைந்த ஸ்கீமாவாக இணைக்க ஸ்கீமா ஸ்டிச்சிங் கருவிகளைப் (அப்போலோ ஃபெடரேஷன் அல்லது கிராஃப்கியூஎல் மெஷ் போன்றவை) பயன்படுத்துகிறது.
- வாடிக்கையாளர்கள் கேட்வே சேவையுடன் தொடர்பு கொள்கிறார்கள், அது கோரிக்கைகளை பொருத்தமான அடிப்படை 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
போன்றவை) மூலம் அடையப்படுகிறது.
நன்மைகள்:
- பரவலாக்கப்பட்ட உரிமை: ஒவ்வொரு குழுவும் அதன் சொந்த தரவு மற்றும் API-ஐ சுதந்திரமாக நிர்வகிக்க முடியும்.
- மேம்படுத்தப்பட்ட அளவிடுதல்: ஒவ்வொரு API-ஐயும் அதன் குறிப்பிட்ட தேவைகளின் அடிப்படையில் சுதந்திரமாக அளவிட முடியும்.
- குறைக்கப்பட்ட சிக்கல்: வாடிக்கையாளர்கள் ஒரே ஒரு API எண்ட்பாயிண்ட்டுடன் மட்டுமே தொடர்பு கொள்ள வேண்டும்.
கவனிக்க வேண்டியவை:
- சிக்கலான தன்மை: ஸ்கீமா ஸ்டிச்சிங் உங்கள் கட்டமைப்பில் சிக்கலைச் சேர்க்கலாம்.
- செயல் தாமதம் (Latency): கேட்வே சேவை மூலம் கோரிக்கைகளை அனுப்புவது தாமதத்தை ஏற்படுத்தக்கூடும்.
- பிழை கையாளுதல்: அடிப்படை API-களில் ஏற்படும் தோல்விகளைக் கையாள வலுவான பிழை கையாளுதலை நீங்கள் செயல்படுத்த வேண்டும்.
2. ஸ்கீமா ஃபெடரேஷன் (Schema Federation)
ஸ்கீமா ஃபெடரேஷன் என்பது ஸ்கீமா ஸ்டிச்சிங்கின் ஒரு பரிணாம வளர்ச்சியாகும், இது அதன் சில வரம்புகளை நிவர்த்தி செய்ய வடிவமைக்கப்பட்டுள்ளது. இது கிராஃப்கியூஎல் ஸ்கீமாக்களை இணைப்பதற்கு மேலும் அறிவிப்பு சார்ந்த மற்றும் தரப்படுத்தப்பட்ட அணுகுமுறையை வழங்குகிறது.
இது எப்படி வேலை செய்கிறது:
- ஒவ்வொரு சேவையும் ஒரு கிராஃப்கியூஎல் API-ஐ வெளிப்படுத்துகிறது மற்றும் அதன் ஸ்கீமாவை ஃபெடரேஷன் டைரக்டிவ்களுடன் (எ.கா.,
@key
,@extends
,@external
) குறிக்கிறது. - ஒரு மைய கேட்வே சேவையானது (அப்போலோ ஃபெடரேஷனைப் பயன்படுத்தி) இந்த டைரக்டிவ்களைப் பயன்படுத்தி ஒரு சூப்பர்கிராஃபை உருவாக்குகிறது – இது முழு ஃபெடரேட்டட் ஸ்கீமாவின் பிரதிநிதித்துவம் ஆகும்.
- கேட்வே சேவையானது சூப்பர்கிராஃபைப் பயன்படுத்தி கோரிக்கைகளை பொருத்தமான அடிப்படை சேவைகளுக்கு அனுப்பி சார்புகளைத் தீர்க்கிறது.
உதாரணம்:
அதே இ-காமர்ஸ் உதாரணத்தைப் பயன்படுத்தி, ஃபெடரேட்டட் ஸ்கீமாக்கள் இப்படி இருக்கலாம்:
# தயாரிப்புகள் 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
}
ஃபெடரேஷன் டைரக்டிவ்களின் பயன்பாட்டைக் கவனியுங்கள்:
@key
: ஒரு வகையின் முதன்மை விசையைக் குறிப்பிடுகிறது.@requires
: ஒரு ஃபீல்டிற்கு மற்றொரு சேவையிலிருந்து தரவு தேவை என்பதைக் குறிக்கிறது.@extends
: ஒரு சேவையானது மற்றொரு சேவையில் வரையறுக்கப்பட்ட ஒரு வகையை நீட்டிக்க அனுமதிக்கிறது.
நன்மைகள்:
- அறிவிப்பு சார்ந்த இணைப்பு: ஃபெடரேஷன் டைரக்டிவ்கள் ஸ்கீமா சார்புகளைப் புரிந்துகொள்வதையும் நிர்வகிப்பதையும் எளிதாக்குகின்றன.
- மேம்படுத்தப்பட்ட செயல்திறன்: அப்போலோ ஃபெடரேஷன் தாமதத்தைக் குறைக்க வினவல் திட்டமிடல் மற்றும் செயலாக்கத்தை மேம்படுத்துகிறது.
- மேம்பட்ட வகை பாதுகாப்பு: சூப்பர்கிராஃப் அனைத்து வகைகளும் சேவைகள் முழுவதும் சீராக இருப்பதை உறுதி செய்கிறது.
கவனிக்க வேண்டியவை:
- கருவிகள்: அப்போலோ ஃபெடரேஷன் அல்லது இணக்கமான ஃபெடரேஷன் செயலாக்கத்தைப் பயன்படுத்த வேண்டும்.
- சிக்கலான தன்மை: ஸ்கீமா ஸ்டிச்சிங்கை விட அமைப்பது மிகவும் சிக்கலானதாக இருக்கலாம்.
- கற்றல் வளைவு: டெவலப்பர்கள் ஃபெடரேஷன் டைரக்டிவ்கள் மற்றும் கருத்துக்களைக் கற்றுக்கொள்ள வேண்டும்.
3. கூறுநிலை ஸ்கீமா வடிவமைப்பு (Modular Schema Design)
கூறுநிலை ஸ்கீமா வடிவமைப்பு என்பது ஒரு பெரிய, ஒற்றை ஸ்கீமாவை சிறிய, மேலும் நிர்வகிக்கக்கூடிய கூறுகளாகப் பிரிப்பதாகும். இது ஃபெடரேட்டட் ஸ்கீமாக்களை நாடாமலேயே, உங்கள் API-யின் தனிப்பட்ட பகுதிகளைப் புரிந்துகொள்வதையும், மாற்றுவதையும், மீண்டும் பயன்படுத்துவதையும் எளிதாக்குகிறது.
இது எப்படி வேலை செய்கிறது:
- உங்கள் ஸ்கீமாவிற்குள் தர்க்கரீதியான எல்லைகளை (எ.கா., பயனர்கள், தயாரிப்புகள், ஆர்டர்கள்) அடையாளம் காணவும்.
- ஒவ்வொரு எல்லைக்கும் தனித்தனி கூறுகளை உருவாக்கவும், அந்த எல்லையுடன் தொடர்புடைய வகைகள், வினவல்கள் மற்றும் மாற்றங்களை வரையறுக்கவும்.
- கூறுகளை ஒரே, ஒருங்கிணைந்த ஸ்கீமாவாக இணைக்க இறக்குமதி/ஏற்றுமதி வழிமுறைகளைப் (உங்கள் கிராஃப்கியூஎல் சர்வர் செயலாக்கத்தைப் பொறுத்து) பயன்படுத்தவும்.
உதாரணம் (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 and Union Types)
இன்டர்ஃபேஸ் மற்றும் யூனியன் வகைகள் பல உறுதியான வகைகளால் செயல்படுத்தப்படக்கூடிய சுருக்கமான வகைகளை வரையறுக்க உங்களை அனுமதிக்கின்றன. பாலிமார்பிக் தரவை - சூழலைப் பொறுத்து வெவ்வேறு வடிவங்களை எடுக்கக்கூடிய தரவை - பிரதிநிதித்துவப்படுத்த இது பயனுள்ளதாக இருக்கும்.
இது எப்படி வேலை செய்கிறது:
- பொதுவான ஃபீல்டுகளின் தொகுப்புடன் ஒரு இன்டர்ஃபேஸ் அல்லது யூனியன் வகையை வரையறுக்கவும்.
- இன்டர்ஃபேஸை செயல்படுத்தும் அல்லது யூனியனின் உறுப்பினர்களாக இருக்கும் உறுதியான வகைகளை வரையறுக்கவும்.
- இயக்க நேரத்தில் உறுதியான வகையை அடையாளம் காண
__typename
ஃபீல்டைப் பயன்படுத்தவும்.
உதாரணம்:
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` ஃபீல்டைப் பயன்படுத்தலாம்.
நன்மைகள்:
- நெகிழ்வுத்தன்மை: பாலிமார்பிக் தரவை வகை-பாதுகாப்பான முறையில் பிரதிநிதித்துவப்படுத்த உங்களை அனுமதிக்கிறது.
- குறியீடு மறுபயன்பாடு: இன்டர்ஃபேஸ்கள் மற்றும் யூனியன்களில் பொதுவான ஃபீல்டுகளை வரையறுப்பதன் மூலம் குறியீடு நகலெடுப்பைக் குறைக்கிறது.
- மேம்படுத்தப்பட்ட வினவல் திறன்: வாடிக்கையாளர்கள் ஒரே வினவலைப் பயன்படுத்தி வெவ்வேறு வகை தரவுகளை வினவுவதை எளிதாக்குகிறது.
கவனிக்க வேண்டியவை:
- சிக்கலான தன்மை: உங்கள் ஸ்கீமாவிற்கு சிக்கலைச் சேர்க்கலாம்.
- செயல்திறன்: இன்டர்ஃபேஸ் மற்றும் யூனியன் வகைகளைத் தீர்ப்பது உறுதியான வகைகளைத் தீர்ப்பதை விட அதிக செலவாகும்.
- ஆய்வு (Introspection): இயக்க நேரத்தில் உறுதியான வகையைத் தீர்மானிக்க வாடிக்கையாளர்கள் ஆய்வைப் பயன்படுத்த வேண்டும்.
5. இணைப்பு உத்தி (Connection Pattern)
இணைப்பு உத்தி என்பது கிராஃப்கியூஎல் API-களில் பக்க அமைப்பை (Pagination) செயல்படுத்துவதற்கான ஒரு நிலையான வழியாகும். இது பெரிய தரவுப் பட்டியல்களைப் பகுதிகளாகப் பெறுவதற்கு ஒரு சீரான மற்றும் திறமையான வழியை வழங்குகிறது.
இது எப்படி வேலை செய்கிறது:
edges
மற்றும்pageInfo
ஃபீல்டுகளுடன் ஒரு இணைப்பு வகையை வரையறுக்கவும்.edges
ஃபீல்டில் எட்ஜ்களின் பட்டியல் உள்ளது, ஒவ்வொன்றிலும் ஒருnode
ஃபீல்ட் (உண்மையான தரவு) மற்றும் ஒருcursor
ஃபீல்ட் (நோடிற்கான ஒரு தனித்துவமான அடையாளங்காட்டி) உள்ளது.pageInfo
ஃபீல்டில் தற்போதைய பக்கத்தைப் பற்றிய தகவல்கள் உள்ளன, அதாவது மேலும் பக்கங்கள் உள்ளதா மற்றும் முதல் மற்றும் கடைசி நோடுகளுக்கான கர்சர்கள் போன்றவை.- பக்க அமைப்பைக் கட்டுப்படுத்த
first
,after
,last
, மற்றும்before
ஆர்கியுமென்ட்களைப் பயன்படுத்தவும்.
உதாரணம்:
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!
}
நன்மைகள்:
- தரப்படுத்தப்பட்ட பக்க அமைப்பு: உங்கள் API முழுவதும் பக்க அமைப்பைச் செயல்படுத்த ஒரு சீரான வழியை வழங்குகிறது.
- திறமையான தரவு மீட்பு: பெரிய தரவுப் பட்டியல்களைப் பகுதிகளாகப் பெற உங்களை அனுமதிக்கிறது, இது உங்கள் சேவையகத்தின் சுமையைக் குறைத்து செயல்திறனை மேம்படுத்துகிறது.
- கர்சர் அடிப்படையிலான பக்க அமைப்பு: ஒவ்வொரு நோடின் நிலையையும் கண்காணிக்க கர்சர்களைப் பயன்படுத்துகிறது, இது ஆஃப்செட் அடிப்படையிலான பக்க அமைப்பை விட திறமையானது.
கவனிக்க வேண்டியவை:
- சிக்கலான தன்மை: உங்கள் ஸ்கீமாவிற்கு சிக்கலைச் சேர்க்கலாம்.
- கூடுதல் பணி: இணைப்பு உத்தியைச் செயல்படுத்த கூடுதல் ஃபீல்டுகள் மற்றும் வகைகள் தேவை.
- செயல்படுத்தல்: கர்சர்கள் தனித்துவமானதாகவும் சீரானதாகவும் இருப்பதை உறுதிப்படுத்த கவனமான செயல்படுத்தல் தேவை.
உலகளாவிய பரிசீலனைகள்
உலகளாவிய பார்வையாளர்களுக்காக ஒரு கிராஃப்கியூஎல் ஸ்கீமாவை வடிவமைக்கும்போது, இந்த கூடுதல் காரணிகளைக் கவனியுங்கள்:
- உள்ளூர்மயமாக்கல் (Localization): வெவ்வேறு மொழிகள் மற்றும் பிராந்தியங்களை ஆதரிக்க டைரக்டிவ்கள் அல்லது தனிப்பயன் ஸ்கேலார் வகைகளைப் பயன்படுத்தவும். உதாரணமாக, வெவ்வேறு மொழிகளுக்கான மொழிபெயர்ப்புகளைச் சேமிக்க தனிப்பயன் `LocalizedText` ஸ்கேலார் வைத்திருக்கலாம்.
- நேர மண்டலங்கள் (Time zones): நேர முத்திரைகளை UTC-யில் சேமித்து, காட்சி நோக்கங்களுக்காக வாடிக்கையாளர்கள் தங்கள் நேர மண்டலத்தைக் குறிப்பிட அனுமதிக்கவும்.
- நாணயங்கள் (Currencies): ஒரு சீரான நாணய வடிவமைப்பைப் பயன்படுத்தவும், மேலும் காட்சி நோக்கங்களுக்காக வாடிக்கையாளர்கள் தங்களுக்கு விருப்பமான நாணயத்தைக் குறிப்பிட அனுமதிக்கவும். இதை பிரதிநிதித்துவப்படுத்த ஒரு தனிப்பயன் `Currency` ஸ்கேலாரைக் கருத்தில் கொள்ளுங்கள்.
- தரவு இருப்பிடம் (Data residency): உங்கள் தரவு உள்ளூர் விதிமுறைகளுக்கு இணங்க சேமிக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும். இதற்கு உங்கள் API-ஐ பல பிராந்தியங்களில் வரிசைப்படுத்த அல்லது தரவு மறைத்தல் நுட்பங்களைப் பயன்படுத்த வேண்டியிருக்கலாம்.
- அணுகல்தன்மை (Accessibility): மாற்றுத்திறனாளிகள் அணுகக்கூடிய வகையில் உங்கள் ஸ்கீமாவை வடிவமைக்கவும். தெளிவான மற்றும் விளக்கமான ஃபீல்டு பெயர்களைப் பயன்படுத்தவும் மற்றும் தரவை அணுக மாற்று வழிகளை வழங்கவும்.
உதாரணமாக, ஒரு தயாரிப்பு விளக்க ஃபீல்டைக் கருத்தில் கொள்ளுங்கள்:
type Product {
id: ID!
name: String!
description(language: String = "en"): String!
}
இது வாடிக்கையாளர்கள் ஒரு குறிப்பிட்ட மொழியில் விளக்கத்தைக் கோர அனுமதிக்கிறது. எந்த மொழியும் குறிப்பிடப்படவில்லை என்றால், அது ஆங்கிலத்திற்கு (`en`) இயல்புநிலையாக இருக்கும்.
முடிவுரை
உலகளாவிய பயன்பாட்டின் தேவைகளைக் கையாளக்கூடிய வலுவான மற்றும் பராமரிக்கக்கூடிய கிராஃப்கியூஎல் API-களை உருவாக்க அளவிடக்கூடிய ஸ்கீமா வடிவமைப்பு அவசியம். இந்தக் கட்டுரையில் கோடிட்டுக் காட்டப்பட்டுள்ள கோட்பாடுகளைப் பின்பற்றுவதன் மூலமும், பொருத்தமான வடிவமைப்பு உத்திகளைப் பயன்படுத்துவதன் மூலமும், நீங்கள் புரிந்துகொள்ள, மாற்றியமைக்க மற்றும் நீட்டிக்க எளிதான API-களை உருவாக்கலாம், அதே நேரத்தில் சிறந்த செயல்திறன் மற்றும் அளவிடுதல் ஆகியவற்றை வழங்கலாம். உங்கள் ஸ்கீமாவை கூறுநிலையாக்கவும், இணைக்கவும், மற்றும் சுருக்கவும், மேலும் உங்கள் உலகளாவிய பார்வையாளர்களின் குறிப்பிட்ட தேவைகளைக் கருத்தில் கொள்ளவும் நினைவில் கொள்ளுங்கள்.
இந்த உத்திகளை ஏற்றுக்கொள்வதன் மூலம், நீங்கள் கிராஃப்கியூஎல்லின் முழு திறனையும் வெளிக்கொணரலாம் மற்றும் வரவிருக்கும் பல ஆண்டுகளுக்கு உங்கள் பயன்பாடுகளுக்கு శక్తి அளிக்கக்கூடிய API-களை உருவாக்கலாம்.