我开始创建一个系统,我(作为目前唯一的用户)将加载一个动态创建的PHP页面,该页面具有
我的问题:对于这种事情,有哪些最佳实践可以遵循?在MySQL中将超文本标记语言保存为TEXT或LONGTEXT?BLOB?也许甚至可以将此数据保存为. txt文件,该文件使用PHP
include()
将其包含到向用户显示的文件中?
我真的不确定解决这类问题的最佳方法,因此也就产生了一连串的问题。我也不太熟悉创建数据库,因此,我不了解它们的优缺点。似乎使用MySQL数据库来实现这一目标是可行的,但我还没有结婚。
注#1:HTML必须完整保留。比如说<代码>
注意#2:我保存的表每次都会随机生成(包括行数/列数)。因此,我需要表中的所有数据,包括所有
有人会想出php来正确实现这一点,但这里有一个想法。
所以试试这个计划,然后回来为未来的读者发布你是如何做到的。快乐编码。
遵循这条规则:PHP用于格式化;MySQL用于数据。
PHP用于构建HTML。MySQL作为PHP可以构建HTML的数据的持久存储非常有用。
我已经用Apache PHP MySQL构建了几个系统。每个页面都是PHP生成的HTML。我不存储<代码>
我的一些页面执行一个SELECT
;许多页面执行十几个或更多。性能很好。我使用PHP子例程来构建
让我们使用蓝色,因为它可能位于某个数据库表中;PHP代码将添加<代码>
MySQL和HTML文件都可以工作。您的选择应该取决于数据的简单程度和存储量。
一些注意事项:
>
速度。HTML文件和include()方法将更快。文件系统是最快、最简单的数据持久化形式。
水平可扩展性。如果您采用文件系统方法,您或多或少地与该机器上的磁盘相关联。使用单独的数据库引擎,您将来可以选择在网络上的单独集群服务器上运行数据库。
元数据。您是否需要存储诸如创建时间、哪个用户创建了超文本标记语言、其他用户查看了多少次等内容?如果是这样,您可能只有一个现实的选择——一个“合适的”数据库。这可以是MySQL或非关系型数据库解决方案之一。
数据消耗。是否向其他用户显示整个表?还是显示它的选定部分?甚至可能对不同的用户使用不同的部件?这会影响您存储数据的方式—将整个表作为一个实体,或将每行作为一个实体,或每个单元格。
文本还是长文本?当然,只有在使用SQL时才适用。回答这个问题的唯一方法是知道每个“HTML片段”需要存储多少字节。请注意,字符编码也会影响存储的字节数。请参阅:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT最大存储大小
还要注意,在MySQL中,每个文本/长文本也可能导致对磁盘的I/O。
关于关注点:
HTML必须完整保留。
只要您在任何时候都不转义HTML,就应该可以了。乍一看,这违反了安全最佳实践,但仔细想想,“不转义HTML”正是您想要做的。转义HTML输出的做法只会帮助消除被解析为HTML标记的HTML语法(潜在的恶意),但在您的情况下,您根本不希望消除HTML语法-您故意想要<代码>
只需注意:虽然您没有对输出进行HTML转义,但仍然应该过滤输入。本质上,这意味着:在写入DB之前,检查用户输入是否确实是HTML。为了增强应用程序的安全性,明智的做法是为这些html" target="_blank">表单元格中可以存储的内容定义规则-可能没有<代码>
目前需求就是将mysql的表结构及数据迁移到pgsql. 我用的方案是使用navicate 同步数据及结构到pg, 有如下问题: mysql中的索引直接丢失了 不知道为啥一直报错表找不到 对于默认值 pgsql也丢失了 请问大家有什么好的实践吗? 我考虑的是 直接使用数据库迁移 将数据库脚本转化为pg的语法
最近我考虑了在MySQL数据库中存储历史数据的最佳实践。目前,每个可版本表都有两列-和,都是类型。具有当前数据的记录的填充了其创建日期。当我更新此行时,我将填充更新日期,并使用添加新记录,与前一行中的相同-简单的操作。但是我知道这个表会非常大,非常快,所以获取数据会非常慢。 我想知道您是否有存储历史数据的实践?
问题内容: 最近,我考虑了将历史数据存储在MySQL数据库中的最佳做法。目前,每个可版本控制的表都有两列-和,两者均为类型。具有当前数据的记录已充满了创建日期。当我更新此行时,我填写了更新日期,并添加了与上一行相同的新记录- 简单的东西。但是我知道表会非常快,因此获取数据可能会很慢。 我想知道您是否有任何存储历史数据的做法? 问题答案: 担心“大”表和性能是一个常见的错误。如果您可以使用索引来访问
问题内容: 我们有一个实时的MySQL数据库,该数据库的插入率为99%,每秒约100个。我们希望每天都存档数据,以便我们可以在不影响主实时数据库的情况下对其进行查询。此外,归档完成后,我们要清除实时数据库。 没有(如果可能)锁定INSERT的最佳方法是什么?我们对查询使用INSERT DELAYED。 问题答案: http://www.maatkit.org/具有mk-archiver 将表中的行
问题内容: 我出于好奇而问这个问题。基本上,我的问题是,当您拥有一个需要行条目才能具有像标志作用的事物的数据库时,最佳实践是什么?一个很好的例子就是堆栈溢出的标志,或者是bugzilla中的操作系统字段。可以为给定条目设置标志的任何子集。 通常,我会进行c和c ++的工作,因此我的直觉反应是将无符号整数字段用作一组可以翻转的位…但是我知道,由于多种原因,这不是一个好的解决方案。其中最明显的是可伸缩
我已经为我的app的数据创建了所有的CRUD操作,现在我需要处理数据并创建报告。 根据这些报告的复杂性,我将创建一些汇总或预处理表。这样,我就可以触发一次报告创建,然后高效地获取它们。 我的疑问是我是应该用Java还是用MySQL的存储过程构建所有的报告。 null null 谢谢!