224 Matching Annotations
  1. Dec 2024
    1. 由于 w + r > n 时,总会至少有一个节点(读写子集至少有一个节点的交集)

      因为读写的节点比总结点多,读的节点中一定会存在上一次写的节点,但是上一次写的节点能保证写入时这些节点相对那些不写的节点更新吗

    2. 两个有因果依赖的(先插入,后更新)的语句,在复制到 Leader 2 时,由于速度不同,导致其接收到的数据违反了因果一致性。

      由于支持多点写入,那么多个操作之间如果有依赖关系,但是后面的操作写入时写入的还未同步的节点,那么就会出问题

    3. 多主模型应用场景

      实际上应该会在业务上进行妥协,对不同数据中心的用户或者数据进行隔离。或者直接使用一个数据中心也不是不可以,比如国内访问油管发送评论,那应该是在同一个数据中心进行的操作。如果是离线业务,那么就更不需要多主写入了

    4. 写后读保证的是写后读顺序,单调读保证的是多次读之间的顺序。

      由于不同副本的同步进度不同,因此多次读取如果是不同节点,则可能出现不同的结果

    5. 客户端记下本客户端上次改动时的时间戳,在读从副本时,利用此时间戳来看某个从副本是否已经同步了改时间戳之前内容

      记录客户端的上一次修改,从而保证从已经同步该修改的节点上获取数据

    6. Avro

      Avro相对Protobuf和Thrift来讲没有使用字段标号(原本是为了标识数据属于哪个字段),也没有显示指定类型,其会显式写入write schema版本,同时解析时使用read schema读取获取数据类型等信息

  2. Nov 2024
    1. 不可能同时对多列进行排序。因为我们需要维护多列间的下标间的对应关系,才可能按行取数据。

      这是很疑惑的地方,每一列分开存储,应该可以分开排序才对,同时存储对应的行索引即可,而主键列也同样如此。这样每个列都进行顺序存储,并且行索引顺序且与列值位置映射,是否能实现这样的功能呢?只是说会额外浪费一定的空间,同时对于多列的排序无法实现

    2. 图模型和网络模型

      网状模型相对图模型有着更严格的约束,而图模型则更宽松可扩展,不过看起来图的查询效率依然很低

    3. 数据类型和结构由外部决定,你没办法控制数据的变化。

      既然无法确定数据类型,那么能对数据做的操作其实也有限,只能在应用能够通过配置操作、计算指定列数据时能够很好的利用。否则只能存储。