У чым розніца паміж семантычным і звычайным запытам?


адказ 1:

Семантычны запыт / звычайны запыт - гэта своеасаблівая памылка. Але я спадзяюся растлумачыць розніцу ў маім адказе. Асноўны адказ: "Звычайны" запыт не чытаецца, "семантычны" - запыт. Як аналогія: у машыне аўтаматычная каробка перадач з двума педалямі мае сэнсавы ўзровень у параўнанні з механічнай каробкай перадач з рычагом перадачы і трыма педалямі.

Вось так я і даведалася, асабліва ў пытаннях аптымізацыі баз дадзеных. Усё, што ваш рухавік базы дадзеных робіць для захавання інфармацыі на дыску для наступнага пошуку, робіцца згодна з графікам. На пэўным узроўні праграмнага забеспячэння вашай базы дадзеных існуе шэраг алгарытмаў, якія вызначаюць, што запісана на цвёрдым дыску і што застанецца ў аператыўнай памяці. У большасці сістэм баз дадзеных гэта звычайна называецца "прамыванне" на цвёрдым дыску і залежыць ад мадэлі віртуальнай памяці. У залежнасці ад тыпу дадзеных, якімі вы маеце справу, вы можаце наладзіць памер гэтых кэшаў і частату выдалення.

Напрыклад, вы можаце кэшаваць інфармацыю пра рэгістрацыю кліентаў і праверку на сайце. Тады вы можаце захаваць гэты кэш у аператыўнай памяці базы дадзеных, паколькі вы чакаеце, што вэб-сайце неадкладна мае патрэбу ў тых жа дадзеных для новага кліента, каб перагледзець уведзеную інфармацыю. З іншага боку, вы можаце ўвесці інфармацыю пра інвентарызацыю новых элементаў на складзе. Гэта не будзе пацверджана ў хуткім часе. Такім чынам, вы можаце выкарыстоўваць невялікія кэшы і скапіяваць іх на цвёрды дыск адразу. Гэта толькі для загрузкі.

Цяпер на ўзроўні API, дзе ваш вэб-сайт мае зносіны з вашай базай дадзеных (ці ўсё, што ваша прыкладанне кантактуе з вашай базай дадзеных), пры званку API альбо ў профілі вы можаце мець толькі памер і частату кэша для прамывання. удакладніць. Вы можаце напісаць гэта на Java альбо перадаць параметр для сесіі. Усё гэта "нармальна", і вы можаце зрабіць гэта для любога API сістэмы баз дадзеных.

"Сэнсавы" запыт, аднак, інкапсулюе гэтыя асаблівасці на больш высокім узроўні абстракцыі. Магчыма, я распрацую сэнсавы пласт і вырашыць назваць адно кэшаванне і флэш-наладу "FAST", а іншае "SLOW". Цяпер я проста павінен ведаць, ці раблю я запыт "хуткі" або "нізкі".

-

Гэта больш актуальна для таго, што я думаю, што больш пытаюцца прафесіяналы і можа мець нешта агульнае з MongoDB, базай дадзеных "NoSQL", якая абапіраецца на выклікі REST API з URI з дрэнным POST або GET з васьмі параметрамі. Адзначце адказы пасля пытання. Ваш JavaScript будзе рабіць усе віды гімнастыкі, каб перавесці набраўшы гэтую форму ў гэты модны URI. Гэта быў бы "звычайны" запыт, які не мае нічога агульнага з SQL. Усё гэта таму, што людзі хацелі стварыць API REST для Javascript, а не агульны семантычны ўзровень, які перакладае ўсе гэтыя магчымыя "звычайныя" запыты ў стандартную мову запытаў, як SQL.

Сапраўды гэтак жа адбывалася з некалькімі рассеянымі распрацоўшчыкамі ў асяроддзі Hadoop, якія пісалі ўтыліты для запытаў, такія як Hive і Pig, якія дадавалі ўзровень семантычнай абстракцыі да HFS пры званках Java API. Зноў жа, толькі розныя меншыя часткі сістэмы баз дадзеных з некалькімі аўтарамі не ўсе сабраны.

Справа ў тым, што многія распрацоўшчыкі ўжо шмат гадоў працуюць з убудовамі Apache і Apache у абагульненым свеце REST API, каб працаваць з адкрытым зыходным кодам і генераваць тую ці іншую сістэму без адпрацоўкі семантычных слаёў. Гэта таму, што вам не спатрэбіцца, калі вы можаце наняць каго-небудзь з магчымасцю выкарыстоўваць Javascript для званкоў з базы дадзеных нізкага ўзроўню. Цяпер жа такія рэчы, як Node.js і Rails, стандартызавалі некаторыя рэчы, неабходныя распрацоўшчыкам вэб-баз дадзеных. Гэта проста яшчэ адзін сэнсавы пласт, які абстрагуе функцыі для людзей, якія не хочуць пісаць званкі на ніжніх узроўнях.

"Я проста хачу стварыць сайт з каментарамі, я не хачу нічога ведаць пра базы дадзеных". Ну, хто-то будуе для вас сэнсавы ўзровень, і зараз вы можаце назваць гэта чымсьці для "звычайных" запытаў. Але хтосьці іншы можа стварыць сэнсавы пласт на гэтым семантычным слоі, каб зрабіць яго лягчэй пераадолець яшчэ ніжэйшыя перашкоды для пачатку вэб-распрацоўкі.

У канчатковым выніку няма розніцы паміж "нармальным" і "семантычным". Гаворка ідзе пра тое, каб хтосьці выконваў працу па пабудове семантычнага ўзроўню абстракцыі, для таго, каб ваша сістэма працавала і працавала камфортна. Ну і вядома, колькі спецыфікі і прадукцыйнасці вы можаце атрымаць з абстрагаванага ўзроўню.