订单
订单提交
业务流程图
设计流程图
订单支付
设计流程图
订单状态
uml状态图
订单相关表
E-R图
单据归档
归档所用技术
- mysql的分区功能(partition)
- 参考链接:https://dev.mysql.com/doc/refman/5.1/zh/partitioning.html
归档注意事项
- 归档方式目前只支持 range 和 hash 两种
- 归档的定义文件app/app_id/partition.xml
<partitions> <partition table="archive_return_product"> <!-- 分区的表名 --> <method>range</method> <!-- 对应mysql分区的方法,目前系统只实现range和hash两种方式的简单应用 --> <expr>add_time</expr> <!-- 分区表中的分区字段 --> </partition> <partition table="archive_order_items"> <!-- 分区的表名 --> <method>hash</method> <!-- 对应mysql分区的方法,目前系统只实现range和hash两种方式的简单应用 --> <expr>order_id</expr> <!-- 分区表中的分区字段 --> <nums>4</nums> <!-- hash分区的数目(只有hash分区拥有) --> </partition> </partitions>
- 归档表原样复制被归档表的dbschema文件,去除了后台搜索的一些配置
- 归档表的命名一般是依照原表在前面增加`archive_`,如b2c/dbschema/orders.php对应的归档表文件为b2c/dbschema/archive_orders.php
- 归档的dbschema描述文件中原来的定义主键的pkey字段需要改为virtual_pkey,定义后此字段不会更新数据库的对应字段为主键(原因时分区的字段如果是主键则必须要包含这个字段,具体参考mysql分区文档)
- 针对range分区是根据季度进行分区,通过crontab定期维护新建的分区,每个季度会创建下个季度分区。hash分区不做维护,hash分区只能通过修改partition.xml文件内对应的nums修改
- **b2c依赖于archive,并且归档会删除原来的单据表的对应条目,所以一旦安装归档表则不要删除,否则导致数据丢失
- 如果安装有带有归档的ecstore版本,升级时请注意:如果原有的订单表增加了字段,则需要在归档对应表也要增加此字段,否则会导致归档后此字段的信息丢失