作为解决方案,我正在考虑一些全新的东西(对我们来说):使用noSQL。我想在我们的网站上使用noSQL数据库呈现数据。我们不能摆脱SQL Server(至少短期内不行),但对于所有新开发,使用Mongo作为查询数据库似乎是一个实际的步骤。
我的问题是是否可能同时使用SQL Server作为记录数据库和Mongo作为查询数据库,如果可以,您会使用什么技术/技术来更新更新?我希望每15分钟刷新Mongo。
我建议查看 CQRS (命令查询职责分离) 模式,这最初由 Greg Young 引入。你还可以在这里读到更多信息。
这种方法涉及使用两个数据库:写和读。写数据库用作主要的写存储库,而读数据库用于查询。读数据库可以具有数据反规范化。例如,如果您有文章,可以将作者信息嵌入其中,以便快速显示在ui上。总体而言,nosql数据库非常适合读取存储。
在您的情况下,主要规范化数据库可以是sql,而读取数据库可以是mongodb。
通常,这种方法非常适合高流量系统。有一个开源实现--ncqrs。
此外,这种方法在微软2012年的路线图中也被提及。
我个人使用这种方法已经超过一年,并给予它我的赞同。
将迁移到像MariaDB Enterprise(在本地或通过SkySQL云)这样的数据库可能是一个有趣的选项来评估。MariaDB具有多个可插拔、特定用途的存储引擎,每个表都配置了这些引擎,并支持跨引擎连接(连接使用不同存储引擎的表)。其中一些(但不是全部)引擎包括:
ColumnStore: 用于大数据和分析。这相当于在表的每一列上都有一个索引,但不需要处理索引的麻烦。它支持水平扩展,在实时中支持对数百亿行的即席查询。
Aria: 适用于不需要事务能力但读取性能至关重要的读取密集型工作负载(例如购物车、评论、评级等)。
MyRocks: 适用于需要比其他存储引擎或数据库更好的压缩和较少写放大的写入密集型工作负载。
InnoDB: 99%的情况下你所需要的。它支持压缩、加密、事务、即时模式更改、多主群集与同步复制等功能。
MEMORY: 用于将数据存储在内存而不是磁盘中。非常适合只读缓存和临时数据。
CONNECT: 允许MariaDB访问外部本地或远程数据(MED)。通过定义基于不同数据类型的表来实现,特别是各种格式的文件、从其他DBMS或产品(如Excel或MongoDB)提取的数据通过ODBC或JDBC,或从环境中检索的数据(例如DIR、WMI和MAC表)。
Spider: 支持分区和xa事务,并允许处理来自不同MariaDB实例的表,就像它们在同一个实例上一样。
在这里,您可以找到有关如何选择正确的存储引擎的建议:https://mariadb.com/kb/en/choosing-the-right-storage-engine/
此外,还有MariaDB Xpand,它几乎线性扩展读写能力,同时保持ACID兼容性;还有MaxScale,一个数据库代理,可以实现自动故障转移、读写分离、透明掩码、导入和导出数据库事件到Kafka(CDC),甚至可以将MariaDB用作MongoDB数据库(您可以连接使用MongoDB驱动程序的应用程序,并将数据存储在MariaDB中,而不是MongoDB本身,这样可以使用单个SQL语句将MongoDB应用程序中的数据与关系表中的数据进行关联)。