Database DB vs.文件系统-用于非映像文件和endianess

Database DB vs.文件系统-用于非映像文件和endianess,database,filesystems,document,endianness,Database,Filesystems,Document,Endianness,我读过很多关于数据库和文件系统存储文件的讨论。这些讨论大多涉及图像和媒体文件。我的问题是: 1) 相同的参数是否适用于存储.doc、.pdf、.xls、.txt?我应该知道文档文件有什么特别之处吗 2) 如果我以二进制形式存储在数据库中,如果我的主机交换机器,是否会出现endian问题?e、 例如,我在一台大端机上插入数据库,将其移植到一台小端机上,然后我尝试提取(例如,写入文件,将其发送到我的桌面,然后尝试打开) 谢谢你的指导 1)是的,几乎相同的参数适用于存储PDF等等。。。任何被压缩的东西

我读过很多关于数据库和文件系统存储文件的讨论。这些讨论大多涉及图像和媒体文件。我的问题是:

1) 相同的参数是否适用于存储.doc、.pdf、.xls、.txt?我应该知道文档文件有什么特别之处吗

2) 如果我以二进制形式存储在数据库中,如果我的主机交换机器,是否会出现endian问题?e、 例如,我在一台大端机上插入数据库,将其移植到一台小端机上,然后我尝试提取(例如,写入文件,将其发送到我的桌面,然后尝试打开)

谢谢你的指导

1)是的,几乎相同的参数适用于存储PDF等等。。。任何被压缩的东西都会浮现在脑海中

如果每个非文本文件格式想要在不同的端性主机之间进行移植,那么它必须处理端性问题。它们主要是通过定义文件中所有长度超过一个字节的二进制字段的尾数来实现的。在相反端性的平台上运行时,写入和读取格式的软件必须特别注意字节交换。图像与其他二进制文件格式没有什么不同。这种选择是任意的,但big-endian(网络字节顺序)是一种流行的选择,尤其是在网络软件中,因为C语言中无处不在的宏几乎自动处理这个问题

另一种定义二进制文件格式的方法是支持二进制字段的任意一种尾数,并在标题中包含一个标记,说明使用了哪种尾数。打开文件时,读者查阅标记。这样,在写入文件的同一主机或具有相同端号(这是常见情况)的其他主机上,可以稍微更高效地读回文件,而具有相反端号的主机则需要花费更多的精力

至于数据库,假设您使用的是blob之类的字段类型,那么当您读写任何内容时,都会返回相同的bytestream,因此您不必担心数据库客户端或服务器的端性

2) 这取决于数据库。通过如上所述定义其磁盘上格式,数据库可以使用与任何endianness兼容的底层磁盘上格式

不过,考虑到(正确地)很少将底层数据文件移动到具有不同endianness的数据库主机上,数据库通常不会以底层文件格式的可移植性为目标。例如,根据MySQL,MyISAM不是endian可移植的

不过我觉得你不必太担心这个。如果数据库服务器切换到不同端的主机,确保数据保持可读性是该过程的一个重要步骤,处理任务的DBA(可能是您自己?)不会忘记这样做,因为如果他们忘记了,那么什么都不会起作用(也就是说,破坏不会局限于二进制blob!)