为了制作一个文档管理系统,我正在查看像MongoDB这样的文档存储,但是由于我对常规数据库(Firebird,Sql Server,Mysql)有更多的经验,我想知道是否有可能将文档存储在关系数据库之上.
关于文档存储的优点,架构较少:
但是有一个关系:
那么,在这种情况下如何处理关系数据库呢?
我正在寻找一些嵌入式数据库.SQLite在GUI方面存在一些问题.那么FireBird呢?它的邮件列表和论坛有多活跃?它是否遵循ANSI SQL的所有规则?它适合生产吗?
根据Firebird官方文档,包含Unicode字符串(SQL Server称为NVARCHAR)的列应声明为VARCHAR(x) CHARACTER SET UNICODE_FSS.所以我这样做了,但是当我用DBExpress查询表时,我得到的结果是一个TStringField,它只是AnsiString,而不是我期待的TWideStringField.
如何让DBX从Unicode字符串列中获取Unicode字符串结果?
这是一个常见的SQL问题,但是如果你必须知道数据库是Firebird的话.
我有这个表(简化):
user amount type -------------------- john 25 credit john 20 debit john 5 debit john 15 credit mike 15 credit
我希望使用单个查询得到一个看起来像这样的结果:
user credit debit -------------------- john 40 25 mike 15 NULL
Where credit = SUM(amount) WHERE type=credit
and debit = SUM(amount) WHERE type=debit
Run Code Online (Sandbox Code Playgroud)
基本上我希望基于字段的SUM(在这种情况下是数量)在结果上有多个字段,但是在不同的条件下(在这种情况下是类型).
在此先感谢您的任何建议.
我有连接问题..
在我的计算机上下载此数据库时,我可以毫无问题地连接到我的数据库:
viewdataConnection.ConnectionString = "User ID=sysdba;Password=masterkey;Database=localhost:F:\\machine.FDB;DataSource=localhost;Charset=NONE;"
Run Code Online (Sandbox Code Playgroud)
一切都很好.
但是当我尝试连接到lan网络中的这个基站时,问题就出现了:
viewdataConnection.ConnectionString = "User ID=sysdba;Password=masterkey;Database=10.48.14.51:d:\\backup\\machine.fdb; DataSource=:d:\\backup\\machine.fdb;Charset=NONE;";
Run Code Online (Sandbox Code Playgroud)
这也不起作用:
viewdataConnection.ConnectionString = "User ID=sysdba;Password=masterkey;Database=10.48.14.51:d:\\backup\\maszyna.fdb; DataSource=:10.48.14.51:d:\\backup\\maszyna.fdb;Charset=NONE;";
Run Code Online (Sandbox Code Playgroud)
然后我在我的SQL查询中得到关于无效令牌"秒"的错误,但是当数据库在localhost上时此查询有效..所以可能在我的connectionstring中有错误.
为什么?
我正在通过Borland数据库引擎(BDE)使用Paradox表.
我无法实现在字符串字段中处理null和空字符串值的方式(Paradox数据类型"A").
我的具体问题是如何确定字段值是空还是空字符串.在Database Desktop工具中,它们似乎都是空字符串.
我需要这个,因为我正在将数据(使用Database Desktop以及编程方式)迁移到Firebird数据库,并且看起来像空字符串的字段值都被复制到Firebird作为空值 ...甚至属于索引的字段!如何区分真空和空字符串?它取决于Paradox还是BDE?谢谢!
我有一个旧的数据库,我想将其转换为FireBird 2.5.在包含blob文本字段的表上恢复数据时出现问题,其中包含众所周知的问题"gbak:错误:格式错误的字符串gbak:检测到无效数据"
执行的步骤:
1)gfix -user SYSDBA -password masterkey f:\ dbb.db -shut -force 0
2)gfix -v -full -user SYSDBA -password masterkey f:\ dbb.db
3)gbak -v -t -g -ig -user SYSDBA -YF:\ backup.log -password"masterkey"f:\ dbb.db F:\ dbb1.db
4)gbak -r -v -o -p 16384 -YF:\ log.txt -user SYSDBA -密码masterkey"f:\ dbb1.db""f:\new.db"-fix_fss_data win1251 -rep
用win1252,utf8或unicode_fss替换字符集并不能解决问题.
我还尝试使用InterBase Data Pump 3.4版来迁移数据.
步骤:1)备份metatable
2)在新数据库上恢复metatable
3)使用InterBase Data Pump迁移数据
遇到错误"格式错误的字符串".
发生错误的所有表都有一个类型为"BLOB SUB_TYPE 1 SEGMENT SIZE 80"的字段
我怀疑在开始时数据库有字符集WIN1252.之后有人将charset更改为UTF8并更改了charset的所有字段定义,并从WIN1252更改为UTF8.否则我不明白为什么我会遇到这些格式错误的字符串错误.另外,我知道FireBird 2.0到FireBird 2.5迁移这个问题很常见.
有没有人知道如何解决这个问题?
我正在与另一位开发人员建立一个项目,这是一位非常有经验和能力的编码员,他的技能和能力都没有问题.最近我给他发了一个我做过的一些工作的演示,他似乎有点惊讶我选择了一个Firebird数据库.谈话是这样的:
他:你为什么选择火鸟?SQLite会更快.
我:SQLite只是嵌入式的,它不能很好地扩展.此外,它缺少很多功能,包括存储过程支持.
他:当数据库大小超出可用RAM量时,Firebird也存在可伸缩性问题.
我:你是什么意思?
他(从他的电子邮件中直接引用):大规模减速.显然当索引+数据不适合RAM(物理RAM,而不是虚拟RAM)时,它会进入各种类型的"慢速模式",我们已经能够通过增加FireBird conf的内存使用值来在一定程度上缓解它但是,如果由于某种原因它无法获取内存(与MSSQL或MySQL fi相反,FireBird不会在启动时保留物理RAM,只是逐步),则存在突然"内存不足"失败的风险.即使在24 GB的机器上,在8 GB以上的情况下,无论内存如何,减速似乎都会保持不变.所以我们逐步将它们迁移到Oracle/MSSQL.
正如我所说,这是一个非常聪明,有能力的开发人员.但另一方面,我们有Firebird网站声称人们正在将其用于生产超过11 TB的数据库,如果他说的是真的,这对于所有意图和目的来说都是不可能的.
所以我不得不怀疑,这个问题确实存在于Firebird中,还是他忽略了某些东西,也许是他不知道的一些配置选项?是否有人熟悉他所描述的问题?
我需要选择ID = 10,23,30的记录,所以我写了这个SQL
Select * from mytable where position(id in '10,23,30') > 0
Run Code Online (Sandbox Code Playgroud)
但问题是我得到额外的记录ID = 1和2任何想法如何只选择我需要的?
我想更新name_code从employee_migration用数字来自cdclient从表clientref.
INSERT INTO employee_migration (name_code)
Select cl.cdclient
From clientref cl
Inner Join employee_migration em
ON cl.client like upper(em.name)
ON DUPLICATE KEY UPDATE name_code VALUES (cl.cdclient)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:令牌无效.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 1.
ON.
Run Code Online (Sandbox Code Playgroud) firebird ×10
sql ×4
architecture ×1
bde ×1
c# ×1
dbexpress ×1
delphi ×1
delphi-2010 ×1
firebird2.1 ×1
firebird2.5 ×1
mysql ×1
nosql ×1
null ×1
paradox ×1
string ×1
where ×1
where-clause ×1