Fìrinn an toiseach, no carson a dh'fheumas an siostam a dhealbhadh a rèir structar an stòr-dàta

Hi Habr!

Tha sinn a’ leantainn oirnn a’ sgrùdadh a’ chuspair Java и Springgabhail a-steach aig ìre an stòr-dàta. An-diugh tha sinn a 'tairgsinn a bhith a' leughadh carson, nuair a thathar a 'dealbhadh iarrtasan mòra, is e structar an stòr-dàta, agus chan e còd Java, a bu chòir a bhith air leth cudromach, mar a tha seo air a dhèanamh, agus dè na h-eisgeadan don riaghailt seo.

Anns an artaigil caran fada seo, mìnichidh mi carson a tha mi a’ smaoineachadh, anns cha mhòr a h-uile cùis, gum bu chòir am modal dàta ann an tagradh a bhith air a dhealbhadh “bhon stòr-dàta” seach “bho chomasan Java” (no ge bith dè an cànan teachdaiche a tha thu. ag obair le). Le bhith a 'taghadh an dàrna dòigh-obrach, bidh thu a' dol a-steach air slighe fhada de phian agus fulangas aon uair 's gu bheil do phròiseact a' tòiseachadh a 'fàs.

Chaidh an artaigil a sgrìobhadh stèidhichte air aon cheist, air a thoirt seachad air Stack Overflow.

Còmhraidhean inntinneach air reddit ann an earrannan /r/ java и /r/prògramadh.

Ginealach còd

Tha e na iongnadh dhomh gu bheil ìre cho beag de luchd-cleachdaidh ann a tha, às deidh dhaibh eòlas fhaighinn air jOOQ, a’ gabhail ris gu bheil jOOQ gu mòr an urra ri gineadh còd stòr airson a ruith. Chan eil duine a’ cur stad ort bho bhith a’ cleachdadh jOOQ mar a chì thu iomchaidh, agus chan eil duine a’ toirt ort gineadh còd a chleachdadh. Ach gu gnàthach (mar a chaidh a mhìneachadh san leabhar-làimhe), bidh jOOQ ag obair mar seo: bidh thu a’ tòiseachadh le sgeama stòr-dàta (dìleab), innleadair air ais e leis a’ ghineadair còd jOOQ gus seata de chlasaichean fhaighinn a tha a’ riochdachadh do bhùird, agus an uairsin sgrìobh seòrsa- ceistean sàbhailte mu choinneamh nam bùird seo:

	for (Record2<String, String> record : DSL.using(configuration)
//   ^^^^^^^^^^^^^^^^^^^^^^^ Информация о типах выведена на 
//   основании сгенерированного кода, на который ссылается приведенное
// ниже условие SELECT 
 
       .select(ACTOR.FIRST_NAME, ACTOR.LAST_NAME)
//           vvvvv ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^ сгенерированные имена
       .from(ACTOR)
       .orderBy(1, 2)) {
    // ...
}

Tha an còd air a chruthachadh le làimh taobh a-muigh an togalaich, no le làimh air gach togalach. Mar eisimpleir, faodaidh ath-nuadhachadh mar sin leantainn dìreach às deidh sin Imrich stòr-dàta Flyway, a ghabhas dèanamh le làimh no gu fèin-ghluasadach cuideachd.

Gineadh còd stòr

Tha grunn fheallsanachd, buannachdan agus eas-bhuannachdan co-cheangailte ris na dòighean-obrach sin a thaobh gineadh còd - làimhe agus fèin-ghluasadach - nach eil mi a’ dol a dheasbad gu mionaideach san artaigil seo. Ach, san fharsaingeachd, is e puing iomlan a’ chòd a chaidh a chruthachadh gu bheil e a’ leigeil leat ath-riochdachadh ann an Java an “fhìrinn” a tha sinn a’ gabhail mar thabhartas, taobh a-staigh ar siostam no taobh a-muigh dheth. Ann an seagh, bidh luchd-cruinneachaidh a bhios a’ gineadh bytecode, còd inneal, no còd de sheòrsa air choreigin eile bhon chòd stòr a’ dèanamh an aon rud - gheibh sinn riochdachadh den “fhìrinn” againn ann an cànan eile, ge bith dè na h-adhbharan sònraichte a th’ againn.

Tha mòran de ghineadairean còd mar sin ann. Mar eisimpleir, Faodaidh XJC còd Java a ghineadh stèidhichte air faidhlichean XSD no WSDL. Tha am prionnsapal an-còmhnaidh mar a leanas:

  • Tha beagan fìrinn ann (a-staigh no a-muigh) - mar eisimpleir, sònrachadh, modail dàta, msaa.
  • Feumaidh sinn riochdachadh ionadail den fhìrinn seo nar cànan prògramaidh.

A bharrachd air an sin, tha e cha mhòr an-còmhnaidh ciallach a leithid de riochdachadh a ghineadh - gus call dreuchd a sheachnadh.

Seòrsa Solaraichean agus Giullachd Notaichean

Nota: Tha dòigh-obrach eile, nas ùire agus nas sònraichte a thaobh gineadh còd airson jOOQ a’ toirt a-steach cleachdadh sholaraichean seòrsa, mar a tha iad air an cur an gnìomh ann am F#. Anns a 'chùis seo, tha an còd air a chruthachadh leis an neach-cruinneachaidh, gu dearbh aig an ìre cruinneachaidh. Ann am prionnsapal, chan eil còd mar sin ann an cruth còdan stòr. Ann an Java, tha innealan coltach ris, ged nach eil iad cho eireachdail - is iad sin pròiseasairean notaichean, mar eisimpleir, Lombok.

Ann an dòigh shònraichte, tha na h-aon rudan a’ tachairt an seo agus a tha sa chiad chùis, ach a-mhàin:

  • Chan fhaic thu an còd a chaidh a chruthachadh (is dòcha nach eil an suidheachadh seo a’ coimhead cho tarraingeach do chuideigin?)
  • Feumaidh tu dèanamh cinnteach gum faodar seòrsaichean a thoirt seachad, is e sin, feumaidh "fìor" a bhith ri fhaighinn an-còmhnaidh. Tha seo furasta ann an cùis Lombok, a tha a 'comharrachadh "fìrinn". Tha e beagan nas duilghe le modalan stòr-dàta a tha an urra ri ceangal beò a tha an-còmhnaidh ri fhaighinn.

Dè an duilgheadas a th’ ann le gineadh còd?

A bharrachd air a’ cheist dhoirbh air mar a tha e nas fheàrr gineadh còd a thòiseachadh - le làimh no gu fèin-ghluasadach, feumaidh mi a ràdh gu bheil daoine ann a tha den bheachd nach eil feum air gineadh còd idir. Is e am fìreanachadh airson a’ bheachd seo, air an do thachair mi mar as trice, gu bheil e duilich an uairsin loidhne-phìoban togail a stèidheachadh. Tha, tha e uabhasach duilich. Tha cosgaisean bun-structair a bharrachd ann. Ma tha thu dìreach a’ tòiseachadh le toradh sònraichte (biodh e jOOQ, no JAXB, no cadal a’ gheamhraidh, msaa), bheir e ùine being obrach a stèidheachadh a bu mhath leat a chaitheamh ag ionnsachadh an API fhèin gus luach fhaighinn às .

Ma tha na cosgaisean co-cheangailte ri bhith a 'tuigsinn inneal gineadair ro àrd, an uairsin, gu dearbh, rinn an API droch obair air comasachd an gineadair còd (agus san àm ri teachd tha e a' tionndadh a-mach gu bheil gnàthachadh ann cuideachd duilich). Bu chòir comas cleachdaidh a bhith na phrìomhachas as àirde airson API mar sin. Ach is e sin dìreach aon argamaid an aghaidh gineadh còd. Air neo, sgrìobh gu tur le làimh an riochdachadh ionadail de fhìrinn a-staigh no a-muigh.

Canaidh mòran nach eil tìde aca seo uile a dhèanamh. Tha iad air ceann-latha airson an Super Product aca. Latha às deidh sin bidh sinn a’ cìreadh na giùlain cruinneachaidh, bidh ùine againn. freagraidh mi iad:

Fìrinn an toiseach, no carson a dh'fheumas an siostam a dhealbhadh a rèir structar an stòr-dàta
Original, Alan O'Rourke, Stac Luchd-amais

Ach ann an Hibernate / JPA tha e cho furasta còd a sgrìobhadh “ann an Java”.

dha-rìribh. Airson Hibernate agus an luchd-cleachdaidh, tha seo an dà chuid na bhrosnachadh agus na mhallachd. Ann an cadal a’ gheamhraidh, faodaidh tu dìreach buidheann no dhà a sgrìobhadh, mar seo:

	@Entity
class Book {
  @Id
  int id;
  String title;
}

Agus tha cha mhòr a h-uile dad deiseil. A-nis tha tòrr cadal a’ gheamhraidh gu bhith a’ gineadh “mion-fhiosrachadh” iom-fhillte air mar a thèid an eintiteas seo a mhìneachadh ann an DDL na “dualchainnt” agad aig SQL:

	CREATE TABLE book (
  id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
  title VARCHAR(50),
 
  CONSTRAINT pk_book PRIMARY KEY (id)
);
 
CREATE INDEX i_book_title ON book (title);

... agus tòisich a 'ruith an aplacaid. Feart fìor mhath airson a dhol suas agus a ruith gu sgiobalta agus feuchainn air diofar rudan.

Ge-tà, leig dhomh. Bha mi nam laighe.

  • Am bi cadal a’ gheamhraidh gu dearbh a’ cur an gnìomh mìneachadh a’ phrìomh iuchair ainmichte seo?
  • An cruthaich cadal a’ gheamhraidh clàr-amais air TITLE? Tha fios agam gu cinnteach gu bheil feum againn air.
  • Am bi cadal a’ gheamhraidh a’ dèanamh an iuchair seo na iuchair dearbh-aithne anns an t-Sònrachadh Aithneachaidh?

Is dòcha nach eil. Ma tha thu a’ leasachadh do phròiseact bhon fhìor thoiseach, tha e an-còmhnaidh goireasach dìreach an seann stòr-dàta a chuir air falbh agus fear ùr a ghineadh cho luath ‘s a chuireas tu na notaichean riatanach ris. Mar sin, bidh eintiteas an leabhair mu dheireadh san fhoirm:

	@Entity
@Table(name = "book", indexes = {
  @Index(name = "i_book_title", columnList = "title")
})
class Book {
  @Id
  @GeneratedValue(strategy = IDENTITY)
  int id;
  String title;
}

Tarraingeach. Ath-ghin. A-rithist, anns a 'chùis seo, bidh e gu math furasta aig an toiseach.

Ach bidh agaibh ri pàigheadh ​​air a shon nas fhaide air adhart.

Ann an ùine ghoirid no nas fhaide feumaidh tu a dhol a-steach gu cinneasachadh. Sin nuair a stadas am modail ag obair. Air sgàth:

Ann an cinneasachadh, cha bhith e comasach tuilleadh, ma tha sin riatanach, an seann stòr-dàta a chuir air falbh agus a h-uile càil a thòiseachadh bhon fhìor thoiseach. Tionndaidhidh an stòr-dàta agad gu bhith na dhìleab.

Bho seo a-mach agus gu bràth bidh agad ri sgrìobhadh Sgriobtaichean imrich DDL, me a’ cleachdadh Flyway. Agus dè a thachras dha na buidhnean agad sa chùis seo? Faodaidh tu an dàrna cuid an atharrachadh le làimh (agus an t-uallach obrach agad a dhùblachadh) no cadal a’ gheamhraidh ath-nuadhachadh dhut (dè cho coltach ‘s a tha am fear a thèid a chruthachadh san dòigh seo gus coinneachadh ris na bha dùil agad?) Bidh tu a’ call an dàrna cuid.

Mar sin, cho luath ‘s a ghluaiseas tu gu cinneasachadh, bidh feum agad air badan teth. Agus feumaidh iad a bhith air an toirt gu cinneasachadh gu math luath. Leis nach eil thu air pìoban rèidh ullachadh agus eagrachadh de na h-imrich agad airson cinneasachadh, tha thu a’ fàs fiadhaich. Agus an uairsin chan eil ùine agad a h-uile càil a dhèanamh ceart. Agus bidh thu a’ magadh air cadal a’ gheamhraidh, oir is e duine an-còmhnaidh as coireach, ach chan e thusa ...

An àite sin, bhon fhìor thoiseach, dh’ fhaodadh a h-uile dad a bhith air a dhèanamh gu tur eadar-dhealaichte. Mar eisimpleir, cuir cuibhlichean cruinn air baidhsagal.

Stòr-dàta an toiseach

Tha an fhìor “fhìrinn” anns an sgeama stòr-dàta agad agus “uachdranas” thairis air taobh a-staigh an stòr-dàta. Tha an sgeama air a mhìneachadh a-mhàin anns an stòr-dàta fhèin agus ann an àite sam bith eile, agus tha leth-bhreac den sgeama seo aig gach neach-dèiligidh, agus mar sin tha e a’ dèanamh ciall foirfe cumail ris an sgeama agus a ionracas a chuir an gnìomh, a dhèanamh ceart san stòr-dàta - far a bheil an sgeama tha fiosrachadh air a stòradh.
Is e seo seann ghliocas hackneyed. Tha iuchraichean bun-sgoile agus sònraichte math. Tha iuchraichean cèin ceart gu leòr. Tha sgrùdadh cuingealachaidh math. Dearbhaidhean - Gu math.

Agus, chan e sin uile. Mar eisimpleir, a’ cleachdadh Oracle, is dòcha gum biodh tu airson sònrachadh:

  • Dè an rùm-bùird anns a bheil am bòrd agad
  • Dè an luach a th’ aig PCTFREE
  • Dè am meud tasgadan san t-sreath agad (air cùl an id)

Is dòcha nach bi seo uile gu diofar ann an siostaman beaga, ach chan fheumar feitheamh gus an tèid an gluasad gu rìoghachd “dàta mòr” - faodaidh tu tòiseachadh air buannachd fhaighinn bho optimizations stòraidh a chaidh a sholarachadh le reiceadair, leithid an fheadhainn a chaidh ainmeachadh gu h-àrd, mòran na bu thràithe. Chan eil gin de na ORM a chunnaic mi (jOOQ nam measg) a’ toirt cothrom air an làn sheata de roghainnean DDL a dh’ fhaodadh tu a bhith airson a chleachdadh san stòr-dàta agad. Bidh ORM a’ tabhann cuid de dh’ innealan gus do chuideachadh le bhith a’ sgrìobhadh DDL.

Ach aig deireadh an latha, tha sgeama air a dheagh dhealbhadh air a sgrìobhadh le làimh ann an DDL. Chan eil ann an DDL sam bith a chaidh a chruthachadh ach tuairmse dheth.

Dè mu dheidhinn modail an neach-dèiligidh?

Mar a chaidh ainmeachadh gu h-àrd, air an neach-dèiligidh bidh feum agad air leth-bhreac den sgeama stòr-dàta agad, sealladh an neach-dèiligidh. Chan fheumar a ràdh, feumaidh sealladh an neach-dèiligidh seo a bhith ann an co-chòrdadh ris a’ mhodail fhìor. Dè an dòigh as fheàrr air seo a choileanadh? Le gineadair còd.

Bidh a h-uile stòr-dàta a’ toirt seachad am meata-fhiosrachadh tro SQL. Seo mar a gheibh thu a h-uile clàr ann an diofar dhualchainntean SQL bhon stòr-dàta agad:

	-- H2, HSQLDB, MySQL, PostgreSQL, SQL Server
SELECT table_schema, table_name
FROM information_schema.tables
 
-- DB2
SELECT tabschema, tabname
FROM syscat.tables
 
-- Oracle
SELECT owner, table_name
FROM all_tables
 
-- SQLite
SELECT name
FROM sqlite_master
 
-- Teradata
SELECT databasename, tablename
FROM dbc.tables

Tha na ceistean sin (no ceistean coltach ris, a rèir am feum thu cuideachd beachdachadh air beachdan, beachdan gnàthaichte, gnìomhan le luach bùird) cuideachd air an cur an gnìomh le bhith a’ gairm DatabaseMetaData.getTables() bho JDBC, no a’ cleachdadh am meata-mhodal jOOQ.

Bho thoraidhean nan ceistean sin, tha e an ìre mhath furasta riochdachadh taobh teachdaiche sam bith den mhodail stòr-dàta agad a ghineadh, ge bith dè an teicneòlas a chleachdas tu air an neach-dèiligidh.

  • Ma tha thu a’ cleachdadh JDBC no Spring, faodaidh tu seata de chuibhlichean sreang a chruthachadh
  • Ma tha thu a’ cleachdadh JPA, faodaidh tu na buidhnean fhèin a ghineadh
  • Ma tha thu a’ cleachdadh jOOQ faodaidh tu modal meta jOOQ a ghineadh

A rèir dè an comas a tha an API teachdaiche agad a’ tabhann (me jOOQ no JPA), faodaidh am modal meta gineadh a bhith dha-rìribh beairteach agus coileanta. Gabh, mar eisimpleir, an comas air ceanglaichean so-thuigsinn, air a thoirt a-steach ann an jOOQ 3.11, a tha an urra ri meata-fhiosrachadh a chaidh a chruthachadh mu phrìomh dhàimhean cèin eadar na bùird agad.

A-nis bidh àrdachadh stòr-dàta sam bith ag ùrachadh còd an neach-dèiligidh gu fèin-ghluasadach. Smaoinich mar eisimpleir:

ALTER TABLE book RENAME COLUMN title TO book_title;

Am bu toil leat an obair seo a dhèanamh dà uair? Ann an cùis sam bith. Tha sinn dìreach a’ gealltainn an DDL, ga ruith tron ​​loidhne-phìoban togail agad, agus a’ faighinn an eintiteas ùraichte:

@Entity
@Table(name = "book", indexes = {
 
  // Вы об этом задумывались?
  @Index(name = "i_book_title", columnList = "book_title")
})
class Book {
  @Id
  @GeneratedValue(strategy = IDENTITY)
  int id;
 
  @Column("book_title")
  String bookTitle;
}

No an clas jOOQ ùraichte. Bidh a 'mhòr-chuid de dh' atharrachaidhean DDL cuideachd a 'toirt buaidh air semantics, chan e dìreach co-chòrdadh. Mar sin, faodaidh e a bhith goireasach faicinn anns a’ chòd cruinnichte dè an còd a bheir (no a dh’ fhaodadh) buaidh a thoirt air àrdachadh an stòr-dàta agad.

An aon fhìrinn

Ge bith dè an teicneòlas a chleachdas tu, tha an-còmhnaidh aon mhodail ann a tha mar an aon thùs fìrinn airson cuid de fho-shiostam - no co-dhiù bu chòir dhuinn strì airson seo agus troimh-chèile iomairt a sheachnadh far a bheil “fìrinn” anns a h-uile àite agus gun àite sam bith aig an aon àm. Faodaidh a h-uile dad a bhith tòrr nas fhasa. Ma tha thu dìreach ag iomlaid fhaidhlichean XML le siostam air choireigin eile, dìreach cleachd XSD. Thoir sùil air modal meta INFORMATION_SCHEMA aig jOOQ ann an cruth XML:
https://www.jooq.org/xsd/jooq-meta-3.10.0.xsd

  • Tha XSD air a thuigsinn gu math
  • Tha XSD a’ comharrachadh susbaint XML gu math agus a’ ceadachadh dearbhadh anns a h-uile cànan teachdaiche
  • Tha XSD air a dheagh dhreach agus gu math co-chòrdail air ais
  • Faodar XSD eadar-theangachadh gu còd Java a’ cleachdadh XJC

Tha am puing mu dheireadh cudromach. Nuair a bhios sinn a’ conaltradh ri siostam bhon taobh a-muigh a’ cleachdadh teachdaireachdan XML, tha sinn airson a bhith cinnteach gu bheil na teachdaireachdan againn dligheach. Tha seo gu math furasta a choileanadh le JAXB, XJC agus XSD. Bhiodh e na fhìor chuthach a bhith a’ smaoineachadh, ann an dòigh dealbhaidh Java-first far am bi sinn a’ dèanamh ar teachdaireachdan mar nithean Java, gum faodadh iad dòigh air choireigin a bhith air an toirt seachad gu furasta gu XML agus an cur gu siostam eile airson an caitheamh. Bhiodh an XML a chaidh a chruthachadh san dòigh seo de dhroch chàileachd, gun sgrìobhainn, agus duilich a leasachadh. Nam biodh aonta ann mu ìre càileachd seirbheis (SLA) air an leithid de eadar-aghaidh, bhiodh sinn ga sgrìobadh sa bhad.

Gus a bhith onarach, is e seo dìreach a thachras fad na h-ùine leis an JSON API, ach sin sgeulachd eile, nì mi argamaid an ath thuras ...

Stòran-dàta: tha iad mar an ceudna

Ag obair le stòran-dàta, tuigidh tu gu bheil iad uile gu bunaiteach mar an ceudna. Tha sealbh aig an stòr-dàta air an dàta aige agus feumaidh e an sgeama a stiùireadh. Feumar atharrachaidhean sam bith a thèid a dhèanamh air an sgeama a chuir an gnìomh gu dìreach ann an DDL gus am bi an aon thùs fìrinn air ùrachadh.

Nuair a tha an stòr ùrachadh air tachairt, feumaidh a h-uile neach-dèiligidh na lethbhric aca den mhodail ùrachadh cuideachd. Faodaidh cuid de luchd-dèiligidh a bhith sgrìobhte ann an Java a’ cleachdadh jOOQ agus Hibernate no JDBC (no an dà chuid). Faodar teachdaichean eile a sgrìobhadh ann am Perl (bidh sinn a’ guidhe fortan dhaibh), cuid eile ann an C #. Cha dèan e diofar. Tha am prìomh mhodail anns an stòr-dàta. Mar as trice tha modalan air an cruthachadh le ORM de dhroch chàileachd, air an droch chlàradh, agus duilich an leasachadh.

Mar sin na dèan mearachdan. Na dèan mearachdan bhon toiseach. Obraich bho stòr-dàta. Tog loidhne-phìoban cleachdadh a dh'fhaodas a bhith fèin-ghluasadach. Dèan comas air gineadairean còd gus do mhodail stòr-dàta a chopaigeadh gu dòigheil agus a dhumpadh air teachdaichean. Agus stad air a bhith draghail mu ghineadairean còd. Tha iad math. Còmhla riutha, bidh thu nas cinneasaiche. Chan eil agad ach beagan ùine a chaitheamh gan stèidheachadh bhon toiseach, agus bidh bliadhnaichean de choileanadh nas fheàrr agad gus sgeulachd do phròiseact a thogail.

Na toir taing dhomh fhathast, nas fhaide air adhart.

Mìneachadh

Gus a bhith soilleir: Chan eil an artaigil seo ann an dòigh sam bith a’ tagradh gum feum an siostam gu lèir (ie, àrainn, loidsig gnìomhachais, msaa, msaa) a bhith sùbailte gus freagairt air modail an stòr-dàta agad. Is e na tha mi a’ bruidhinn san artaigil seo gum bu chòir còd teachdaiche a bhios ag eadar-obrachadh le stòr-dàta a bhith ag obair air bunait modail an stòr-dàta gus nach ath-ghin e modal an stòr-dàta ann an inbhe “ciad ìre”. Mar as trice bidh an leithid de loidsig suidhichte aig ìre ruigsinneachd dàta air an neach-dèiligidh agad.

Ann an ailtireachd dà-ìre, a tha fhathast air an gleidheadh ​​​​ann an cuid de dh'àiteachan, is dòcha gur e leithid de mhodail siostam an aon fhear a tha comasach. Ach, anns a 'mhòr-chuid de shiostaman, tha coltas gu bheil an ìre ruigsinneachd dàta na "fo-shiostam" a tha a' toirt a-steach modail an stòr-dàta.

Eisimpleirean

Tha eisgeachdan anns a h-uile riaghailt, agus tha mi air a ràdh roimhe seo gum faod an stòr-dàta an toiseach agus dòigh-obrach gineadh còd stòr a bhith neo-iomchaidh uaireannan. Seo beagan eisgeachdan mar sin (is dòcha gu bheil feadhainn eile ann):

  • Nuair nach eil fios dè an sgeama agus feumar fhosgladh. Mar eisimpleir, bheir thu seachad inneal gus luchd-cleachdaidh a chuideachadh le bhith a’ seòladh diagram sam bith. Phew. Chan eil gineadh còd an seo. Ach fhathast - an stòr-dàta an toiseach.
  • Nuair a dh’ fheumar cuairt a chruthachadh air an itealan gus fuasgladh fhaighinn air duilgheadas air choireigin. Tha e coltach gur e dreach beagan frilly den phàtran a tha san eisimpleir seo luach feartan eintiteas, i.e., chan eil sgeama air a dheagh mhìneachadh agad. Anns a 'chùis seo, gu tric chan urrainn dhut a bhith cinnteach idir gum bi RDBMS freagarrach dhut.

Tha eisgeachdan ann an nàdar sònraichte. Anns a 'mhòr-chuid de chùisean a' toirt a-steach cleachdadh RDBMS, tha fios ro-làimh air an sgeama, tha e taobh a-staigh an RDBMS agus is e an aon thùs "fìrinn", agus feumaidh a h-uile neach-dèiligidh lethbhreacan fhaighinn bhuaithe. Mas fheàrr, bu chòir gineadair còd a bhith ann.

Source: www.habr.com

Cuir beachd ann