NoSql 使用小结
足够的冗余
如果出现要拿某个 id 去查另外的 collection 的情况,说明应该往这个增加所要查询的字段
实在要做关联查询的话,是不是应该考虑关系型的数据库,关系和非关系混合使用并不是错呃
使用足够的冗余,如果导致更新不一致的话,最好重新思考数据结构,或者这部分就用关系型的数据库
多态去描述数据
同一类别的数据最好构造继承关系,让顶级抽象类作为 collection,具体子类作为 item
要考虑因为继承关系导致序列化与反序列化失败的问题,必要的时候可以自己做个 custom converter
写 converter 的时候,如果担心反射效率慢,可以使用 CompiledExpression,Mongodb 的序列化就用这种来实现
迁移机制
在开发的过程中,可能因为频繁地修改数据结构,导致开发的时候会抛出异常,那么这个时候应该考虑给自己的数据建立一套数据迁移的机制
可以参考 entityframework or activerecord 的机制,给自己的数据操作建立一个 仓储模式或者 context ,同时设置钩子机制
偏见
如果 nosql 用不好,还不如就用关系型数据库,这样至少不会给同事添麻烦,而且关系型数据库的理论超级多的,可以好好深入学习,
一部分开发者可能连给自己的模块选择适合的数据结构都有困难,所以 nosql 的设计要慎之又慎

NoSql 使用小结的更多相关文章

  1. NoSQL之Redis学习小结

    大数据时代要求: 三V:Volume海量.Velocity实时.Variety多样: 三高:高并发.高可扩.高性能 高并发操作不建议使用关联查询,而使用冗余数据,分布式系统支持不了太多的并发. 横向 ...

  2. NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装

    一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...

  3. [你必须知道的NOSQL系列]专题二:Redis快速入门

    一.前言 在前一篇博文介绍了MongoDB基本操作,本来打算这篇博文继续介绍MongoDB的相关内容的,例如索引,主从备份等内容的,但是发现这些内容都可以通过官方文档都可以看到,并且都非常详细,所以这 ...

  4. 【转】NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装

    一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...

  5. log4net.NoSql +ElasticSearch 实现日志记录

    前言: 前两天在查找如何扩展log4net的日志格式时找到一个开源项目Log4net.NoSql,它通过扩展Appender实现了把日志输出到ElasticSearch里面.顺藤摸瓜,发现涉及的项目还 ...

  6. Hadoop、Pig、Hive、Storm、NOSQL 学习资源收集

    (一)hadoop 相关安装部署 1.hadoop在windows cygwin下的部署: http://lib.open-open.com/view/1333428291655 http://blo ...

  7. Graph Databases—The NOSQL Phenomenon阅读笔记

    本章内容着重对了NOSQL和RDBMS(关系型数据库管理系统)的不同,以及其各自背后设计时考虑的因素.然后接下来,着重讲述了NOSQL的4种分类方法.下面我们将对重要知识点进行汇总. 1.We def ...

  8. Paxos算法小结

    转自不正直的绅士,因百度空间迁移,无法注明出处,我从其google搜索引擎中的cache进行的copy. 不正直的绅士 是跟我一起工作过的非常有才的一个青年才俊. Paxos的使用非常广泛.sanlo ...

  9. 为什么企业依赖于 NoSQL

    如果你关注大数据科技动向,你对 NoSQL 一定不陌生,NoSQL 是一个分布式数据库.在过去时间,数据存储一直关系型数据库天下,有着良好的控制并发操作.事务功能.虽然RDBMS很优秀,但是随着时间的 ...

随机推荐

  1. 003 centos7中关闭防火墙

    在centos7中,防火墙有了新的变化.下面是常用的几个命令. 1.查看状态 systemctl status firewalld 2.关闭防火墙 systemctl stop firewalld.s ...

  2. Javascript中的String.format方法实现

    <script type='text/javascript'> String.format = function() { var s = arguments[0]; for (var i ...

  3. ImageSwitcher 图片切换器

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  4. typeScript中的函数

    // 函数的定义 //es5定义函数的方法 /* //函数声明法 function run(){ return 'run'; } //匿名函数 var run2=function(){ return ...

  5. Python设计模式之MVC模式

    # -*- coding: utf-8 -*- # author:baoshan quotes = ('A man is not complete until he is married. Then ...

  6. ISO/IEC 9899:2011 条款6.5.7——按位移位操作符

    6.5.7 按位移位操作符 语法 1.shift-expression: additive-expression shift-expression    <<    additive-ex ...

  7. ubuntu 防火墙打开关闭

    1.查看防火墙状态 sudo ufw status 2.打开防火墙 sudo ufw enable 3.关闭防火墙 sudo ufw disable

  8. centos 安装最新版git

    对个人而言,gitlab有点浪费资源,占内存太大,一个博客服务器,配置比较低,用gitlab太浪费了.(公司使用gitlab,这个适合公司团队使用) 前提条件,放行git端口,防火墙添加放行规则,将3 ...

  9. ABAP DEMO so批量导入

    *&---------------------------------------------------------------------* *& Report YDEMO_015 ...

  10. web端自动化——Selenium3+python自动化(3.7版本)-chrome67环境搭建

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...