探讨DMBS???

Zfly 2003-07-28 10:53:14
近来,正研究SCADA,其中涉及RTD,HDB.
有做过DMBS设置的吗?来谈谈经验?
小的DBMS一般要用到:定义文件(ddl),索引文件(idx),数据文件(dat)和配置文件
(cfg)。索引文件一般采取B+树的方式。

能交流目前国内的组态软件中使用数据库的方式以及构建思路??
...全文
115 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zfly 2003-07-28
  • 打赏
  • 举报
回复
// 一段检测数据库分配内存字节对齐方式的良好伪代码( *** 修改***)

#define TF_BT_CHARACTER 'c' /* char */
#define TF_BT_SHORT 's' /* short */
#define TF_BT_INT 'i' /* int */
#define TF_BT_FLOAT 'f' /* float */
#define TF_BT_DOUBLE 'F' /* double */
#define TF_BT_CKEY 'C' /* compound key */
#define TF_BT_STRUCT 'S' /* structured field */
#define TF_BT_CSTRUCT 'Z'
#define Private

#define gchar char
#define gint16 _int16
#define gint32 _int32
#define gfloat float
#define gdouble double

struct {
unsigned char type; /* field type */
int val; /* alignment value */
} align[] =
{
{TF_BT_CHARACTER,0},
{TF_BT_SHORT,0},
{TF_BT_INT,0},
{TF_BT_FLOAT,0},
{TF_BT_DOUBLE,0},
{TF_BT_STRUCT,0}, /* aligned structure */
{TF_BT_CSTRUCT,0} /* non-aligned character structure */
};
Private gint32 str_pad; /* non-arrayed non-aligned struct padding bdry */
Private gint32 str_array_pad; /* arrayed non-aligned struct padding bdry */
Private gint32 str_ipad; /* non-arrayed struct padding boundary */
Private gint32 str_array_ipad; /* arrayed struct padding boundary */

Private struct { gchar c1; gchar c2;} cs;
Private struct { gchar s1; gint16 s2;} ss;
Private struct { gchar i1; gint32 i2;} is;
Private struct { gchar f1; gfloat f2;} fs;
Private struct { gchar d1; gdouble d2;} ds;
Private struct {
gchar st1;
struct { gchar st2; } st3;
struct struct_array { gchar st4; } st5[2];
} sts;
Private struct {
gchar sti1;
struct { gint32 st2; } st3;
struct istruct_array { gint32 st4; } st5[2];
} stis;

#include <stdio.h>

void main(void)
{
int i;
printf("sizeof(align)/sizeof(*align) %d \n", sizeof(align)/sizeof(*align));
printf("sizeof(align) %d \n", sizeof(align));
printf("sizeof(*align) %d\n \n", sizeof(*align));

align[0].val = (gint32)((gint32)&cs.c2 - (gint32)&cs);
align[1].val = (gint32)((gint32)&ss.s2 - (gint32)&ss);
align[2].val = (gint32)((gint32)&is.i2 - (gint32)&is);
align[3].val = (gint32)((gint32)&fs.f2 - (gint32)&fs);
align[4].val = (gint32)((gint32)&ds.d2 - (gint32)&ds);
align[5].val = (gint32)((gint32)&stis.st3 - (gint32)&stis);

str_ipad = sizeof(stis.st3);
str_array_ipad = sizeof(struct istruct_array);
align[6].val = (gint32)((gint32)&sts.st3 - (gint32)&sts);
str_pad = sizeof(sts.st3);
str_array_pad = sizeof(struct struct_array);

for ( i = 0; i < sizeof(align)/sizeof(*align); i++)
printf("align[%d].val= %d \n", i,align[i].val);

printf("str_ipad = %d \n", str_ipad);
printf("str_array_ipad = %d \n", str_array_ipad);
printf("str_pad = %d \n", str_pad);
printf("str_array_pad = %d \n", str_array_pad);
}

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧