如果行业正常发展下去的话,那么今天我们认为很难、做起来很有价值的事情在明天都会变得很轻松普遍。我想我们会发现很多新的抽象,让 Google Docs 写起来也能像今天的普通 Web 应用一样简单。...理想情况下,我们应该有一些非常接近数据库的东西,确保任何数据访问都通过权限检查。像 Postgres 这样的数据库有行级安全性,但这很快就会变得很麻烦。...这种办法是可行的,但大多数数据库并不是为它设计的:查询不像我们预期的那样工作,优化起来也比我们预期的更难。我们最后不得不非常小心地处理更新机制,以免意外删除记录。...如果我们想制作这样的应用,理想的数据抽象应该是什么样的? 需求 客户端数据库,有着强大的查询语言 从浏览器来看,这种抽象必须像 firebase 一样,但要有强大的查询语言。...你应该能够查询本地数据,并且它应该与 SQL 一样强大。你的查询应该是响应式的,如果有更改会自动更新。它也应该为你处理乐观更新。
它还内置到你常用的Hadoop发行版中,它得到Ambari的支持,与Hive可以顺畅地连接。如果你添加Phoenix,甚至可以使用常用的商业智能工具来查询HBase,好像它就是SQL数据库。...Impala Teradata和Netezza使用MPP来处理跨分布式存储的SQL查询。Impala实际上是基于HDFS的一种MPP解决方案。...它速度更快,延迟更低,而且耗用更少的内存――大规模获取流数据时,这点很重要。另一方面,Storm的管理工具较为逊色,API也不如Spark的API一样好。Apex更新更好,但还没有得到广泛部署。...正如你想象,在Spark上运行Pig需要费老大的劲。 从理论上来说,在Hive上执行SQL的人可以改用Pig,就像他们过去由SQL改用PL/SQL那样,但事实上,Pig不如PL/SQL来得简单。...Databricks有良好的开端,自我上一次表示对它腻味以来,其解决方案已经成熟起来。另一方面,Zeppelin是开源的,没必要非得从Databricks购买云服务。你应该知道其中一款这样的工具。
像 Cloudflare 这样的公司正在使用并鼓励人们写 Rust 来运行微服务。Rust 编写的软件可能比 C++ 或 C 更安全、更小、更简洁。...N+1 问题是每个构建 Web 应用程序的人都应该知道的。要点是:你有一页照片(一次查询),你要显示每张照片的作者,会有多少次查询:1,合并照片和作者,或者在检索照片后对每张照片进行查询以获取作者?...我们有很多方法来尝试和解决这些问题:你可以编写 SQL,并尝试使用 CTE 和 JOIN 在单个查询中完成大量工作,就像我们在 Observable 中所做的那样,或者使用像 ActiveRecord...任何 SQL 级别的优化都不可能做到——你的服务器正在编写动态 SQL,优化只能依赖 GraphQL 服务,但它不会总是有效。...因此,最终您将拥有一个非常快的应用程序层,但它所有的时间都花在了极其低效的数据库查询上。 总之,GraphQL 与 NoSQL 数据库配合使用效果非常好,它可以快速为这些类型的请求提供服务。
最近,有个朋友问我:“为什么我的 Rails 项目用 SQLite,总觉得慢得像蜗牛?”这让我想起很多开发者在遇到类似问题时的感受,尤其是初次接触 SQLite 的时候。...SQLite 作为轻量级的数据库,在 Rails 项目中非常常见,特别是开发阶段。但问题来了,SQLite 真有我们想象中那么简单吗?它的性能优化又需要注意什么呢?...它没有像 MySQL 或 PostgreSQL 那样的复杂数据库引擎,甚至整个数据库就一个文件!初学者可能觉得这样很方便,尤其是在开发阶段。但正是因为它的简洁性,SQLite 其实有一些性能瓶颈。...使用正确的索引:别让查询成了性能杀手SQL 查询慢,这大概是所有数据库开发者的噩梦。如果你发现你的 Rails 应用在执行查询时总是慢半拍,很可能是因为你没有使用合适的索引。...SQLite 虽然是轻量级数据库,但它同样支持索引,正确的索引可以大幅提升查询性能。还记得的我之前的文章里面的内容吗?
SQL 无处不在,我不是因为我想让你使用它而这么说。这只是一个事实。我敢打赌,现在你的口袋里有一些 SQL。...我将 SQL 读作“Sequal”,但如果你愿意也可以读作“S-Q-L”。SQL 也代表结构化查询语言,但现在还没有人甚至关心,因为那只是一个营销手段。...SQL 所做的事情,只是为你提供了一种语言,用于与数据库中的数据交互。然而,它的优势在于,它匹配了许多年前建立的理论,定义了良好结构化数据的属性。这不完全相同(一些诋毁者感叹它),但它足够有用。...有了它,你将能够学习 SQL,而不会卡在数据库服务器的管理。 安装 SQLite3 很简单: 请访问 SQLite3 下载页面,并为你的平台获取二进制文件。...你应该确保你的 SQLite3 版本与我在这里的版本相同:3.7.8。有时,旧版本的东西不能正常工作。 学习 SQL 词汇 要开始学习SQL,你需要为这些 SQL 术语创建速记卡(或使用 Anki)。
它应该是针对我们数据库的一个有效 SQL 字符串。让我们看看它是如何工作的。首先,我们将为模型提供一条系统消息,描述它应该做什么。我们称之为 SQL GPT,可以将自然语言查询转换为 SQL。...这是一个相当正常的业务问题,当然不是我可以立即编写 SQL 就能解决的问题,但 GPT 可以。让我们运行一下。我们可以看到它正在调用 SQL 查询函数。...SQL 示例就是一个很好的例子。如果有人读到这篇文章,他们对金融数据库进行 SQL 查询,并将其输入到 gpt-3.5-turbo,我们基本上就泄露了数据。...模型上下文的预加载 参会者 4:在你给出的 SQL 示例中,你为其提供了一些可以访问的表。我们有没有办法可以让任何人的后续调用预加载所有上下文呢? Wu:有几个潜在的解决方案。...矢量数据库的兼容性 参会者 9:这可以与矢量数据库一起使用吗?我的想法是,我想根据我输入到向量数据库中的信息来约束信息,但它仍然能适用于函数逻辑? Eleti:是的,和以前一样好用。
你的老板让你构建一个Web界面,使得远程办公室可以使用数据库,但是你却发现什么数据库也找不到,只有一个巨大的,没有灵魂的空洞,而那里应该有Web支持的。...你想从它当中寻找你所期望的传统数据库的一些行为吗?别做梦了!想要安全模型吗?不,这里的每个用户都可以访问所有内容。想要数据完整性吗?还是醒醒吧,因为根本没有记录数据库操作的日志文件。...事实上,Access仍然像只僵尸一样踯躅而行,它的使用率既没有增长也没有下降。微软公司已经不止一次试图终止它的生命,然而它的用户社区却一次又一次成功地让它起死回生。...我的搭档需要跟踪一个有多个地点的小型音乐学校的家庭、学生、班级和出勤率。不存在多人同时编辑数据库的危险,也不需要将其他平台上查询数据。...只要有人想要这样的一个工具,仅仅以少许的复杂性,就能给普通人带来那么多的力量,那么,Access尽管蹒跚难行,不受待见,并且几乎被它的创造者抛弃,但它仍然有其存在的价值。
下面列举的理由中不仅限于 MySQL,有一些是针对关系型数据库的。如果我们没有理清楚关系型数据库和 MySQL,我们将会永远陷入90年代的思想上。我们需要推倒然后重建这些。...或者我们转向使用一个最近流行的,存在时间没有长到可以列出一堆像下面一样的 理由的数据库。 根深蒂固的bugs 任何大的软件包都有 bug。...但它却需要使用join语句进行查询。 sql通过一系列join构建的复杂查询将开发者推入了困惑与绝望的深渊。而且存储引擎也需要以最优的方式来高效地解析join语句。...开发者需要绞尽脑汁编写查询语句,然后数据库对其进行解析。 这就是很多注重运行速度的开发者放弃数据分表转而使用不规范数据表的原因。不区分数据实体,将所有数据保存到一个大表中——以避免复杂的查询。...当 然,有些时候在不同的存储引擎之间切换而不必重写你的SQL是很好的,但是切换后总会带来混乱。这个表格我选择的引擎是 MyISAM 还是 innoDB 呢?或者,我决定输出的数据是CSV格式的吗?
此时,亚马逊的服务正处于突破当时传统SQL数据库规模的边缘,他们决定需要一个长期可持续的解决方案来继续以他们的速度增长。 关系型数据库是复杂的系统。...当我读到这个似乎是有史以来最神奇的数据库的成功、性能和几乎像童话一样的故事时,我想知道为什么其他数据库仍在使用?亚马逊的工程师们最终用什么来换取这些在性能、规模和可用性方面的巨大收益?...分区键必须是唯一的,为了确保在各节点间的平等分配,它应该能够有一大组分布大致相同的值。 例如,假设我必须存储这些数据。...但它牺牲了其数据模型和查询能力的灵活性,并且缺乏ACID支持。它还提出了一个分布式系统,作为一个单节点系统运行将是无用的。...事实上,Dynamo论文中描述的数据库系统也是如此。Dynamo没有像传统的关系型数据库系统那样回落到保证隔离,而是拥抱了多版本的可能性。 发生这种情况是因为更新需要异步传播系统。
感谢 OpiesDad,所以我应该创建一张桌子来容纳我需要的东西吗?我看不出答案那么复杂。你也是对的,我不认为我想加入使用两个字段。你能建议一些方向吗?...这似乎是最好的路线,因为表“ListItems”没有 CustomerID 作为外键。 (ListItems 有输出所需的订单详情) 见下面的答案。...将其粘贴到空白的 Access 查询中并进行修改,直到它起作用,然后将更改传输回字符串构造并重新测试. 【解决方案1】: 我喜欢使用带有空格分隔符的数组和 Join 方法。...在 Access 中创建一个查询并查看它生成的 SQL。它可能不是最漂亮的 SQL,但它可以帮助您确定问题所在。...【讨论】: 您不需要在 Access 中执行此操作,并且此代码仍然无法工作,因为它没有解决我没有时间制定的许多其他问题完整的答案。 【解决方案3】: 您遇到的问题是您尝试执行的连接没有意义。
Django SQL Dashboard 可以将 SQL 查询的完整结果导出为 CSV 或 TSV,这次使用的是 Django 的 StreamingHttpResponse(它确实会占用一个完整的 worker...我把它们用在了 Django SQL仪表板 中。 不过,服务端游标让我感到有些紧张,因为它们似乎很可能会占用数据库本身的资源。所以我在这里考虑的另一种技术是键集分页。...使用键集分页,我们可以遍历一个任意大的数据表,一次流式传输一页,而不会耗尽任何资源。 而且由于每个查询都是小而快的,我们也不必担心庞大的查询会占用数据库资源。 会出什么问题? 我真的很喜欢这些模式。...它们还没有在我面前暴露出来什么问题,尽管我还没有将它们部署到什么真正大规模的环境里。所以我在 Twitter问了问 大家,想知道应该留心什么样的问题。...最简单的解决方案:从云存储生成和返回 实现这种 API 的最健壮的方法似乎是技术上最让人觉得无聊的:分离一个后台任务,让它生成大型响应并将其推送到云存储(S3 或 GCS),然后将用户重定向到一个签名
您的数据库设计很糟糕。 没有人告诉你这个原因的原因有两个:无知或冷漠。他们要么不知道它是坏的,要么他们不在乎。 嗯我关心糟糕的设计,因为我通常承担必须快速运行查询并克服糟糕设计的限制的负担。...1.自己动手 像牙科一样,数据库设计最好留给专业人士,而不是你应该为自己做的事情。我不在乎你是否能够在最后用一个花哨的镜子拿到其中一个探头,你应该停止在嘴里塞一些锋利的东西。...将这些行乘以4个字节,您就有800万字节或大约7.8MB的浪费空间。我知道听起来不是很多,是吗?好吧,它加起来很快。我只向您展示了一个列的一个示例,但您的日期列如何?...这通常是某人使用索引调整顾问工具的结果,但通常情况下,由于有人在阅读博客文章时说“索引是您需要的”,他们会努力创建十几个索引让一个查询运行得更快。...虽然索引非常适合帮助您更快地读取数据,但它会增加每个DUI语句(删除,更新,插入)的开销。向表中的每个列添加索引可能是任何有数据进入该表的进程的噩梦。
即使这样,OpenAPI 也没有指定 API 的形状或格式,它只是一个机器可读的规范,允许(但不是要求)你对 API 运行自动化测试、自动生成文档等。 主要问题仍然存在。...你可能会说你的 API 是 RESTful 的,但是对于如何安排端点或是否应该(例如)使用 HTTP 方法PATCH进行对象更新,一般没有严格的规则。...如果有的话,最好使用代码生成,但是它似乎不够灵活。即使是使用像 Moya 这样的辅助库,也会遇到同样障碍:有许多自定义行为需要处理,这是由前面提到的边缘情况引起的。...如果你的 GraphQL 服务器足够聪明,它将不会对你不需要的字段运行数据库查询,而且有些库好到免费提供这种查询。...你可以将所有常见的 CRUD 操作暴露为所有表的查询和修改。它可能看起来像 ORM,但它不是:你可以完全控制如何设计数据库模式,以及使用什么索引。
由于它包含在难以量化的人为因素中,因此运营复杂性不如技术复杂性那样受到重视和理解。不过,我认为它同样重要。 在云中,我们已经弄清楚了如何构建可以根据需要增长的数据库。...权衡与解决方案 在软件工程中,就像在生活中一样,没有免费的午餐。减少自动化和抽象(即技术复杂性),您会获得更多的运维复杂性。简化操作,您需要更复杂的技术来补偿。...NoSQL 数据库 MongoDB 的部分灵感来自于对基于模式的 DDL 操作的沮丧。但是,像 MongoDB 和其他 NoSQL 解决方案一样,剥离模式会产生可扩展性问题。...除其他问题外,这使得在大型组织中运行分析更具挑战性。正如我在其他地方写的那样,这就是为什么 NoSQL 实现往往会大规模失败的原因。...目前最新的尝试是像 CockroachDB 和 TiDB 这样的分布式 SQL 解决方案,它们基于 Google 的 Spanner 项目背后的技术。
最糟糕的是,除了验证你没有错误的查询 SQL 查询之外,它甚至不测试任何其他内容。...即使在那些情况下,”非单元的单元测试(例如,仅访问数据库的那个)仍然是可行的选择。集成测试也是一种选择。很多应用程序无论如何都没有那种复杂的查询。...旧代码非常直接且易于理解,虽然我没有声称它一定没有 Bug,但它确实在很长一段时间内都运行良好。 它应该已经在适当的地方写了一些测试,但它没有(我没有写原始版本)。...我认为这同样适用于代码。 需要澄清的是,我并不是反对单元测试或 TDD,并且声称我们所有人都应该按照生活中的方式编写代码。我编写单元测试并在有意义的时候实践 TDD。...这并不罕见; 而且我很确定至少有几个人甚至从不打算提交 PR 只是因为他们被困在测试中。我知道我有。 有一个开源项目是我贡献的,我也想为之贡献更多,但是我没有,因为编写和运行测试太难了。
Q:我以为学习数据科学是做表格查询而不是网页抓取的工作,所以我刚学完一本 SQL 的书,SQL 不是访问数据的典型方式吗? A:好吧,我们可以使用非结构化文本数据做很多很酷的事情。...A:NoSQL 代表不仅是 SQL,它支持关系表之外的数据结构,不过 NoSQL 数据库通常不使用 SQL,有专门的查询语言,简单对比一下 MongoDB 和 SQL 查询语言: ?...Q:这太可怕了,你意思是每个 NoSQL 平台都有自己的查询语言?SQL 有什么问题? A:SQL 没有任何问题,它很有价值。不过这几年非结构化数据是热潮,用它来做分析更容易。...需强调的是,尽管 SQL 难学,但它是一种非常通用的语言。 Q:好的,我可以这样理解么: NoSQL 对数据科学家来说不像 SQL 那么重要,除非工作中需要它?...A:因为很长一段时间里,这些优化算法问题已经有了令人满意的解决方案,但自那时起就一直没有成为头条新闻。几十年前就出现了这些算法的 AI 炒作周期。
“你仍在使用SQL-92吗?”是我在“新SQL”演讲中的开篇问题。在我提出这个问题后,竟然有大部分观众坦承仍在使用25年前的技术。...但它至少表明,围绕较新的SQL标准的技术推广相当缺乏。自SQL-92以来,实际上有五次更新 - 许多开发人员却从未听说过它们。最新版本是SQL:2016。...如今SQL标准为几乎所有的数据处理问题提供了一个实用的解决方案。其中一些留在关系域内,而另一些则没有。 注意 在说SQL数据库时不要说关系数据库。SQL实际上不仅仅是关系。...简而言之:一旦激活表格,系统版本控制就会保留更新和删除行的旧版本。默认情况下,查询将像往常一样返回当前版本,但可以使用特殊的语法(as of)来获取旧版本。...最常见的用法有例如每组找到最好的N行,构建运行总数或移动平均值,以及对连续事件进行分组,只是冰山一角。窗函数是避免自连接的最重要的工具之一。仅此就可以使查询不那么冗余,速度也更快。
有人问我,“你在大数据和Hadoop方面有多少经验?”我告诉他们,我一直在使用Hadoop,但是我处理的数据集很少有大于几个TB的。 他们又问我,“你能使用Hadoop做简单的分组和统计吗?”...Hadoop实际上是有很多局限的。Hadoop允许你运行一个通用的计算,下面我用伪码进行说明: 目标:计算图书馆书籍的数量 Map:你统计奇数书架上书的数量,我统计偶数书架上书的数量。...SQL是一个很直接的查询语言,适合做业务分析,SQL的查询相当简单,而且还非常快——如果你的数据库使用了正确的索引,二级查询或多级查询另当别论。...如果你的数据并不是像SQL表那样的结构化数据(比如纯文本、JSON对象、二进制对象),通常是直接写一个小的Python脚本来按行处理你的数据。把数据存储于文件,处理每一个文件,等等。...如果你没有这样大数据量的表,那么你应该像躲避瘟疫那样避免使用Hadoop。这样使用传统的方法来解决问题会更轻松。
支持JPA的框架,例如Ebean都属于这种类型的框架。 但封装SQL,使用另一种纯的面向对象查询语言代替sql,真的能够让程序员更容易实现持久层操作吗?...MyBatis则是另外一种类型的持久化框架,它没有封装SQL也没有创建一种新的面相对象的查询语言,而是直接使用SQL作为查询语言,只是把结果填入POJO对象而已。...这方面MyBatis比较差,只有一个动态SQL提供的特性,对于不同的数据库编写不同的sql语句。 JOOQ虽然无法像Hibernate和JPA那样无缝移植,但比MyBatis好很多。...相对于JOOQ,MyBatis在多数情况下没有任何优势。 Ebean同时具有很多不同框架的优点,但它是基于JPA的,难免有JPA的各种限制,这是致命的缺点。...喜欢本文的朋友,欢迎点击下方卡片 关注我,订阅更多精彩内容 往期推荐 我们是移动的韭菜么?似乎程序员去哪里上班,哪里房价就贵起来了? 打工与创业残忍的区别 退休是不可能的,90岁还要继续干!
AWS——几乎任何你想要的东西,你可以永远不需要考虑自己管理服务器。 你需要学习 SQL ? Firebase、AWS 等托管数据库将继续增长,但你还是需要学习 SQL。...2019 年,像 PostgreSQL 这样的数据库将继续发展,而像 MongoDB 这样的 NoSQL 数据库似乎会有所下降。...你可能需要了解每种方案的优点和缺点,因为在数据库领域并没有可以解决所有问题的完美解决方案。 不要把搜索给忘了 搜索可能不是绝对必要的,但它是 Web 的重要组成部分。...Jest 视为一体化的测试框架,就不需要像第二个选项那样添加其他工具和库。...计算机科学基本原理不怎么会发生变化,并且已经存在了很长时间,不会像开发库那样,一旦有新东西出来就变得过时了。
领取专属 10元无门槛券
手把手带您无忧上云