目录

介绍

实现

看起来如何?

安装和示例

反馈


介绍

NoSqlOnSql基于扩展SQL数据库以支持NoSQL功能而无需任何内核更改。从这个意义上讲,它类似于诸如https://www.torodb.com或https://www.microsoft.com/zh-cn/research/project/json-server-2/等其他举措。

但是,NoSqlOnSql的方法不同,不是在处理流程中挂接中间件,而是在处理开始之前处理NoSQL语义。NoSqlOnSql被实现为源到源的编译器:NoSqlOnSql语句被编译为常规SQL语句,这些语句通常由数据库执行。该编译可以随时进行,即使在创建数据库之前查询的开发过程中也是如此。

NoSqlOnSql能够创建、更新和查询文档而无需任何架构定义。使用类似于JSON的符号定义文档。

实现

供应商之间的SQL实现不兼容。除此之外,对标准的遵循程度也很不同。这意味着,不幸的是,NoSqlOnSql的每个实现都必须针对特定的SQL风格。NoSqlOnSql的当前实现针对Transact-SQL或T-SQL。这是Microsoft SQL Server中使用的语言。

此外,在当前实现中已考虑以下注意事项:

  • 任何有效的SQL语句都是有效的NoSqlOnSql语句。SQL和NoSqlOnSql语句可以合并。NoSqlOnSql转换为等效的SQL语句。例如,可以从NoSqlOnSql SELECT查询创建SQL VIEWS。
  • 实现应尽可能不打扰。由NoSqlOnSql创建的永久工件的数量减少到实现一个集合中所有文档的ONE层次表。
  • 处理复杂查询时,NoSqlOnSql可能需要创建临时对象,查询完成后将丢弃这些临时对象。为避免名称冲突,所有NoSqlOnSql对象均以NOSQL_前缀开头。
  • NoSqlOnSql遵循只写模式,永远不会删除或更新数据。

如果需要更改值,则会创建该值的新版本。结果如下:

  • 默认情况下,仅提供值的最新版本,但是可以访问文档的更改历史记录。这使得NoSqlOnSql存储成为实现区块链的理想媒体。
  • 这种方法也遵循事件存储范例:https : //en.wikipedia.org/wiki/Event_store
  • 在SQL层,实现集合仅需要支持INSERT和SELECT。那就是表上的记录永远不会被修改或删除。在考虑容错(即复制)和可伸缩性(即分片)时,这提供了许多优势。

看起来如何?

NoSqlOnSql语法与SQL相似,它遵循语句、数据集和数据集操作的相同范例。所有NoSqlOnSql语句均以nosql开头。

NoSqlOnSql完全集成在SQL中,这两种类型的语句及其结果都可以混合在一起。

由于一个例子胜过千言万语,下面的例子不言而喻。此刻,不要太在意语法,只关注一般感觉以及NoSqlOnSql与SQL的混合方式。

nosql create springfield override
nosql insert {name: "Homer", nationality:"US",age: 34, color:"green",  lastname:"Simpson" ,weight:90,likes:['football','doughnuts'], children: [ {name: "Bart",lastname:"Simpson",weight:38,age:10},{name:"Lisa",lastname:"Simpson",age:8,likes:['music']}]
}   into springfield nosql insert { name: "Moe",lastname:"Szyslak",occupation:"bartender"}  into springfield nosql select ?,$name,$lastname,#age,$children[0].name as kid0 from springfield _where $Lastname='Simpson' 

返回:

    id | name  | lastname | age | kid0----------------------------------
0    1 | Homer | Simpson  |  34 | Bart
1    4 | Bart  | Simpson  |  10 |
2    5 | Lisa  | Simpson  |   8 |

安装和示例

用于T-SQL的NoSqlOnSql可作为.NET Framework的NuGet包提供。

Install-Package nosqlonsql -Version 1.0.1

使用它很简单,只需创建一个NoSql对象。

var nosql = new NoSql();  

使用nosql查询和支持的SQL方言类型调用Transpile(“mssql”表示MS SQL Server)。错误的结果表示语法错误:

if (!nosql.Transpile(nosqlquery, "mssql")) throw new Exception(nosql.Error);

代码、注释和主机回调是由于编译而生成的,但是我们只对Code块感兴趣,Code块只是常规的SQL代码。因此,我们照常执行它们:

using (var database=new SqlConnection(connectionString))
{for (var i = 0; i < nosql.Code.Length; i++){if (nosql.Code[i].Type == BlockType.Code){using (SqlCommand command = new SqlCommand(nosql.Code[i].Value, database)){using (var rs = command.ExecuteReader())...PROCESS AS USUAL !!}}}
}

更详细的示例可在 https://github.com/jsegarra1971/nosqlonsql/tree/master/Demo中找到。

反馈

NoSqlOnSql尚未准备就绪。当前,这只是概念证明(PoC),可以证明基于SQL和NoSQL文档之间的差距不是技术上的差距,而是概念上的差距。因此,它可以完全包含现有功能以及一些思考。

PoC是有效且扎实的,但是将其转变为可操作产品所需的工作并不是我愿意独自承担的。

简介NoSqlOnSql在SQL上实现NOSQL相关推荐

  1. SQL正在击败NoSQL,这对未来的数据意味着什么

    转载自   SQL正在击败NoSQL,这对未来的数据意味着什么 经过多年的沉寂之后,今天的SQL正在复出.缘由如何? 这对数据社区有什么影响? 自从可以利用计算机做事以来,我们一直在收集的数据以指数级 ...

  2. 字节跳动在 Spark SQL 上的核心优化实践

    作者 | 郭俊 封图 | BanburyTang 字节跳动数据仓库架构团队负责数据仓库领域架构设计,支持字节跳动几乎所有产品线(包含但不限于抖音.今日头条.西瓜视频.火山视频)数据仓库方向的需求,如 ...

  3. sql简介香气和sql简介_香气和SQL简介

    sql简介香气和sql简介 在你开始前 关于本系列 本教程系列讲授从基本到高级SQL和基本的XQuery主题,并展示如何通过使用SQL查询或XQueries将常见的业务问题表达为数据库查询. 开发人员 ...

  4. 字节跳动在Spark SQL上的核心优化实践

    字节跳动在Spark SQL上的核心优化实践 大数据架构 今天 以下文章来源于字节跳动技术团队 ,作者郭俊 字节跳动技术团队 字节跳动的技术实践分享 10月26日,字节跳动技术沙龙 | 大数据架构专场 ...

  5. 上海沙龙回顾 | ​字节跳动在Spark SQL上的核心优化实践

    10月26日,字节跳动技术沙龙 | 大数据架构专场 在上海字节跳动总部圆满结束.我们邀请到字节跳动数据仓库架构负责人郭俊,Kyligence 大数据研发工程师陶加涛,字节跳动存储工程师徐明敏,阿里云高 ...

  6. hive架构介绍、SQL引擎与NoSQL引擎的对比

    hive架构介绍.SQL引擎与NoSQL引擎的对比 什么是hive? 什么是数据仓库? 数据仓库的构建过程 OLTP应用和OLAP应用 数据仓库中的数据模型 什么是hive HIVE的体系结构 hiv ...

  7. Linux简介及在VMware上安装第一台虚拟机

    Linux简介及在VMware上安装第一台虚拟机 1 简介 1.1 Linux概念 1.2 VMware简介 1.3 XShell简介 1.4 xftp 2 Linux目录结构 3 步骤 3.1 安装 ...

  8. Simscape Multibody简介与入门(上) 准备工作

    转载于:https://zhuanlan.zhihu.com/p/67330380 Simscape Multibody简介与入门(上) 准备工作 (一)简(fei)介( hua ) 现如今几乎各个主 ...

  9. RDBMS之SQL:SQL语言的各种方言的简介(MySQL/Hive SQL/PQL/OracleSQL/SQLite影响力排序)、主流语言的对比之详细攻略

    RDBMS之SQL:SQL语言的各种方言的简介(MySQL/Hive SQL/PQL/OracleSQL/SQLite影响力排序).主流语言的对比之详细攻略 目录 SQL语言的各种方言的简介 1.My ...

最新文章

  1. 阿里面试: 说说强引用、软引用、弱引用、虚引用吧
  2. 改变mysql数据库用户的权限
  3. 【数学】礼物(jzoj 2129)
  4. WebClient上传文件至服务器和下载服务器文件至客户端
  5. php注册 绑定的容器,php – 将Eloquent模型绑定到服务容器
  6. css focus 选择器用于选取获得焦点的元素
  7. python gif图 ctf_从两道CTF实例看python格式化字符串漏洞
  8. python机器学习乳腺癌细胞模型
  9. 电感电容之开关电源的原理
  10. 优点家庭服务器如何修改wifi密码,家用wifi怎么改密码?
  11. 浅谈网络中数字签名技术
  12. 关于cnt++和++cnt
  13. 拆与组装计算机的全过程,拆装及组装电脑方法
  14. wincap的使用总结
  15. 【虫师--系列15】性能测试知多少---系统架构分析
  16. QNX 在车机系统中的应用
  17. 设计模式 — 简单工厂模式(Simple Factory)
  18. java后台导出pdf,基础用法和样例
  19. java basefont_itext 文本域 字体样式设置
  20. 青岛美迪康医疗科技有限公司

热门文章

  1. centos上升级node_在centos7安装nodejs并升级nodejs到最新版本
  2. android关闭系统弹窗,Android 禁止 EditText 弹出软件盘
  3. 彩色人物创意灵感|C4D万物皆可造!
  4. 国潮宫廷中国风文创包装品牌样机
  5. 如果不清楚设计方向,圣诞设计模板可以帮助你轻松建立节日主题。
  6. 极其良心的设计导航网站
  7. 如何查看bmp文件头_效率神器:史上最强最小文件搜索软件Everything!
  8. 频谱分析幅值单位_FFT分析的注意事项,您都知道吗?
  9. 2021年三月中旬推荐阅读文章
  10. likely() 和 unlikely()内建宏定义函数