考虑在Microsoft平台上开发轻量级桌面数据库应用程序的需求.
使用MS Access可以相当容易地完成它,但我希望能够将其分发给其他人,我不想为运行时许可证付费.
要求:
考虑因素和候选人:
问题:MS Access的低成本或免费数据库替代方案是什么?
另请参阅: 开源报告引擎
@Schnapple
Bruceatk对我的想法有点打击; 它并不是数据库引擎,因为我想要Access为聚会带来的其他细节.漂亮的表单设计器,漂亮的报表引擎等.但是你确实提出了一个关于安装足迹的非常好的观点.我曾经考虑过这个问题,但我还没有做出任何明确的决定,无论如何我都会采用这种方式.它可能是相当轻量级的东西,而且小的安装空间肯定会是一个加分.
@Remou,
不,我不知道MS Access 2007运行时是免费的; 感谢您指出了这一点.我最后一次打扰调查它(我不记得它是什么时候)我觉得这是一个相当昂贵的运行时许可证,因为我认为他们试图将它卖给公司IT部门.
并感谢所有回应的人; 我完全没有意识到你们所指出的那些其他选择.
我们正在评估db4o(来自http://www.db4o.com的OO-DBMS ).我们已经针对客户端/服务器模式进行了性能测试,我们将服务器启动,然后立即与几个客户端进行对话.看起来服务器一次只能处理一个客户端的查询.
我们错过了某个允许这种情况的配置开关吗?服务器实现如下.客户端连接,查询(只读)和断开每个操作,并且操作在客户端进程中的多个工作线程之后立即运行.如果我们将一个客户端进程与同一服务器上的一个工作进程分开,我们会看到相同的行为.
有什么建议?
编辑:我们现在已经发现并尝试了Lazy和Snapshot QueryModes,尽管这可以缓解阻塞服务器问题(部分),但是当我们的客户端(我们运行40个等待1的并发测试客户端)时,我们仍然会看到严重的并发问题在发出随机操作请求之前-300ms锤击服务器.似乎有来自LINQ提供程序和IO内部的异常:-(
public class Db4oServer : ServerConfiguration, IMessageRecipient
{
private bool stop;
#region IMessageRecipient Members
public void ProcessMessage(IMessageContext con, object message)
{
if (message is StopDb4oServer)
{
Close();
}
}
#endregion
public static void Main(string[] args)
{
//Ingestion.Do();
new Db4oServer().Run(true, true);
}
public void Run(bool shouldIndex, bool shouldOptimizeNativeQueries)
{
lock (this)
{
var cfg = Db4oFactory.NewConfiguration();
if (shouldIndex)
{
cfg.ObjectClass(typeof (Sequence))
.ObjectField("<ChannelID>k__BackingField")
.Indexed(true);
cfg.ObjectClass(typeof (Vlip))
.ObjectField("<ChannelID>k__BackingField")
.Indexed(true);
}
if (shouldOptimizeNativeQueries)
{
cfg.OptimizeNativeQueries(true);
}
var …Run Code Online (Sandbox Code Playgroud)