「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

Biggy 介绍:一个面向文档数据库的类 ORM 库

2014 年 3 月 18 日

在使用关系数据时,有多种轻量级数据库可供选择,如 SQLite 和 SQL Server Compact。但当文档型数据库能够更好地满足需求时,选择余地之小令人吃惊。于是,我们创建了 Biggy。

Biggy 由 Rob Conery 发起创建,面向.NET,与 Node 的 NeDB 数据库相当。此后,它发展成为一个类 ORM 库,但遵循文档数据库的准则。表面看来,开发人员使用的似乎是正常的列表。但这些列表是由一个基于文档的存储层提供支持,比如:

  • 在磁盘上的 JSON 文件中(每个记录类型 T 一个文件)
  • 使用内置的 JSON 数据类型存储在 Postgres 数据库中
  • 使用普通文本存储在 SQL Server 中

其它存储选项,如 MongoDB 和 Azure Table Storage,目前正在开发之中。

下面是一个例子,在 Postgres 中新建一个名为“products”的表,并把一条记录存入其中:

复制代码
var products = new PGList<Product>("tekpub", "products");
var newProduct = new Product();
// 添加到表中
products.Add(newProduct);

由于所有记录的副本都存储在内存中,所以可以完全在内存中使用正常的 LINQ 查询。但如果需要更强大一点的功能,则可以针对特定的行启用全文搜索。

要实现这一点,开发人员需要将 FullText 特性应用到他想索引的属性上。这会在表创建的时候“将该列中的文本分离出来”,以便单独对它进行索引。此后,就可以在它上面进行全文搜索。

应用场景

显然,开发人员不应该使用这样一个东西将整个数据库保存在内存中。它主要用于 Rob Conery 所说的“输入数据”。这类数据很少发生变化,而且需要即时提供,如产品目录。从这种意义上讲,Biggy 很像一个可更新的缓存。

Biggy 总是实时可用,这是它与缓存的最大不同之一。典型的设计模式是,在应用程序启动的时候,把整个表从磁盘或数据库加载到内存中。在一些基础的基本问题测试中,Biggy 能够在 1 秒钟内从 Postgres 加载 10 万条记录。

不过,它确实有一些与缓存相同的局限。例如,如果同时运行一个应用程序的多个实例,那么没有办法使内存中的实例保持同步。

读者可以从 GitHub 上获取 Biggy 的源代码,它已经在开源许可证下发布。API 还处于不断变化之中,所以还没有在 NuGet 上提供。

查看英文原文:**** Introducing Biggy: An ORM-like Library for Document Databases

2014 年 3 月 18 日 07:29888
用户头像

发布了 256 篇内容, 共 69.2 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

一周信创舆情观察(10.12~10.18)

统小信uos

知识视频创作者何去何从,百度给出解答

脑极体

大数据上手实战!训练营“9营齐开”第二季限时免费报名啦

Apache Flink

大数据

华为云如何赋能无人车飞驰?从这群AI热血少年谈起

华为云开发者社区

人工智能 无人驾驶

USDT承兑商支付系统开发,区块链跨境支付源码

135深圳3055源中瑞8032

合约跟单软件开发,一键跟单系统搭建

135深圳3055源中瑞8032

LeetCode题解:50. Pow(x, n),暴力法,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

阿里18道常见的MySQL面试题,含解析

Java架构师迁哥

政府和企业如何认识到区块链的好处

CECBC区块链专委会

比特币 区块链

架构师训练营 - 第一周学习总结

joshuamai

数字货币可能重构全球货币体系

CECBC区块链专委会

数字货币 金融

网易:Flink + Iceberg 数据湖探索与实践

Apache Flink

flink 数据湖

开发一个交易所需要多少费用?币币交易系统

135深圳3055源中瑞8032

1分钟带你入门 React SCU、memo、pureCom

Leo

react.js 前端 React 前端进阶训练营 前端性能优化

架构师训练营培训第一周总结

lakers

极客大学架构师训练营

区块链多币种钱包开发服务商,多币种钱包APP

135深圳3055源中瑞8032

区块链技术本质再认知

CECBC区块链专委会

区块链 大数据

惠普中国(HPE)技术总监教你如何做个“火影般”的“架构师”

Java架构师迁哥

Java 程序员 架构

架构师训练营第一期 - 第周五课后 - 作业一

极客大学架构师训练营

了解HashMap数据结构,超详细!

程序员的时光

面试 hashmap HashMap底层原理

Java高并发编程的一本百科全书《Java高并发编程详解:多线程与架构设计》,把Java语言中最为晦涩的知识点都详解出来了!

Java架构之路

Java 程序员 架构 并发编程 编程语言

第五周学习代码技术选型总结

三板斧

极客大学架构师训练营

我从高级开发者身上学到的19条编码原则

Java架构师迁哥

Spring 5.2.7和SpringBoot 2.3.3中文翻译发布啦!!!

青年IT男

spring springboot

笔记本中的“全优生”,英特尔Evo产品上市首日秒光!

新闻科技资讯

第一周学习总结

Griffenliu

架构师训练营第 1 期第五周总结

Leo乐

极客大学架构师训练营

技术体系的构成

异想的芦苇

技术 技术管理 研发体系

两个程序员老友的会面

Philips

敏捷开发

作为一名Java程序员,技术栈的广度深度都不够还想要高薪?请先把这些技术掌握再说。

Java架构之路

Java 程序员 架构 面试 编程语言

2020,国产数据库崭露峥嵘的发轫之年

墨天轮

数据库 阿里云 华为云 SQL优化 活动专区

Biggy介绍:一个面向文档数据库的类ORM库-InfoQ