Cypher — deklarativ grafik soʻrovlar tili boʻlib, u xususiyat grafigida ekspressiv va samarali maʼlumotlarni soʻrash imkonini beradi[1].

Cypher asosan 2011-yilda Neo4j, Inc. (sobiq Neo Technology) kompaniyasida ishlayotgan Andreas Taylorning ixtirosi edi[2] Cypher dastlab Neo4j grafik maʼlumotlar bazasi bilan foydalanish uchun moʻljallangan edi, lekin 2015-yil oktyabr oyida openCypher loyihasi orqali ochildi[3].

Til SQL quvvati va imkoniyatlarini hisobga olgan holda ishlab chiqilgan (ilovaviy maʼlumotlar bazasi modeli uchun standart soʻrovlar tili), lekin Cypher grafik nazariyasi tushunchalari asosida qurilgan maʼlumotlar bazasi komponentlari va ehtiyojlariga asoslangan edi. Grafik modelida maʼlumotlar tugunlar (matematika va tarmoq fanidagi choʻqqilar) va munosabatlar (matematika va tarmoq fanlaridagi qirralar) sifatida tuzilgan boʻlib, maʼlumotlardagi ob’ektlar bir-biri bilan qanday bogʻlangan va bogʻlangan.

Grafik modeli tahrir

Cypher Property Graph Model ga asoslangan boʻlib, u maʼlumotlarni tugunlar va qirralarga (Cypherda „munosabatlar“ deb ataladi) tashkil qiladi. Tugunlar va munosabatlarning standart grafik elementlariga qoʻshimcha ravishda, xususiyat grafik modeli maʼlumotlarning nozik toifalari va atributlarini tavsiflash uchun teglar va xususiyatlarni qoʻshadi.

Tugunlar grafikdagi ob’ektlardir. Ular xossalar deb ataladigan istalgan sonli atributlarni (kalit-qiymat juftlari) saqlashi mumkin. Tugunlar domendagi turli rollarini ifodalovchi nol yoki undan ortiq yorliqlar (teglar yoki toifalar kabi) bilan belgilanishi mumkin. Aloqalar ikkita tugun ob’ekti oʻrtasidagi yoʻnaltirilgan, nomli, semantik jihatdan tegishli aloqalarni taʼminlaydi. Oʻzaro munosabatlar har doim yoʻnalishga, boshlangʻich tugunga, yakuniy tugunga va aynan bitta aloqa turiga ega. Tugunlar kabi munosabatlar ham xususiyatlarga ega boʻlishi mumkin[4].

Yorliqlar nol yoki undan ortiq tugun belgilarini belgilash orqali oʻxshash tugunlarni guruhlashi mumkin. Yorliqlar teglarga oʻxshaydi va izlash yoki yaratish uchun muayyan turdagi ob’ektlarni belgilash imkonini beradi. Xususiyatlar qatorli kalit va Cypher tipidagi tizimning baʼzi qiymatini bogʻlaydigan kalit-qiymat juftliklari. Cypher soʻrovlari belgilangan naqshda topilgan maʼlumotlarni yaratish, oʻqish, yangilash, oʻchirish uchun teglar va xususiyatlar boʻyicha har qanday belgilangan filtrlash bilan tugunlar va munosabatlar naqshlari bilan yigʻiladi.

Kalit soʻzlar tahrir

Boshqa soʻrovlar tillariga oʻxshab, Cypher naqshlarni belgilash, naqshlarni filtrlash va natijalarni qaytarish uchun turli xil kalit soʻzlarni oʻz ichiga oladi. Eng keng tarqalganlar orasida: MATCH, WHERE va RETURN. Bular SQLda SELECT va WHERE dan biroz farq qiladi; ammo, ular oʻxshash maqsadlarga ega.

MATCH tugunlar, aloqalar yoki tugunlar va munosabatlar kombinatsiyalarini topish uchun qidiruv sxemasini tavsiflashdan oldin ishlatiladi[5]. Cypher'da WHERE naqshlarga qoʻshimcha cheklovlar qoʻshish va kiruvchi naqshlarni filtrlash uchun ishlatiladi[6]. Cypher’s RETURN formatlari va natijalarni qanday chiqarish kerakligini tartibga soladi. Boshqa soʻrovlar tillarida boʻlgani kabi, natijalarni maʼlum xususiyatlar, roʻyxatlar, buyurtma va boshqalar bilan qaytarishingiz mumkin[7].

Cypher ilovalari tahrir

Cypher Neo4j maʼlumotlar bazasida, SAP’ning HANA Graph, Redis Graph[8]. Cambridge Semantics' Anzograph[9]. Bitnineʼs AgensGraph[10] Memgraph[11] va ochiq kodli Cypher for Gremlin loyihalarida amalga oshiriladi[12]. Rigadagi Neueda Labs va Cypher for Apache Spark (hozirda Morpheus deb oʻzgartirilgan) tomonidan[13][14][15] hamda Cypher kabi tadqiqot loyihalarida saqlanmoqda.

Manbalar tahrir

  1. „Cypher Introduction“. Neo4j. Qaraldi: 2019-yil 8-noyabr.
  2. „Cypher: An Evolving Query Language for Property Graphs“. Proceedings of the 2018 International Conference on Management of Data. ACM. Qaraldi: 2018-yil 27-iyun.
  3. „Meet openCypher: The SQL for Graphs - Neo4j Graph Database“ (en-US). Neo4j Graph Database (2015-yil 21-oktyabr). Qaraldi: 2019-yil 8-noyabr.
  4. „Property Graph Model“ (en). GitHub. Qaraldi: 2019-yil 8-noyabr.
  5. „Cypher manual - MATCH clause“. Neo4j. Qaraldi: 2019-yil 8-noyabr.
  6. „Cypher manual - WHERE clause“. Neo4j. Qaraldi: 2019-yil 8-noyabr.
  7. „Cypher manual - RETURN clause“. Neo4j. Qaraldi: 2019-yil 8-noyabr.
  8. RedisGraph - a graph database module for Redis. Redis Labs. Qaraldi: 2019-yil 9-noyabr.
  9. Cambridge Semantics Adds OpenCypher to AnzoGraph (2019-yil mart). Qaraldi: 2019-yil 9-noyabr.
  10. AgensGraph - AgensGraph supports Ansi-SQL and OpenCypher (2018-yil 21-sentyabr).
  11. „Memgraph - Frequently asked questions“. memgraph.com.
  12. Novikov. Cypher for Gremlin adds Cypher support to any Gremlin graph database.. openCypher (2018-yil yanvar). Qaraldi: 2019-yil 3-noyabr.
  13. Rydberg. Morpheus brings the leading graph query language, Cypher, onto the leading distributed processing platform, Spark.. openCypher (2016-yil iyul). Qaraldi: 2019-yil 3-noyabr.
  14. Green. Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apache Spark. Databricks Inc. (2019-yil aprel). Qaraldi: 2019-yil 3-noyabr.
  15. Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apache Spark (continues).