- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,让我首先说我知道这很奇怪。我愿意。
但这里有:
假设我有一个存储数据的 SQL 数据库。假设我在这方面别无选择,它必须是 SQL。我正在构建的应用程序的数据库中有大约 100,000 条记录,一旦应用程序的用户处理了每条记录,它们就会全部关闭并完全发送到不同的应用程序。所以在短时间内,这个应用程序将被使用,然后停止使用,直到明年同一时间。在使用应用程序时,根本不会有任何外部资源接触数据库。
当(节点)服务器启动时,它会将数据库中的所有内容加载到服务器上的对象文字中。
这个应用程序的客户端,在一个非常基本的层面上,发出请求(向服务器上的 API)请求数据,并在处理完记录后将更新版本的记录发送回服务器。
所以这就是奇怪的地方:假设我不希望客户端应用程序必须直接从数据库中检索记录,也不希望它能够写入它们。所以整个数据库的数据已经存在于服务器的内存中。服务器上有一个模块已经可以处理更改该数据的表示形式(同样,因为客户端应用程序只与服务器上的 API 交互,所以存在数据库模块来促进这一点)。
多个用户同时访问系统,但由于系统的工作方式,不可能向两个用户发送相同的记录,因此两个用户永远不会为相同的记录发回更新(记录是单独处理的,并依次)。
因此,假设我决定,因为我已经在服务器上的内存中管理所有这些数据,所以每次更改时,我都会将当前数据的完整更新版本发送回数据库。
问题是,这在疯狂的规模上排名在哪里?
写入整个数据库而不是单个记录的性能显然会受到影响。但是,在一个只读取一次的数据库中(在应用程序启动时),这甚至是一个问题吗?如果除了“当任何东西发生变化时写入所有东西”之外的所有操作都发生在服务器的内存中,那么这些更新实际需要多长时间是否重要?如果在更新数据库的同时对数据库进行了新的更新,那么 SQL 肯定会解决这个问题吗?
感觉这样做的正确方法当然是让每个用户直接从数据库中获取他们的信息,并直接对数据库进行更新(或者至少与 API 端点交互以实现这一点),但是,是只是……不这样做,完全疯了?
就像我说的,我知道这很奇怪,但除了“感觉有点不对劲”这一事实之外,我不确定我是否确信这实际上是完全错误的。所以我想这个地方会有意见。
我认为它目前的工作方式是:
每当 {in-memory DB} 发生更改时,都会更新 [SQL DB]
{in-memory DB} 根据对服务器的 API 调用以各种方式更新
发出数据请求,并发送数据更新,这两者都在内存数据库中处理
来自应用程序的多个请求可以同时发生,但多个用户看不到相同的记录,因为记录在发送之前已分配给给定用户
多个更新可以来自多个用户,每个更新最终都以将整个 SQL 数据库与内存数据库的内容一起保存到其中而结束。
(注意:我不是说“这是最好的方法吗”。我只是在问,如果不从除非需要重新启动服务器)
最佳答案
在这种情况下,我认为我会做的是为每个缓存记录添加一个属性,以指示该记录是“脏的”。换句话说,由于它最初是从数据库中读取的,因此有人对其进行了处理。
(您还可以添加一个属性来指示某人“有此特定记录'已 checkout '”,以便您可以确定两个用户不会同时更新同一记录。)
在某个方便的时刻,您可以浏览集合,将“脏”记录发回数据库。使用 SQL 事务,不仅是为了提高效率,也是为了确保对数据库的最终更新是原子的。
您需要非常注意竞争条件的可能性。一种可能的策略是使用 Unix 时间戳作为“脏”指标。只有当它的“脏时间”大于或等于上次运行提交过程时的时间戳时,才会选择一条记录以发布到数据库。
(而且,P.S.:“不,在我从事这个疯狂行业的所有疯狂岁月中,我见过比这更“奇怪”的事情......)
关于javascript - 每当节点服务器上的数据发生变化时写入整个 SQL 表(很奇怪,请耐心等待),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38252748/
谁能解释一下 Server.MapPath(".")、Server.MapPath("~")、Server.MapPath(@"之间的区别\") 和 Server.MapPath("/")? 最佳答案
我不知道,为什么我们要使用 Server.UrlEncode() & Server.UrlDecode()?!在 QueryString 中我们看到 URL 中的任何内容,那么为什么我们要对它们进行编
我已经通过 WHM 在我的一个域上安装了 ssl 证书。网站正在使用 https://xyz.com . 但是它不适用于 https://www.xyz.com .我已经检查了证书,它也适用于 www
我已经使用 WMI 检测操作系统上是否存在防病毒软件,itz 正常工作并通过使用命名空间向我显示防病毒信息,例如 win xp 和 window7 上的名称和实例 ID:\root\SecurityC
我们有 hive 0.10 版本,我们想知道是否应该使用 Hive Server 1 或 Hive Server2。另一个问题是连接到在端口 10000 上运行的 Hive 服务器,使用 3rd 方工
我想在 C++ 中使用 Windows Server API 设置一个 HTTPS 服务器,我使用了示例代码,它在 HTTP 上工作正常,但我就是不能让它在 HTTPS 上工作。 (我不想要客户端 S
我写了一个非常基本的类来发送电子邮件。我用 smtp 服务器对其进行了测试,它工作正常,但是当我尝试使用我公司的交换服务器时,它给出了这个异常: SMTP 服务器需要安全连接或客户端未通过身份验证。服
我的应用程序包含一个“网关”DataSnap REST 服务器,它是所有客户端的第一个访问点。根据客户端在请求中传递的用户名(基本身份验证),请求需要重定向到另一个 DataSnap 服务器。我的问题
我有一个 Tomcat 服务器和一个 Glassfish4 服务器。我的 Servlet 在 Tomcat 服务器上启动得很好,但在 Glassfish4 服务器上给我一个“HTTP Status 4
我在 vmware 上创建了一个 ubuntu 服务器。我用它作为文件服务器。如果我通过托管虚拟机的计算机进行连接,则可以访问它。我无法从同一网络上的其他计算机执行此操作。提前致谢! 最佳答案 首先确
如何重启 Rails 服务器?我从 开始 rails server -d 所以服务器是分离的 我知道的唯一方法就是去做ps 辅助 | grep rails 并 kill -9关于过程#但是像这样杀死进
我实际上正在尝试找到编写一个简单的 XMPP 服务器的最佳方法,或者找到一个占用空间非常小的服务器。我只关心XMPP的核心功能(状态、消息传递、群组消息传递)。目前还在学习 XMPP 协议(proto
我实际上正在尝试找到编写简单 XMPP 服务器的最佳方法,或者找到一个占用空间非常小的方法。我只关心 XMPP 的核心功能(统计、消息、组消息)。目前也在学习 XMPP 协议(protocol),所以
我们正在尝试从 Java JAX-RS 适配器访问 SOAP 1.1 Web 服务。 我们正在使用从 WSDL 生成的 SOAP 客户端。 但是当解码 SOAP 故障时,我们得到以下异常: ... C
目前,我和许多其他人正在多个平台(Windows、OS X 和可能的 Linux)上使用 Python HTTP 服务器。我们正在使用 Python HTTP 服务器来测试 JavaScript 游戏
我有一个连续运行的服务器程序(C#/.NET 2.0 on Linux with mono),我想从 PHP 脚本连接到它以在网站上显示状态信息。 目的是创建一个(某种)实时浏览器游戏(无 Flash
所以我有一个单页客户端应用程序。 正常流程: 应用程序 -> OAuth2 服务器 -> 应用程序 我们有自己的 OAuth2 服务器,因此人们可以登录应用程序并获取与用户实体关联的 access_t
我们刚刚将测试 Web 服务器从 Server 2008 升级到 Server 2012 R2。我们有一个部署我们网站的批处理脚本。当它将站点推送到服务器时,它现在失败了。奇怪的是,我可以使用相同的发
建议一些加载SpagoBI服务器的方法,我尝试了所有方法来解析spagobi服务器。在 Catalina 中,错误是 - * SEVERE: Unable to process Jar entry [
当我们点击应用程序服务器(apache tomcat)时,它会创建一个线程来处理我们的请求并与 tomcat 连接,建立连接,tomcat 创建另一个线程来处理请求并将其传递给连接,连接线程将其传递给
我是一名优秀的程序员,十分优秀!