目前,我们基于mssql服务器的解决方案正在资源边缘运行。
现在,关于下一步解决负载的问题,我们有许多传统的选择:
- 购买更快的CPU和IO
- 拆分一些客户以分离服务器
- 将数据库移到群集
就许可和硬件或时间而言,所有这些都是昂贵的。因此,我想通过将整个系统移至nosql引擎cassandra承诺的可伸缩解决方案中来添加另一种选择。
但是,我不确定noSQL数据库也没有使用过SQL数据库,因此我需要了解“非结构化”数据的结构。
在我们的应用程序中,我们基本上将用户以各种方式输入的数据存储为“键值”列表。有一个父表,它包含head元素(如Order),还有一个子表,其键值对包括该订单的内容(如Order_Lines)。
在业务方面,Order和OrderLines是一个单位。但是由于RDBMS,它们存储在表中,并且必须一直连接。
在操作过程中,有时我们选择只加载顶部,但是在大多数情况下,我们加载头行+一些KVP以显示一些有用的信息。
例如,在概述列表中,我们在每行的列中显示头标识符+一些值。
更新:我们存储任何形式的表格。因此,基本上我们存储“文档”。但是,我们必须按任何值,排序等来准备和搜索这些形式。数据访问控制在数据库上增加了另一层兼容性。
您可能会猜到,某些KVP的数量和可用性因对象而异。没有有效的可能性为每种对象创建单个表,因为我们必须为不同的数据组合创建数千个表。
这种“字典”之类的数据集会更好地存储在noSQL数据库中吗?并从中获得性能收益吗?卡桑德拉会将这些head + KVP建模为一个数据集吗?看看cassandra网页和一些教程,我的印象是,在数据组织方面,我们的RDBMS和cassandra之间并没有太大的区别-如果您要选择5个KVP,我们将拥有大量的连接为每一行的列表。
欢迎启蒙,也可以使用指向这些问题的论文的指针。