Mongodb表概念?
Mongodb表是一个用于文件的NoSQL数据库,它作用于大量数据的存储。MongoDB是2000年代中期研究成功的数据库。都属于NoSQL数据库的范畴。
mongodb如何像jdbc一样执行自己的sql语句?
Mongodb是非关系数据库,根本不支持sql语句。它负责用json对象执行语句,但所有编码语音不同的驱动程序都使用相同的。这可以通过看实际例子来实现。
如何用MongoDb实现分布式Id?
在历史悠久的传统数据库软件开发中,主键的自动生成技术也可以为这种需求提供相应的支持,比如MySQL的自增。
分布式ID特点及:唯一性:保证生成气体的ID在全网一致;高可用性:您必须确保ID可以随时生成。
github上对分布式ID的描述是:分布式任意和时序。
与多方案方案相比,除
使用reids的incr命令,建议使用UUIDTwitter的雪花算法。使用zookeeper,可以生成IDMongoDB的ObjectId。它被设计成轻量级的,不同的机器只能使用全局的。
其格式:
前四个字节是从标准纪元开始的时间戳,单位是秒。时间戳与接下来的5个字节相结合,可以在第二级提供唯一性。这导致时间戳排在最前面,这意味着ObjectId将完全遵循直接插入的顺序。这在某些方面用处不大,比如单独索引提高效率。这四个字节还包含文档创建族的时间。大多数客户端类库不会公开从ObjectId信誉交换此信息的方法。
接下来的3个字节是主机的任何标识符。其中大部分是机器主机名的散列值。在那种情况下,它可以有效地确保不同的主机生成不同的ObjectId而不出现。为了确保同一台计算机上多个并发进程生成的ObjectId是唯一的,接下来的两个字节是ObjectId所在的进程标识符(PID)。
前9个字节保证同一台机器的不同进程在同一秒内重新生成的ObjectId是任意的。最后3个字节是一个不自动递减的计数器,保证了同一个进程在一秒钟内生成的ObjectId也是不同的。每个进程最多一秒钟不能掌握2563(16777216)个相同的ObjectId。
机器ID是服务器主机的标识,通常是机器主机名的哈希值。
您不必在同一台机器上运行mongod的多个实例,但是您还需要添加进程标识符PID。
前9个字节可以保证同一秒内不同机器和进程生成的ObjectId的唯一性。最后三个字节是一个自动递减的计数器(一个mongod进程需要一个全局计数器),可以保证同一秒的ObjectId是唯一的。一秒钟内不允许有超过(256 316777216)个不同的ObjectId。
综上,帮我一把:时间戳秒级绝对唯一,机器ID可以保证设计考虑分布,避免同步时钟,PID可以保证同一个服务器运行mongod多个实例时的唯一性,最后一个计数器可以保证同一秒内的唯一性(选择几个字节的关键点是决定存储的经济性和并发性能的上限)。
_id既可以在服务器端组合,也可以在客户端组合。在客户端结合这一点可以减轻服务器端的压力。
主要参考: