写点什么

Martin Fowler 论 21 世纪的软件设计

2013 年 4 月 07 日

人们未能很好地理解无模式(Schemaless)数据结构,重要的是当我们在 NoSQL 数据库中使用这些数据结构的时候如何权衡它的优缺点。在最近的一次公司活动中, Martin Fowler 就无模式数据结构 和 NoSQL 与一致性进行了讨论

无模式数据结构:

无模式通常被视为NoSQL 数据库的一个重大优势,而Martin 认为人们未能很好地理解这一领域,同时他介绍了无模式的不同方面以及使用无模式数据结构的优缺点。

Martin 讨论的重点是即使在无模式的结构中,依然存在着模式。为了查询数据和寻找信息,你必须理解数据,从而有了一个隐式模式(Implicit Schema),例如代码中的数据定义。与此相对的是关系数据库中的模式,该模式只接受恰当的数据,这是一种显式模式(Explicit Schema)

Martin 在结束讨论时声称,即使在某些情况下无模式非常有用,但大多数时候 “隐式模式 == 坏事(Bad Thing)”,并推荐使用显式模式从而使数据拥有一个清晰的描述。但是他同样也指出模式并非固定的存储模式;它可以在同一契约下具有更多的形式,例如一个数据访问层或 XML 模式。

NoSQL**** 与一致性

在本次演讲中 Martin 着眼于 NoSQL 数据库一致性的两个方面。

逻辑一致性涉及在一个数据库中工作时如何保持数据一致性。对于大多数 NoSQL 数据库(图形数据库除外)来说,使用聚集( aggregate (来自领域驱动设计中的一个概念,即在同一时间存储的一个对象群集)是避免数据不一致的一个显著方式。

当描述同一数据在多个不同地点的复制一致性时,Martin 介绍了 CAP 理论。而数据一旦通过网络完成复制后,他将该问题简化为如何在一致性和可用性之间做出选择。他强调了这并非是一个技术问题,这是在一致性和可用性优先级方面的一个业务选择。

最后,Martin 以软件设计的价值和技术债务的讨论结束了该次演讲。

查看英文原文 Martin Fowler on Software Design in the 21st Century

2013 年 4 月 07 日 05:202231
用户头像

发布了 52 篇内容, 共 20.1 次阅读, 收获喜欢 5 次。

关注

评论

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

LeetCode题解:155. 最小栈,单个栈同时存储最小值,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

Spring整合WebSocket

牛初九

OFD版式技术深度解读:卷首语

华宇法律科技

版式文档 OFD

mPaas研发流程和线上运维介绍

阿里云金融线TAM SRE专家服务团队

ios android

Redis常见问题--哈希冲突

是老郭啊

哈希表 Redis项目

数字化转型需要低/零代码平台的支持

代码制造者

低代码 数字化转型 企业信息化 零代码 编程开发

开发任务管理分析报告

森林

controller-manager的主动驱逐

Geek_f24c45

Kubernetes k8s

Redis常见问题--单线程

是老郭啊

nosql redis 线程

开发者的福音,LR.NET模块化代码生成器

Learun

Java 敏捷开发 .net core 计算机程序设计艺术 软件设计

JAVA,.NET项目开发难上手?Learun敏捷开发框架解君愁

Philips

Java 敏捷开发 .net core

Spring Boot中获取配置的一些方法

Geek_416be1

Spring Boot 2

区块链支付系统开发方案,usdt跑分系统搭建

WX13823153201

消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?

yes的练级攻略

分布式事务 RocketMQ kafak 事务消息

数字人民币钱包短暂露面 金融诈骗伺机而起

CECBC区块链专委会

数字货币 钱包 货币

看百度技术专家如何深入研究,重复使用的代码经验——设计模式

周老师

Java 编程 程序员 架构 设计模式

JVM 内存模型、字节码、垃圾回收面试要点

escray

学习 面试 垃圾回收 字节码 面试现场

一个空格引发的“救火之旅” - 记一次 SOFA RPC 的排查过程

阿里云金融线TAM SRE专家服务团队

一文带你深扒ClassLoader内核,揭开它的神秘面纱!

我没有三颗心脏

Java ClassLoader java基础 类加载器

【译】Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases 上篇

花里胡哨

分布式数据库 异步 Amazon Aurora 日志驱动

10万奖金等你拿!2020第四届易观OLAP算法大赛火热开启

易观大数据

向云再出发:如数据般飞驰的内蒙古

脑极体

Vue+Springboot项目部署

ZRK

Vue 前后端分离 springboot 部署

人民版权 获2020中国产业区块链创新奖

CECBC区块链专委会

区块链 产业发展 版权

银行大数据新玩法,构建“一湖两库”金融数据湖

华为云开发者社区

大数据 数据湖 FusionInsight MRS DWS

OpenKruise:Kubernetes 核心控制器 Plus

郭旭东

Kubernetes 云原生 OpenKruise

易观CTO郭炜:如何构建企业级大数据Ad-hoc查询引擎

易观大数据

NodeX Component - 滴滴集团 Node.js 生态组件体系

滴滴普惠出行

Redis 持久化--AOF

是老郭啊

redis redis持久化 aof

新基建迎来风口 新人才仍有缺口

CECBC区块链专委会

人工智能 新基建 数字化基础

深入了解 Rust 异步开发模式

lipi

rust 异步

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Martin Fowler论21世纪的软件设计-InfoQ