简体   繁体   English

需要帮助选择数据库服务器

[英]Need help choosing database server

Good day everyone. 今天是个好日子。

Recently I was given a task to develop an application to automate some aspects of stocks trading. 最近我被赋予了开发应用程序以自动化股票交易某些方面的任务。 While working on initial architecture, the database dilemma emerged. 在开始初始架构时,出现了数据库困境。 What I need is a fast database engine which can process huge amounts of data coming in very fast. 我需要的是一个快速的数据库引擎,可以非常快速地处理大量数据。 I'm fairly experienced in general programming, but I never faced a task of developing a high-load database architecture. 我在通用编程方面经验丰富,但我从未面临过开发高负载数据库架构的任务。 I developed a simple MSSQL database schema with several many-to-many relationships during one of my projects, but that's it. 在我的一个项目中,我开发了一个简单的MSSQL数据库模式,其中包含多个多对多关系,但就是这样。

What I'm looking for is some advice on choosing the most suitable database engine and some pointers to various manuals or books which describe high-load database development. 我正在寻找的是关于选择最合适的数据库引擎的一些建议,以及描述高负载数据库开发的各种手册或书籍的一些建议。

Specifics of the project are as follows: 该项目的具体内容如下:

  • OS: Windows NT family (Server 2008 / 7) 操作系统:Windows NT系列(Server 2008/7)
  • Primary platform: .NET with C# 主平台:.NET with C#
  • Database structure: one table to hold primary items and two or three tables with foreign keys to the first table to hold additional information. 数据库结构:一个表用于保存主项,两个或三个表用外键保存到第一个表以保存其他信息。
  • Database SELECT requirements: Need super-fast selection by foreign keys and by combination of foreign key and one of the columns (presumably DATETIME) 数据库SELECT要求:需要通过外键和外键与其中一列的组合进行超快速选择(可能是DATETIME)
  • Database INSERT requirements: The faster the better :) 数据库INSERT要求:越快越好:)

If there'll be significant performance gain, some parts can be written in C++ with managed interfaces to the rest of the system. 如果有显着的性能提升,可以用C ++编写一些部分,并将托管接口写入系统的其余部分。

So once again: given all that stuff I just typed, please give me some advice on what the best database for my project is. 再一次:考虑到我刚输入的所有内容,请给我一些关于我项目最佳数据库的建议。 Links or references to some manuals and books on the subject are also greatly appreciated. 还非常感谢关于该主题的一些手册和书籍的链接或参考。

EDIT: I'll need to insert 3-5 rows in 2 tables approximately once in 30-50 milliseconds and I'll need to do SELECTs with 0-2 WHERE clauses with similar rate. 编辑:我需要在30-50毫秒内在2个表中插入3-5行大约一次,我需要使用0-2 WHERE子句以相似的速率执行SELECT。

The technology is irrelevant. 这项技术无关紧要。 This is about hardware. 这是关于硬件的。

Need super-fast selection by foreign keys and by combination of foreign key and one of the columns (presumably DATETIME) 需要通过外键以及外键和其中一列的组合进行超快速选择(可能是DATETIME)

So you need something like a supermicro 72 disc computer system filled with SSD's and 256gb memory as cache. 所以你需要一个像SSD和256GB内存作为缓存的supermicro 72光盘计算机系统。 Simple as that. 就那么简单。 Addd processors as needed. 根据需要添加处理器。

Problem is that it is EXPENSIVE, but at the end databases are about IO. 问题是它是昂贵的,但最后数据库是关于IO的。 Point. 点。

Alternatively go with a click stream database (KD+) and intead of paying 30.000 USD for hardware they ask for 20.000 USD For the smallest software license to start. 或者使用点击流数据库(KD +)和支付30.000美元的硬件,他们要求的硬件20.000美元用于启动最小的软件许可证。

I know this sounds hard, but adatabase speed - unless you do stupid things that kill performance - IS about hardware. 我知道这听起来很难,但是数据库的速度 - 除非你做了愚蠢的事情来扼杀性能 - 关于硬件问题。 PRettym uch the IOPS budget (independent IOPS per second). PRettym uch IOPS预算(每秒独立IOPS)。 And not about software. 而不是关于软件。

That list of yours are just basic requirements. 你的清单只是基本要求。 You can use almost any database for that, although I wouldn't recommend MySQL. 您几乎可以使用任何数据库,但我不建议使用MySQL。 It can slow down a little when you do many inserts, because this clears you query cache. 当您执行多次插入时,它可能会减慢一点,因为这会清除查询缓存。 Other DBMSs handle this better. 其他DBMS可以更好地处理这个问题。

But then again. 但话又说回来。 Three tables... you could almost do it in Access. 三张桌子......你几乎可以在Access中做到这一点。

What you didn't specify is the amount of reads and inserts you expect. 指定的是您期望的读取和插入量。 Our poor little MySQL database runs millions of queries a day for our website. 我们糟糕的小型MySQL数据库每天为我们的网站运行数百万条查询。 Only a small part of this are inserts and updates (DML statements), so MySQL handles this very well, but the amount of queries, their complexity and the amount of data involved are more important data than the number of tables. 其中只有一小部分是插入和更新(DML语句),因此MySQL处理得非常好,但查询量,复杂性和涉及的数据量都是比表数更重要的数据。

Where you already have experience with Sql Server, I would suggest sticking with it in some form. 如果您已经有过使用Sql Server的经验,我建议您以某种形式坚持使用它。 Also, Sql Server and .NET have a nice synergy going (obviously) because they are both Microsoft products. 此外,Sql Server和.NET有很好的协同作用(显然),因为它们都是微软的产品。

If it doesn't have to be SQL, maybe a system like Cassandra is a good option. 如果它不一定是SQL,也许像Cassandra这样的系统是个不错的选择。 These kind of databases are used by high frequency websites like social media. 这类数据库被社交媒体等高频网站使用。 Don't know how it installs under Windows server, though. 但不知道它在Windows服务器下的安装方式。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM