标签: database

在MySQL数据库设计中,有数百万个表和数百万行是常见的做法吗?

我正在为即将推出的网络应用程序进行数据库设计,如果这种设计对于一个Web应用程序来说很有效,那么我很想在当前的网络应用程序中大量使用mysql.

1个DB

在DB中,数百万个表用于每个用户的功能,并且在每个表中,可能有数百万行.

虽然这个设计很有活力并且很好地扩展,但我想知道两件事.

  1. 这是当今Web应用程序中的常见设计吗?
  2. 如果查询数百万行,这将如何执行,时间明智.
  3. 如果数据库包含数百万个表,它如何执行?(再次,时间明智,这甚至可能吗?)
  4. 如果它在上述条件下表现良好,如果所有80,000个用户每天访问数据库20-30次,每天10-15分钟会话,它如何在剧烈负载下运行?
  5. 一般来说,这需要多少服务器空间(重申,数百万个表,每个表包含数百万行,10-15列填充文本)

任何帮助表示赞赏.

mysql sql database database-design

5
推荐指数
1
解决办法
1741
查看次数

保存数据库字段更改 - 最佳做法?版本控制,Loggable?

我使用Symfony 2和Doctrine作为ORM Framework.我正在寻找保存对数据库字段所做更改的最佳方法.我将有大约100个表,每个表有大约50个字段和几千行.现在我想保存对字段所做的所有更改.

我想到的可能性:Doctrine扩展"Loggable" - 保存不同表中的更改,但不知道它是否可以承受这么多的条目.

每个表的MySQL触发器,用于保存新表中的更改?

但保存更改的最佳做法是什么?

database doctrine symfony

5
推荐指数
1
解决办法
2397
查看次数

用于财务分析的数据存储

我正在建立系统来分析有关证券交易价格的大量金融数据.这方面的一个重大挑战是确定数据将使用哪种存储方法,因为数据将在10的TB级中.将对数据进行许多查询,例如取平均值,计算标准偏差以及按多个列过滤的总和,例如价格,时间,数量等.连接语句不是必需的,但是很高兴.

现在,我正在寻找infobright社区版,monetdb和greenplum社区版用于评估目的.到目前为止,它们看起来很棒,但是对于更高级的功能,某些版本中不提供某些功能(使用多个服务器,插入/更新语句等).

您将在这种情况下使用哪些解决方案,并为替代方案提供哪些好处?具有成本效益是一个重要的优点.如果我必须支付数据仓库解决方案,我会,但我宁愿避免它,并尽可能采用开源/社区版路线.

database data-warehouse monetdb greenplum infobright

5
推荐指数
1
解决办法
1165
查看次数

数据库竞争条件

我听说很多应用程序开发人员在数据库处理的竞争条件方面遇到了一些麻烦.一个典型的例子是这样的:

  • 用户1选择一个字段,比如numStock,即3
  • 用户2还选择numStock,它仍然是3
  • 用户1减少numStock(在应用程序中),并在数据库中将其设置为2.
  • 用户2还减少numStock(在应用程序中),并在数据库中将其设置为2.

在此示例中,numStock字段应该变为1,但由于用户之间的竞争而将其设置为2.

所以当然可以使用锁,但我想到了另一种处理方法 - 将所有行详细信息作为WHERE标准传递.让我解释...

在上面的示例中,SQL代码可能如下所示:

//选择

SELECT itemID, numStock FROM items WHERE itemID = 45
Run Code Online (Sandbox Code Playgroud)

//更新

UPDATE items SET numStock = 2 WHERE itemID = 45
Run Code Online (Sandbox Code Playgroud)

我想解决这个问题的想法:

//选择

SELECT itemID, numStock FROM items WHERE itemID = 45
Run Code Online (Sandbox Code Playgroud)

//更新

UPDATE items SET numStock = 2 WHERE itemID = 45 AND numStock = 3
Run Code Online (Sandbox Code Playgroud)

因此,查询检查数据是否因为选择了数据而发生了变化.所以我的问题是:(1)这[总是]会起作用吗?(2)与数据库锁定机制(例如,MySQL事务)相比,这是一个更好的选择吗?

谢谢你的时间.

database race-condition

5
推荐指数
1
解决办法
8130
查看次数

股票数据的数据库选择

我想知道NoSQL是否适合这种情况:

输入是来自多个来源的小时库存数据(sku,数量,价格等)。旧版本将被删除。所以我们不会超过1个mio。数据集在不久的将来,并且不会像数据仓库中那样出现任何商业智能查询。但是将存在汇总,至少对于一组商品的最低价格而言,如果一组最低价格的商品被售罄,则必须进行汇总。除了频繁地进行这些批量写入外,还会随时减少文章数量的单次减少。

该数据库将成为服务的一部分,该服务需要通过REST快速响应请求。因此,需要进行某种缓存。不需要强烈的一致性,但要持久。

进一步的愿望清单:

  • 应该很好地适应不断增长的请求负载
  • 就金钱和复杂性而言,价格便宜的技术(没有Oracle集群)
  • 没有专有语言(没有PL / SQL)

MongoDB及其聚合框架似乎很有希望。你能想到替代品吗?(我不坚持使用NoSQL!)

database rdbms mongodb nosql

5
推荐指数
1
解决办法
2765
查看次数

是否可以存储图表hbase?如果是这样,您如何建模数据库以支持图形结构?

我一直在玩使用图表来分析大数据.它的工作非常好,非常有趣,但我想知道该做什么,因为数据变得越来越大?

让我知道是否有任何其他解决方案,但我想尝试Hbase,因为它横向扩展,我可以让hadoop在图上运行分析(我的大部分代码已经用java编写),但我不确定如何构建一个nosql数据库上的图形?我知道每个节点都可以是数据库中的一个条目,但我不确定如何建模边缘并为它们添加属性(如节点名称,属性,pagerank,边缘权重等).

看看hbase/hadoop是如何在大表和map之后建模的,我怀疑有一种方法可以做到这一点但不确定如何.有什么建议?

此外,这是否有意义我正在尝试做什么?或者它是否有更好的大数据图解决方案?

database hbase graph-theory graph data-structures

5
推荐指数
1
解决办法
5454
查看次数

如何导入数据库,更新已更改的产品,删除已删除的产品

我对基本的MySQL"好",但这是"我的头脑"!

目标:

  • 导入数据库
  • 更新已更改的产品
  • 删除已删除的产品
  • 快速有效

数据库表是巨大的,速度是一个问题.

没有MyISAM是inoDB会更快吗?每个数据库都在一个唯一的表中.

我被赋予了这个作为我正在尝试做的事情的起点:

CREATE TABLE `table` LIKE LiveTable
LOAD DATA INFILE..... INTO `table`
UPDATE `table`  SET delete=1; -- Set the delete field to true  because it will not have been updated
UPDATE `table` INNER JOIN`table`ON `LiveTable.ID`=`table.ID`
SET LiveTable.Col1=table.Col1, LiveTable.Col2=table.Col2….. delete=0
INSERT INTO LiveTable(ID,Col1,Col2,…  delete=0)
SELECT ID,Col1,Col2,...FROM `table`
LEFT JOIN LiveTable 
ON table.ID = LiveTable.ID
WHERE LiveTable.ID IS NULL
DELETE FROM LiveTableWHERE delete = 0
EMPTY TABLE `table`
Run Code Online (Sandbox Code Playgroud)
> CREATE TABLE `product_table`   (
>      `programname` …
Run Code Online (Sandbox Code Playgroud)

mysql database mysql5 mysql-5.1

5
推荐指数
1
解决办法
1787
查看次数

无法访问moodle中的数据库

我正在使用moodle并且我更改了我的网站的位置,但我遇到了这个错误.

我的config.php是:

<?php  /// Moodle Configuration File 

unset($CFG);

$CFG->dbtype    = 'mysql';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'lightsys_test';
$CFG->dbuser    = 'lightsys_test';
$CFG->dbpass    = '123456a';
$CFG->dbpersist =  false;
$CFG->prefix    = 'mdl_';

$CFG->wwwroot   = 'http://www.lightsystem.ir/aya/moodle';

$CFG->dirroot   = '/home/lightsys/public_html/aya/moodle';
$CFG->dataroot  = '/home/lightsys/public_html/aya/moodledata';
$CFG->admin     = 'admin';

$CFG->directorypermissions = 00777;  // try 02777 on a server in Safe Mode

require_once("$CFG->dirroot/lib/setup.php");
// MAKE SURE WHEN YOU EDIT THIS FILE THAT THERE ARE NO SPACES, BLANK LINES,
// RETURNS, OR ANYTHING ELSE AFTER THE TWO CHARACTERS …
Run Code Online (Sandbox Code Playgroud)

php mysql database moodle

5
推荐指数
1
解决办法
2万
查看次数

如何让datamapper与postgresql数据库一起使用?

我找到了几个使用datamapper的例子,并且能够让它们运行起来.所有这些示例都是针对sqlite数据库的.我正在尝试将datamapper与postgresql一起使用.

我将datamapper中的调用从sqlite3更改为postgres,我已经安装了dm-postgres-adapter.但它仍然无效.

还有什么我需要做的?

ruby database postgresql ruby-on-rails datamapper

5
推荐指数
1
解决办法
1920
查看次数

将数据类型nvarchar转换为int时出错

我收到了错误

将数据类型nvarchar转换为int时出错

码:

ALTER procedure [dbo].[sp_rcdoc]
  @regno int,
  @appname varchar(50),
  @DOI datetime,
  @COV varchar(50),
  @validtill date,
  @imgloc varchar(500),
  @ImagNo char(20),
  @Purposecode varchar(50),
  @FLAG varchar(3)
AS BEGIN
   IF NOT EXISTS(SELECT regno FROM tblRCDocuments WHERE regno = @regno)
   BEGIN
       INSERT INTO tblRCDocuments(regno, appname, DOI, COV, validtill, imgloc, ImagNo, Purposecode, FLAG) 
       VALUES(@regno, @appname, @DOI, @COV, @validtill, @imgloc, @ImagNo, @Purposecode, @FLAG)
   END
Run Code Online (Sandbox Code Playgroud)

sql t-sql database sql-server

5
推荐指数
1
解决办法
2万
查看次数