构建图表编辑器 - 如何创建数据驱动图表

时间:2013-05-21 12:13:48

标签: javascript json graph d3.js data-visualization

我正在开发一个图形编辑器,它使用拖放来构建层次图(包含节点和链接),图中的每个节点都应该链接到我们数据库中的表(SQL Server),我做了很多有关基于javascript或/和JSON规范的库的研究,以绘制节点和链接,有很多很好的例子可供遵循。但我不知道如何将图表链接到数据库(SQL Server,Oracle,MySQL ......)。我想到了这个架构:

Technical Architecture

我查看了D3库,它创建了数据驱动的图表,但我认为它只使用平面文件,而不是关系数据库。 首先,请您告诉我,我的架构是否经过深思熟虑?其次,可以给我一些关于我将图表链接到DBMS的方法的想法。

非常感谢。

1 个答案:

答案 0 :(得分:1)

让我们说节点被反序列化为以下POCO:

public class Node
{
    public int id {get;set;}
    public string name {get; set;}
    public List<int> outBoundConnection {get;set;}
    public List<int> inBoundConnection {get; set;}
}

id字段来自数据库。这是您将用于跟踪对象的内容。假设每个行/ node / ..都有一个唯一的id,你需要在整个对象的生命周期中保持这个(Query - &gt; POCO - &gt; JSON - &gt; D3)。此ID将您的D3数据集链接到SQL服务器行。

我希望这有助于作为大纲。

  
      
  1. 设置一个Web项目,该项目将公开D3将使用的Web服务。

  2.   
  3. 创建一个Web服务来查询节点。以JSON格式返回数据。

         
        

    D3 has API for web serivces

      
  4.         
        

    您可能希望查看AutoMapper,因为它可以非常轻松地从DataTable / Reader转换为POCO。或者用你最喜欢的语言的DTO / OOM框架。

             

    在此Web服务中:创建与数据库的连接,查询所需的表,执行查询,将返回的数据转换为类对象(AutoMapper),返回构造为JSON的结构。

      

现在,由于id在整个生命周期中都会保留,因此您可以使用id作为参数向Web服务发出请求。

因此,例如,如果您要删除备注。您可以向接受id作为参数的Web服务端点发出HTTP DELETE请求(jQuery comes in handy here)。

或者,如果要删除连接节点,请创建一个带有两个ID的Web服务,或者连接的ID(如果您以这种方式设置了架构)。

您想要了解图表数据的独特之处。