- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的任务是为即将到来的项目寻找一个合适的数据库。我很难找到合适的匹配项。我们的应用程序是 .Net Framework 4.0 C# 应用程序。
首先我查看了 SQLite,但我遇到了问题,因为 SQLite 在写入期间锁定了它的数据库文件。
我有 2 个独立的应用程序使用同一个数据库同时运行,我无法确定其中一个正在写入。我试图等待锁释放,但这导致了一些数据丢失。所以我想我会发明一个队列系统,但是两个应用程序都需要使用相同的队列......所以我想我会做一个单独的窗口服务。在我看来,所有这些开始听起来像是传统的 RDBMS。
我决定回过头来问自己“我使用的数据库是否正确?”。
有人知道可以满足我的要求的数据库吗?
这是我的要求:1. 安装方便。这包括没有用户必须与我们的应用程序安装分开运行的单独“安装程序”。这首先让我相信我需要一个嵌入式数据库,但我认为可能有一些聪明的方法可以在我们的安装程序中包含数据库安装。
很难打破。这里最大的需求是它应该能够在命名管道而不是 TCP/IP 上工作,以解决安全问题(或任何降低人们系统配置破坏我们应用程序的能力的东西)。我们的应用程序将始终在同一台机器上运行。他们需要共享同一个数据库,因此如果涉及防火墙/安全/“智能用户”,使用 TCP/IP 可能会导致问题。
数据库上的长时间运行操作不应阻止其他用户读取/写入数据库。我考虑过编写一些代码来处理这个需求并仍然使用 Sqlite,但决定做更多的功课。
许可:我们想要一些可以免费重新分发的东西。我们不希望我们的最终用户需要为我们所依赖的数据库购买他们自己的单独许可证。
大小限制:我们计划在这些数据库中存储大量数据,任意限制是 Not Acceptable 。我们愿意接受操作系统对文件大小施加的限制。 SQLite 的大小限制(这是任何 Windows 机器文件的大小限制)大于 2 TB。
很高兴:能够使用 Entity Framework 。
很高兴拥有:关系数据库。我们可能允许第 3 方应用程序读取我们的数据库,并且不介意它是关系数据库而不是文档或对象数据库。但是,我们愿意为满足我们所有要求的东西做出让步。
到目前为止我看过的数据库:乌鸦数据库SQLite立方体SQLiteSQL CE
Oracle 和 Microsoft SQL Server 已获得许可并且难以重新分发。
我了解这些要求非常严格。我什至不确定是否有开箱即用的解决方案。我感谢任何人可以提供的任何帮助。
最佳答案
您需要使用 SQL Server CE 4.0:
您错误地认为它需要许可:
Microsoft SQL Server Compact 4.0 is a free, embedded database that software developers can use for building ASP.NET websites and Windows desktop applications. SQL Server Compact 4.0 has a small footprint and supports private deployment of its binaries within the application folder, easy application development in Visual Studio and WebMatrix, and seamless migration of schema and data to SQL Server.
来自 Microsoft SQL Server Compact 4.0 (MS download)
除非 4Gb 不够用,否则您可以使用它。
SQL Server Express 也是免费的,限制较少,但需要安装。
SQL CE 和 SQL Server 之间的主要区别是 CE 不支持 Sotred Procedures。但如果您使用 EF,那根本不是问题。
编辑关于许可的附加信息:
SQL Server Compact 4.0 is freely redistributable under a redistribution license agreement and application developers redistributing SQL Server Compact 4.0 can optionally register at the SQL Server Compact redistribution site. Registering will help the developers in getting information about SQL Server Compact critical security patches and hot fixes that can be further applied to the client installations.
在下载页面的底部
关于c# - 多用户嵌入式数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10485837/
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!