AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird DB Datensatz über RDB$DB_KEY finden
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird DB Datensatz über RDB$DB_KEY finden

Ein Thema von Kostas · begonnen am 22. Feb 2022 · letzter Beitrag vom 24. Feb 2022
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 22. Feb 2022, 17:31
Datenbank: Firebird • Version: 3.0 • Zugriff über: FIREDAC
Hallo Zusammen,

IBExpert zeigt RDB$DB_KEY den Wert '129:27' an.
Wie müsste ich den value convertieren so dass ich danach über Where suchen kann?

das habe ich versucht
Code:
where DB_KEY = cast('129:27' as char(8));
where RDB$DB_KEY = '129:27'
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 22. Feb 2022, 20:00
ist aus meiner sicht keine gute idee, weil du ggf nach einem backup/restore die datensätze unter anderen werten wieder finden würdest

cast(RDB$DB_KEY as CHAR(8) CHARACTER SET OCTETS)

zeigt dir den wert aber in anderer art an, aber zum speichern oder suchen bringt dich das nicht weiter
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 22. Feb 2022, 20:08
Oh, danke für den Hinweis. Das wusste ich nicht, somit hat sich das erledigt.
  Mit Zitat antworten Zitat
knuut21

Registriert seit: 3. Mär 2010
Ort: Unna
21 Beiträge
 
RAD-Studio 2010 Ent
 
#4

AW: Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 22. Feb 2022, 20:53
Falls Du in diese Richtung dennoch weiter denken möchtest, hier ein schönes Anwendungsbeispiel: https://www.ibphoenix.com/resources/...how_to/doc_385
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
543 Beiträge
 
#5

AW: Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 23. Feb 2022, 13:11
die DB_KEY kommen nur dann rein, wenn ihr keinen Primary Index definiert habt.
IMO sind die Tabellen auch nur für kleine Datenmengen zu gebrauchen. Weil die Performance beim Insert ist alles andere als gut.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 24. Feb 2022, 06:25
die DB_KEY kommen nur dann rein, wenn ihr keinen Primary Index definiert habt.
nein, den kannst du auch bei Tabellen abfragen die einen PK haben.

IMO sind die Tabellen auch nur für kleine Datenmengen zu gebrauchen. Weil die Performance beim Insert ist alles andere als gut.
Was willst Du damit sagen? Welche Tabellen? die von Firebird?
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 24. Feb 2022, 12:04
vielleicht zum verständnis:

jede tabelle hat für jeden datensatz einen wert für rdb$db_key, der ist immer binär eindeutig
pro Datensatz und ist zB für die Indizes erforderlich. In einem Index befindet sich zB ein
Wert und dazu dann die liste der rdb$db_key werte, die zu diesem Wert in den Records zu
finden sind

das was ibexpert und andere tools da als Darstellung benutzen entspricht dem Inhalt,
vor dem Doppelpunkt ist eine konstante pro Tabelle (ist im Prinzip die RDB$RELATION_ID
in RDB$RELATIONS). Wenn da zb 129 steht ist die Tabelle dort mit der ID 129 gespeichert.

wenn Ihr eine tabelle habt mit zB char(1) a..z also 26 records, die nacheinander
in der reihenfolge per insert eingefügt werden, dann sieht das so aus als ob dahinter
dann 129:1, 129:2, ... 129:26 steht, was binär auch stimmt.

wenn ihr nun b..y löscht bleiben als sichtbare rdb$db_keys nur
129:1=a und 129:26=z übrig

und nach einem backup/restore werden die nun nur noch 2 records mit neuen rdb$db_keys
eingespielt
129:1=a und 129:2=z

nach dem restore werden auch die indizes neu erstell, haben also dann auch die richtigen
Werte

Für eine technische Anwendung ist außerhalb der internen Verwaltung, die Firebird damit macht,
die Nutzung vom rdb$db_key eine ziemlich unbrauchbare idee

Im Prinzip ist das sozusagen nichts anderes als die interne hausnummer jedes Records
die nur bis zum restore statisch ist
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 24. Feb 2022, 12:08
die DB_KEY kommen nur dann rein, wenn ihr keinen Primary Index definiert habt.
IMO sind die Tabellen auch nur für kleine Datenmengen zu gebrauchen. Weil die Performance beim Insert ist alles andere als gut.
da fehlt mir auch jeder technische zusammenhang in dieser Aussage
warum "sind die Tabellen auch nur mit kleinen Datenmengen zu gebrauchen"?

Was mache ich falsch, das bei mir Inserts auf Tabellen mit mehr als einer
Milliarde Datensätze schnell laufen? ist das noch eine kleine Datenmenge?
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
543 Beiträge
 
#9

AW: Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 24. Feb 2022, 12:19
Vergesst es. Bei uns wird der RDB$DB_KEY in 2 Tabellen per Default in FlameRobin angezeigt, weil diese beiden Tabellen keinen PK besitzen. Daher auch der Bezug auf die Performance.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz