作家
登录

用Python写一个NoSQL数据库

作者: 来源: 2017-05-18 13:03:15 阅读 我要评论

如不雅它 确切存在 , 那么我们须要检查该返回值。并且, 我们也欲望可以或许将 handle_get 的返回值作为零丁的变量进行引用。 为了可以或许处理上述两种情况,同时推敲须要分开处理结不雅的情况,我们应用了多重赋值。 如斯一来, 就不兵法写多行代码, 同时可以或许保持代码清楚。 return_value = http://developer.51cto.com/art/201705/exists, list_value = handle_get(key) 可以或许显式地注解我们将要以至少两种不合的方法引用 handle_get 的返回值。

How Is This a Database?

膳绫擎的法度榜样显然并非一个 RDBMS, 但却绝对称得上是一个 NoSQL 数据库。它如斯易于创建的原因是我们并没有任何与 数据 (data) 的实际交互。 我们只是做了极简的类型检查,存储用户所发送的任何内容。 如不雅须要存储加倍构造化的数据, 我们可能须要针对数据库创建一个 schema 用于存储和检索数据。

既然 NoSQL 数据库更轻易写, 更轻易保护,更轻易实现, 那么我们为什么不是只应用 mongoDB 就好了? 当然是有原因的, 照样那句话,有得必有掉, 我们须要在 NoSQL 数据库所供给的数据灵活性 (data flexibility) 基本上衡量数据库的可搜刮性 (searchability).

Querying Data

糟糕的工作来了, 当我们想要履行先前的萌芽语句时会产生什么? 找到 1994 年所有车的色彩将会变得恶梦一般。 我们必须遍历 DATA 中的 每一个值 来确认这个值是否存储了 car 数据亦或根本是其他不相干的数据, 比如说检查索引 2, 看索引 2 的值是否等于 1994,接着再持续取索引 3 的值. 这比 table scan 还要糟糕,因为它不仅要扫描每一行数据,还须要应用一些复杂的规矩来答复萌芽。

NoSQL 数据库的作者当然也意识到了这些问题,(鉴于萌芽是一个异常有效的 feature) 他们也想出了一些办法来使得萌芽变得不那么 “遥弗成及”。一个办法是构造化所应用的数据,比如 JSON, 许可引用其他行来表示关系。 同时, 大年夜部分 NoSQL 数据库都有名字空间 (namespace) 的概念, 单一类型的数据可以被存储在数据库中该类型所独有的 "section" 中,这使得萌芽引擎可以或许应用所要萌芽数据的 "shape" 信息。

Summary

至此, 欲望 "NoSQL" 这个概念已然十分清楚。 我们进修了一点 SQL, 并且懂得了 RDBMS 是若何工作的。 我们看到了若何年腋荷琐 RDBMS 中检索数据 (应用 SQL 萌芽 (query)). 经由过程搭建了一个玩具级其余 NoSQL 数据库, 懂得了在可萌芽性与简洁性之间面对的一些问题, 还评论辩论了一些数据库作者应对这些问题时所采取的一些办法。

当然了,尽管为了加强可萌芽性已经存在 (并且实现了)了一些加倍复杂的办法, 然则在存储更少量的 schema 与加强可萌芽性之间做出让步始终是一个弗成回避的问题。 本例中我们的数据库仅支撑经由过程 key 进行萌芽。 如不雅我们须要支撑加倍丰富的萌芽, 那么工作就会变得复杂的多了。

即就是简单的 key-value 存储, 关于数据库的常识也是浩瀚无穷。固然我们仅仅是商量了个中的星星点点, 然则仍然欲望你已经懂得了 NoSQL 到底指的是什么, 它是若何工作的, 什么时刻用比较好。

我们创建了 COMMAND_HANDLERS, 它常被称为是一个 查找表 (look-up table) . COMMAND_HANDLERS 的工作是周详令与用于处理该敕令的函数进行接洽关系起来。 比如说, 如不雅我们收到一个 GET 敕令, COMMAND_HANDLERS[command](key) 就等同于说 handle_get(key) . 记住,在 Python 中, 函数可以被认为是一个值,并且可以像其他任何值一样被存储在一个 dict 中。

【编辑推荐】

  1. 一文贯通python文件攫取
  2. 基于Python和JavaScript编写物联网温度计法度榜样
  3. Python中的函数与办法 以及Bound Method和Unbound Method
  4. 用Python多线程实现临盆者花费者模式
  5. Python收集爬虫实现道理与实现技巧
【义务编辑:枯木 TEL:(010)68476606】

  推荐阅读

  交通银行信息技术管理部副总经理张漫丽:交通银行“大数据+人工智能”应用研究

大年夜数据隐含着巨大年夜的社会、经济、科研价值,已引起了各行各业的高度看重。如不雅能经由过程人工智能技巧有效地组织和应用大年夜数据,将对社会经济和科学研究成长产生巨大年夜的推>>>详细阅读


本文标题:用Python写一个NoSQL数据库

地址:http://www.17bianji.com/lsqh/35303.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)