FBAdmin

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

FBAdmin

patspiper
A few questions regarding FBAdmin:

- Will FBAdmin be backported to 2.6.1?

- Will more functionality be added to it? In particular the setting of
Forced Writes (I could perhaps supply a patch then).

Stephano
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: FBAdmin

Ludo Brands
> A few questions regarding FBAdmin:
>
> - Will FBAdmin be backported to 2.6.1?
>
I can't comment on that.
 
> - Will more functionality be added to it? In particular the
> setting of
> Forced Writes (I could perhaps supply a patch then).
>

Not from my side. Purpose of TFBAdmin was to provide access to the
"day-to-day" basic admin tasks such as backup/restore, user management. The
API has many more options that are not basic admin actions and that require
a minimum of knowledge and precaution. Making those available in a standard
component is opening a can of worms.

The code itself is quite straightforward. Copy fbadmin to your project dir
and add the following:

function TFBAdmin.SetForcedWrites(Database:string; ForcedWrites: boolean):
boolean;
var
  spb:string;
begin
  result:=CheckConnected('SetForcedWrites');
 
spb:=chr(isc_action_svc_properties)+IBSPBParamSerialize(isc_spb_dbname,Datab
ase)+
    chr(isc_spb_prp_write_mode);
  if ForcedWrites then
    spb:=spb+chr(isc_spb_prp_wm_sync)
  else
    spb:=spb+chr(isc_spb_prp_wm_async);
  result:=isc_service_start(@FStatus[0], @FSvcHandle, nil, length(spb),
    @spb[1])=0;
  if not result then
    begin
    CheckError('SetForcedWrites',FStatus);
    exit;
    end;
end;



Ludo

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: FBAdmin

patspiper
On 13/09/12 16:33, Ludo Brands wrote:

>> A few questions regarding FBAdmin:
>>
>> - Will FBAdmin be backported to 2.6.1?
>>
> I can't comment on that.
>  
>> - Will more functionality be added to it? In particular the
>> setting of
>> Forced Writes (I could perhaps supply a patch then).
>>
> Not from my side. Purpose of TFBAdmin was to provide access to the
> "day-to-day" basic admin tasks such as backup/restore, user management. The
> API has many more options that are not basic admin actions and that require
> a minimum of knowledge and precaution. Making those available in a standard
> component is opening a can of worms.
It is already quite a useful component as is. Since you are FBAdmin's
author, and are knowledgeable in the service API, what do you recommend
regarding the non basic admin actions? Forced Writes in particular is
interesting as it might have to be turned off when pumping data for example.

>
> The code itself is quite straightforward. Copy fbadmin to your project dir
> and add the following:
>
> function TFBAdmin.SetForcedWrites(Database:string; ForcedWrites: boolean):
> boolean;
> var
>    spb:string;
> begin
>    result:=CheckConnected('SetForcedWrites');
>  
> spb:=chr(isc_action_svc_properties)+IBSPBParamSerialize(isc_spb_dbname,Datab
> ase)+
>      chr(isc_spb_prp_write_mode);
>    if ForcedWrites then
>      spb:=spb+chr(isc_spb_prp_wm_sync)
>    else
>      spb:=spb+chr(isc_spb_prp_wm_async);
>    result:=isc_service_start(@FStatus[0], @FSvcHandle, nil, length(spb),
>      @spb[1])=0;
>    if not result then
>      begin
>      CheckError('SetForcedWrites',FStatus);
>      exit;
>      end;
> end;

It is straight forward indeed. I had started writing similar code.

Thanks,
Stephano
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: FBAdmin

Ludo Brands
> It is already quite a useful component as is. Since you are FBAdmin's
> author, and are knowledgeable in the service API, what do you
> recommend
> regarding the non basic admin actions? Forced Writes in particular is
> interesting as it might have to be turned off when pumping
> data for example.

As said before IMHO forced writes doesn't belong in a component that comes
standard with Lazarus. Google for Firebird forced writes off and you get as
first page http://www.firebirdsql.org/manual/qsg2-safety.html chapter "how
to corrupt a database". Forced Writes is a speed hack that turns off
effectively the database integrity for the time of the operation. That is
integrity in the largest sense. When something goes wrong, your complete
database can become unusable. Unless you are writing a db admin tool or a
very specialised tool, no business application should use this.  

The category of repair actions as well are only useful for db admin tools.
Perhaps setting the sweep interval or forcing a sweep could be something
that is useful for non db admin applications. An automated sweep that starts
when your app is in peak usage can be disturbing. But then again, a crontab
that launches a nightly or weekend sweep will keep you away from that also.

Ludo



_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: FBAdmin

patspiper
On 14/09/12 20:07, Ludo Brands wrote:

>> It is already quite a useful component as is. Since you are FBAdmin's
>> author, and are knowledgeable in the service API, what do you
>> recommend
>> regarding the non basic admin actions? Forced Writes in particular is
>> interesting as it might have to be turned off when pumping
>> data for example.
> As said before IMHO forced writes doesn't belong in a component that comes
> standard with Lazarus. Google for Firebird forced writes off and you get as
> first page http://www.firebirdsql.org/manual/qsg2-safety.html chapter "how
> to corrupt a database". Forced Writes is a speed hack that turns off
> effectively the database integrity for the time of the operation. That is
> integrity in the largest sense. When something goes wrong, your complete
> database can become unusable.
+1

My question was more geared towards an extension to FBAdmin, or an
entirely different component such as FBServices which is derived from
FBAdmin.
>   Unless you are writing a db admin tool or a
> very specialised tool, no business application should use this.
A corner case which could benefit from Forced Writes off, almost risk
free: Data is pumped into a freshly created FB database, report tables
are created and populated, then used for reporting purposes. Then the
whole thing is discarded.

Stephano
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal