将数据存储在sql中的多列或序列化对象中更好吗?

时间:2011-07-22 01:10:21

标签: sql database-design serialization

我正在设计一个数据库来跟踪网站上的事件。我的一个表存储了与事件关联的服务器和会话变量,我希望看到存储这些数据的最佳解决方案。

解决方案1 ​​

每个变量都是表格中的一列


 ID | APPL_MD_PATH | APPL_PHYSICAL_PATH | AUTH_TYPE | AUTH_USER | ETC...
------------------------------------------------------------------------
 1  | /ROOT/       | \localhost\        |NULL       |NULL       |NULL
 2  | /ROOT/       | \localhost\        |DATA       |DATA       |NULL

解决方案2

序列化对象


 ID | OBJECT
--------------
 1  | [{ "SERVER_VARIABLES": { "APPL_MD_PATH": "/ROOT/", "APPL_PHYSICAL_PATH": "\\localhost\\" } }]
 2  | [{ "SERVER_VARIABLES": { "APPL_MD_PATH": "/ROOT/", "APPL_PHYSICAL_PATH": "\\localhost\\", "AUTH_TYPE": "DATA", "AUTH_USER": "DATA" } }]

使用解决方案1,每列都是正确的数据类型,并且具有许多可为空的列。使用解决方案2它更干净,我只能记录我实际使用的列,但在拉动时需要反序列化。想法或建议?

3 个答案:

答案 0 :(得分:3)

我会选择解决方案1,因为它可以让您更轻松地搜索和操作数据

答案 1 :(得分:0)

  1. 跟踪网站上的活动的最佳方式是恕我直言,使用谷歌分析: http://www.google.com/analytics/ 它已经能够在非常精细的粮食水平上跟踪活动。
  2. 如果你想自己做所有事情,那么MongoDB可能不那么痛苦,而且可能更容易理解。
  3. 在SQL领域,我不建议序列化解决方案1,特别是因为您可以在之后搜索日志。

答案 2 :(得分:0)

某些字段可以序列化,并且某些字段需要单独的列,它将是最好的