当前位置: 首页 > article >正文

SQL Server 图数据库学习笔记1:构建图数据库

SQL Server 图数据库学习笔记1构建图数据库摘要在AI开发中知识图谱是非常火的一个领域而提到图数据库大家都会第一时间想到Neo4J其实在SQLServer中早已有支持此篇将简单演示如何在SQLServer下构建图数据库实现知识图谱的管理。最终我们将搭建出一个如下的简单知识图谱页面SQL Server 图数据库搭建数据库创建与配置开始之前需要确定SQLServer安装的版本是2017之后的版本。-- 创建支持中文的图数据库CREATEDATABASEGraphDBCOLLATEChinese_PRC_CI_AS;GOUSEGraphDB;GO库的创建跟创建常规数据库的方法一致。图数据库核心表结构在SQLServer中跟Neo4J一样基本物件都是NODE和EDGE在SQLServer中的创建方法如下节点表 (Nodes)-- 使用 AS NODE 创建原生图节点表CREATETABLENodes(NodeType NVARCHAR(100)NOTNULL,Name NVARCHAR(255)NOTNULL,Properties NVARCHAR(MAX)DEFAULT{},CreatedAt DATETIME2DEFAULTGETDATE(),UpdatedAt DATETIME2DEFAULTGETDATE(),IsDeletedBITDEFAULT0)ASNODE;-- 创建索引CREATEINDEXIX_Nodes_NodeTypeONNodes(NodeType);CREATEINDEXIX_Nodes_NameONNodes(Name);知识点笔记AS NODE将表声明为图节点表SQL Server 自动添加$node_id列$node_id系统生成的唯一标识格式为 JSON如{type:node,schema:dbo,table:Nodes,id:0}自定义列NodeType、Name、Properties等业务字段无需手动定义主键SQL Server 自动管理节点 ID边表 (Edges)-- 使用 AS EDGE 创建原生图边表CREATETABLEEdges(EdgeType NVARCHAR(100)NOTNULL,Properties NVARCHAR(MAX)DEFAULT{},WeightFLOATDEFAULT1.0,CreatedAt DATETIME2DEFAULTGETDATE(),UpdatedAt DATETIME2DEFAULTGETDATE(),IsDeletedBITDEFAULT0)ASEDGE;-- 创建索引CREATEINDEXIX_Edges_EdgeTypeONEdges(EdgeType);知识点笔记AS EDGE将表声明为图边表SQL Server 自动添加$edge_id、$from_id、$to_id列$edge_id边的唯一标识JSON 格式$from_id起始节点的$node_id$to_id目标节点的$node_id方向性边是有向的$from_id指向$to_id无需外键约束原生图自动维护引用完整性创建节点和关系跟Neo4J的Cypher语句差别很大这里需要留意。测试数据生成插入节点数据-- 人物节点INSERTINTONodes(NodeType,Name,Properties)VALUES(Person,张三,{age: 35, occupation: 工程师, city: 北京}),(Person,李四,{age: 42, occupation: CEO, city: 深圳}),(Person,王五,{age: 28, occupation: 产品经理, city: 杭州});-- 公司节点INSERTINTONodes(NodeType,Name,Properties)VALUES(Company,腾讯科技,{founded_year: 1998, industry: 互联网}),(Company,阿里巴巴,{founded_year: 1999, industry: 电子商务}),(Company,字节跳动,{founded_year: 2012, industry: 科技});插入边关系数据 - 使用原生图语法-- 工作关系使用 $from_id 和 $to_id 插入边INSERTINTOEdges($from_id,$to_id,EdgeType,Properties)SELECTn1.$node_id,n2.$node_id,WORKS_AT,{department: 技术部, start_year: 2020}FROMNodes n1,Nodes n2WHEREn1.Name张三ANDn2.Name腾讯科技;INSERTINTOEdges($from_id,$to_id,EdgeType,Properties)SELECTn1.$node_id,n2.$node_id,FOUNDED,{role: 创始人}FROMNodes n1,Nodes n2WHEREn1.Name李四ANDn2.Name阿里巴巴;知识点笔记使用$from_id和$to_id指定边的起始和目标节点通过子查询从已有节点获取$node_id边类型命名采用大写蛇形命名法保持一致性JSON 属性字段支持灵活扩展复杂关系网络构建-- 产品节点INSERTINTONodes(NodeType,Name,Properties)VALUES(Product,微信,{launch_year: 2011, category: 社交}),(Product,淘宝,{launch_year: 2003, category: 电商});-- 产品归属关系INSERTINTOEdges($from_id,$to_id,EdgeType,Properties)SELECTn1.$node_id,n2.$node_id,PRODUCES,{}FROMNodes n1,Nodes n2WHEREn1.Name腾讯科技ANDn2.Name微信;INSERTINTOEdges($from_id,$to_id,EdgeType,Properties)SELECTn1.$node_id,n2.$node_id,PRODUCES,{}FROMNodes n1,Nodes n2WHEREn1.Name阿里巴巴ANDn2.Name淘宝;图数据库查询实战查询节点及其邻居 - MATCH 语法-- 使用 MATCH 语法查询张三的直接关系SELECTn1.NameASsource_name,e.EdgeType,n2.NameAStarget_nameFROMNodes n1,Edges e,Nodes n2WHEREMATCH(n1-(e)-n2)ANDn1.Name张三;知识点笔记MATCH语法SQL Server 原生图查询语法n1-(e)-n2表示从 n1 通过边 e 指向 n2方向性-表示有向边从 n1 到 n2无需 JOIN 关键字路径关系在 MATCH 中声明多跳路径查询-- 查询张三所属公司的产品两跳查询SELECTn1.NameASperson_name,n2.NameAScompany_name,n3.NameASproduct_nameFROMNodes n1,Edges e1,Nodes n2,Edges e2,Nodes n3WHEREMATCH(n1-(e1)-n2-(e2)-n3)ANDn1.Name张三ANDe1.EdgeTypeWORKS_ATANDe2.EdgeTypePRODUCES;知识点笔记MATCH支持多跳路径n1-(e1)-n2-(e2)-n3在一条 MATCH 中声明完整的路径模式边类型过滤e1.EdgeType WORKS_AT支持任意深度的路径查询查询边的方向信息-- 查询边的方向入向/出向SELECTn.NameASnode_name,e.EdgeType,CASEWHENe.$from_idn.$node_idTHENoutgoingELSEincomingENDASdirectionFROMNodes n,Edges e,Nodes n2WHEREMATCH(n-(e)-n2)AND(n.Name张三ORn2.Name张三);运行测试查询会发现SQLServer在SSMS里目前还并不像Neo4J自带的browser一样可以直接把知识图谱展现出来目前能显示的只是常规表格数据。想要看到知识图谱效果后续需要自己搭建对应的前端应用。总结使用SQLServer创建图数据库是支持的如果已经熟悉了SQLServer那么学习的成本不会很高而且如果已经部署了SQLServer的话也不需要再去安装额外的东西。使用起来跟Neo4J的差异还是很大包括建库和插入数据。功能上虽还有差距但也基本可用。后续会继续介绍如何搭建前端应用让知识图谱显示在页面上。

相关文章:

SQL Server 图数据库学习笔记1:构建图数据库

SQL Server 图数据库学习笔记1:构建图数据库 摘要 在AI开发中,知识图谱是非常火的一个领域,而提到图数据库大家都会第一时间想到Neo4J,其实在SQLServer中早已有支持,此篇将简单演示如何在SQLServer下构建图数据库&…...

企业级全场景 API 网关实践:基于 Kong Hybrid 模式的跨 VPC 部署与 GitOps 治理

企业级全场景 API 网关实践:基于 Kong Hybrid 模式的跨 VPC 部署与 GitOps 治理 随着企业微服务架构演进至深水区,API 网关的角色早已超越了单一的南北向流量入口。在真实的金融与大型企业业务场景中,我们面临的往往是极其复杂的异构环境&…...

【优化求解】通过信号灯交叉路口的连接燃料电池混合动力车的生态驾驶双层凸优化附matlab代码

​✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书…...

从AI元人文构想到元哲学——在解释世界与改变世界之间致敬马克思

从AI元人文构想到元哲学——在解释世界与改变世界之间致敬马克思核心命题:马克思揭示了“物质生产力与生产关系的矛盾”,岐金兰的痕迹论将其纵深发展为“痕迹生产力与自感生产关系的矛盾”——以“意义行为原生论”为第一原理,以“制度性四元…...

终极指南:如何使用AppleRa1n轻松绕过iOS 15-16.6激活锁

终极指南:如何使用AppleRa1n轻松绕过iOS 15-16.6激活锁 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 还在为忘记Apple ID密码或二手iPhone的iCloud激活锁而烦恼吗?AppleRa1n是…...

MCP服务器开发调试利器:mcp-doctor工具详解与实战指南

1. 项目概述:一个为MCP生态量身定制的“健康诊断师”最近在折腾各种AI Agent和工具调用时,MCP(Model Context Protocol)这个词出现的频率越来越高。简单来说,它就像给大模型(比如Claude、GPTs)定…...

Claude IDE工具集:让AI编程助手从代码生成到自主执行

1. 项目概述:一个为Claude设计的IDE工具集最近在折腾AI编程助手时,发现了一个挺有意思的项目——YousifAshwal/claude-ide-tools。这本质上是一个专门为Anthropic的Claude模型(特别是Claude 3系列)打造的集成开发环境工具集。简单…...

规则引擎统一管理平台:解耦业务规则与执行引擎的设计与实践

1. 项目概述:规则引擎的“集线器”构想如果你在开发一个涉及复杂业务规则的系统,比如电商的风控、内容审核或者自动化营销,你大概率会头疼于规则的管理。规则散落在代码各处,修改需要发版,测试困难,不同团队…...

ChatGPT for Google扩展开发指南:从架构设计到部署实践

1. 项目概述与核心价值 如果你和我一样,每天的工作和学习都离不开搜索引擎,那你一定有过这样的体验:在Google或Baidu上输入一个问题,得到的是一堆需要你花时间筛选、归纳的链接,而不是一个直接、结构化的答案。尤其是…...

LangGraph构建数据分析智能体:从工作流编排到生产级实践

1. 项目概述:当LangGraph遇上数据分析,智能体如何重塑工作流最近在开源社区里看到一个挺有意思的项目,叫abh2050/langgraph_data_analytics_agents。光看名字,就能嗅到一股“组合拳”的味道:LangGraph、数据分析、智能…...

使用Nodejs构建服务端应用并接入Taotoken大模型API

使用Nodejs构建服务端应用并接入Taotoken大模型API 1. 环境准备与依赖安装 在开始集成Taotoken大模型API之前,需要确保Node.js开发环境已经就绪。推荐使用Node.js 18或更高版本,以获得最佳的异步操作支持。可以通过运行node -v命令检查当前版本。 首先…...

2026年AI Agent实战(一):用200行Python从零搭建一个能自主完成任务的智能体

本文是AI Agent实战系列的第一篇。我们将从零开始,用Python实现一个基于ReAct框架的智能体,它能自主思考、调用工具、完成任务。全文含完整可运行代码,约3500字。 目录 一、什么是AI Agent二、ReAct框架:思考-行动-观察循环三、核…...

SAP采购订单税码自动化:除了BADI,还有这3种配置方案你可能没想到

SAP采购订单税码自动化:超越BADI的3种高效配置方案 每次手工输入税码的痛苦,只有经历过采购订单高峰期的人才能真正体会。想象一下,面对数百行物料清单,重复输入相同的税码,不仅效率低下,还容易出错。作为S…...

信息安全工程师-入侵检测系统核心原理与体系架构

一、引言(一)核心概念定义入侵检测系统(Intrusion Detection System, IDS)是网络安全纵深防御体系的核心组件,通过收集操作系统、网络流量、应用程序日志等多源信息,识别系统中违背安全策略或危及系统安全的…...

别再只盯着ADF了!用Python的statsmodels做KPSS检验,区分‘水平平稳’和‘趋势平稳’的保姆级指南

别再只盯着ADF了!用Python的statsmodels做KPSS检验,区分‘水平平稳’和‘趋势平稳’的保姆级指南 时间序列分析中,平稳性检验是绕不开的关键步骤。很多数据分析师一提到平稳性检验,第一反应就是ADF检验(Augmented Dick…...

5分钟掌握1Fichier下载管理器:轻松突破下载限制的终极解决方案

5分钟掌握1Fichier下载管理器:轻松突破下载限制的终极解决方案 【免费下载链接】1fichier-dl 1Fichier Download Manager. 项目地址: https://gitcode.com/gh_mirrors/1f/1fichier-dl 1Fichier下载管理器是一款专为1Fichier文件分享平台设计的智能下载工具&a…...

直接序列扩频技术原理与PSoC实现详解

1. 直接序列扩频技术基础解析直接序列扩频(DSSS)是一种通过伪随机码(PN序列)扩展信号频谱的无线通信技术。1941年由好莱坞女星Hedy Lamarr和作曲家George Antheil首次提出(美国专利#2,292,387),这项技术如今已广泛应用于蜂窝电话、无线局域网…...

别再暴力finetune了!(Python轻量化微调的3种范式切换策略——精度不降、显存直降68%)

更多请点击: https://intelliparadigm.com 第一章:暴力微调的困局与轻量化微调的必要性 在大语言模型(LLM)落地实践中,全参数微调(Full Fine-tuning)常被称作“暴力微调”——它要求加载全部模…...

碾压传统搜索:大模型 Advanced RAG 架构设计与 FAISS 向量检索性能调优

这一篇,我们要聊聊目前 AI 领域最火、也是最有商业价值的落地架构。 随着大语言模型(LLM)的爆发,很多企业发现直接把 PDF 丢给 GPT 问问题,经常会出现“幻觉”或者回答不准确。为了解决这个问题,RAG&#x…...

GraphRAG 实战最大的坑:一个实体,七种身份

当你以为 GraphRAG 最难的是"建图",实际上最难的是"给实体定类型"——哪怕你已经预定义了严格的类型 schema。一、先看一组真实数据 我们拿 3GPP TS 23.502(5G 核心网信令流程规范)跑了一次 GraphRAG 的实体抽取。这份文…...

为什么你的XGBoost风控模型突然失效?——央行2024新规下特征穿越检测实战方案

更多请点击: https://intelliparadigm.com 第一章:为什么你的XGBoost风控模型突然失效?——央行2024新规下特征穿越检测实战方案 2024年3月起施行的《金融人工智能模型监管指引(试行)》明确要求:所有面向信…...

量化进阶:基于 L2 限价订单簿 (LOB) 的微观结构特征工程与深度学习预测

量化进阶:基于 L2 限价订单簿 (LOB) 的微观结构特征工程与深度学习预测 在量化交易的江湖里,有一个公开的秘密:价格不是平滑移动的,而是由一笔笔限价单(Limit Orders)的挂单、撤单和市价单(Mark…...

量子计算编程框架QUASAR:强化学习优化汇编代码生成

1. 量子计算与汇编代码的碰撞 量子计算正在从实验室走向实际应用,但编写量子程序仍然是个技术活。传统量子编程需要开发者同时理解量子物理原理和特定硬件架构,这种双重门槛让很多潜在开发者望而却步。我在量子计算领域摸爬滚打多年,亲眼见过…...

Otter.ai CLI工具:为开发者与AI智能体打造自动化会议管理方案

1. 项目概述:一个为开发者与AI智能体打造的Otter.ai命令行工具 如果你和我一样,每天要处理大量的会议录音和转录文本,那么Otter.ai这个工具你一定不陌生。它确实是个会议记录的神器,能自动识别不同说话人,生成带时间戳…...

分布式系统自适应路由优化:RouteMoA架构解析

1. 项目背景与核心价值在分布式系统架构中,混合代理模式已成为处理高并发、异构网络环境的主流方案。但传统静态路由策略在面对动态网络拓扑和波动性流量时,常常出现资源分配不均、响应延迟等问题。RouteMoA项目的核心创新在于实现了基于实时网络状态的自…...

从零部署YOLO到DJI遥控器:手把手教你用MSDK打造一个‘会看’的无人机巡检App

从零部署YOLO到DJI遥控器:手把手教你用MSDK打造一个‘会看’的无人机巡检App 想象一下,你的无人机不仅能按照预设航线飞行,还能实时识别电力塔上的绝缘子破损、安防区域内的异常人员活动——这就是智能巡检系统的魅力所在。本文将带你从零开始…...

避坑指南:为什么我总劝新手安装Anaconda时别勾选‘添加到PATH’?

为什么Anaconda安装时不该勾选"添加到PATH"?深度解析环境变量陷阱 第一次安装Anaconda时,那个看似无害的"Add Anaconda to my PATH environment variable"选项就像潘多拉魔盒——勾选它可能打开一连串意想不到的问题。作为处理过数百…...

微众银行年营收363亿:同比降4.8% 净利110亿 不良贷款率1.41%

雷递网 雷建平 5月3日微众银行(WeBank)日前发布2025年的年报,年报显示,微众银行2025年营收为362.84亿元,较上年同期的381.28亿元下降4.8%。微众银行2023年营收为393.6亿元,这意味着,微众银行的营…...

诚益生物冲刺港股:年亏损4460万美元 业务深度绑定阿斯利康

雷递网 雷建平 5月3日诚益生物开曼有限公司(简称:“诚益生物”)日前更新招股书,准备在港交所上市。诚益生物于2025年12月向FDA提交ECC4703作为司美格鲁肽辅助治疗肥胖症╱超重的IIa期试验的IND申请,并于2026年1月收到F…...

Python日志把磁盘写爆了?一个真实案例教你用logrotate和find命令优雅管理日志文件

Python日志管理实战:如何用logrotate和find命令避免磁盘爆满 1. 从真实案例看日志管理的痛点 那天凌晨三点,监控系统突然报警——生产环境的核心服务全部宕机。紧急登录服务器排查,发现磁盘空间被日志文件占满,Python应用抛出OSEr…...