数据-序列化和反序列化-Thrift与持久化

数据持久化

 数据持久化形式   数据持久化 是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称.
    据持久化对象的基本操作有:保存、更新、删除、加载、查询等
    01.数据库
	   ‌DBM(Database Manager)
    02.文件系统和序列化
      普通文件无格式写入
      普通序列化写入 
    03.存储和检索数据

 二进制持久化
     --序列化和反序列化
     --索引	 
      索引(index)和消息存储(message store)
数据被持久化到耐久性存储,例如本地磁盘文件系统或对象存储服务 存储介质上的数据形态可能是文本、数据库、二进制文件等。  
    文件存储(File Storage)是一种将数据以文件的形式存储在存储介质上的方法
    对象存储(Object Storage)是一种将数据作为对象进行存储的方法	
    块存储

持久化方式:
     数据库   持久化    关系型数据库  非关系型数据库
     文件系统 持久化     文本文件  二进制文件
     缓存     持久化数据  Redis、Memcached。
	 数据流   持久化数据  Apache Kafka、Apache Flink
	 消息队列 持久化数据  RabbitMQ、Apache Kafka

parquet

Parquet文件格式选用 thrift完成文件元数据的序列化和反序列化。
 在parquet-format项目的thrift目录下,文件parquet.thrift详细定义了parquet文件的元数据类型	
  https://github.com/apache/parquet-format/blob/master/src/main/thrift/parquet.thrift
这个系统为了解决什么问题?为此提供了什么功能?

Python标准库提供了一个dbm模块。它允许用户使用键值对存储和检索数据,工作原理类似于字典,但不同之处在于它将数据存储在磁盘上,而不是在内存中
  dbm模块相当于一个微型数据库
  
存储资源

序列化与反序列化

  是 数据持久化和网络传输中经常使用的技术
       JDK Serializable是Java自带的序列化框架 Java内置序列化框架
       Kryo     一个快速有效的Java二进制序列化框架
	   Hessian 是caucho公司开发的轻量级RPC(Remote Procedure Call)框架 不是采用IDL来定义数据和服务,而是通过自描述来完成服务的定义
	   Avro     通过Schema定义数据结构
	   Protocol buffer是一种语言中立、平台无关、可扩展的序列化框架,需要预先定义Schema的
### 
 Protobuf(Protocol Buffers)和Thrift都是高性能、跨语言的序列化框架	
     Protobuf 是 Google 开发的
	 Thrift   是 Facebook 开发,并于2008年加入Apache的跨语言服务开发框架	   

thrift格式

  xml,json,protobuf,thrift

Thrift 通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码
   Thrift实际上是实现了C/S模式,通过代码生成工具将接口定义文件生成服务器端和客户端代码,从而实现服务端和客户端跨语言的支持
    protocol协议层和 transport传输层,
      protocol(协议层, 定义数据传输格式,可以为二进制或者XML等)和transport(传输层,定义数据传输方式,可以为TCP/IP传输,内存共享或者文件共享等)被用作运行时库。
	  
需要定义一个xxx.thrift的文件, 来生成各种语言的代码,生成之后我们的服务提供者和消费者,都需要把代码引入,
  服务端把代码实现,消费者直接使用API的存根,直接调 		  
	   
过程:   
       创建thrift IDL文件、   第一步:通过IDL定义数据结构和服务 
	   编译生成Java代码、     第二步:利用代码生成工具生成代码  
	   使用TSerializer和TDeserializer进行序列化和反序列化。  第三步:编写你的业务逻辑   
    protobuf 在生成类中已经内置了序列化与反序列化方法, 而 Thrift 需要单独调用内置序列化器来进行编解码。

thrift

thrift 编译器下载
python版本:Python 3.7.1
     pip3 install thrift

编写Thrift IDL文件
生成的 python 代码 和 文件		 
 
 
 典型 RPC 的使用场景中,包含了服务发现、负载、容错、网络传输、序列化等组件
 
 保留历史版本的方法  
   “Copy on Write”(写入时复制)
  持久化框架(英语:persistence framework)

参考

 https://downloads.apache.org/	
 https://downloads.apache.org/thrift/
 thrift在ubuntu上的安装步骤  https://www.yisu.com/ask/14538610.html
 数据持久化  https://docs.python.org/zh-cn/3.9/library/persistence.html 
posted @ 2025-01-13 18:02  辰令  阅读(80)  评论(0)    收藏  举报