我正在开发一个项目,将日志聚合和分析作为更大项目的一部分.我不知道选择哪个数据库来处理这些日志.最近我在MongoDB和Cassandra之间来回走动,但我确信还有其他一些也适合我的需求.我应该选择哪一个?为什么?
现在整个事情刚刚开始,但到目前为止这里是要求:
我们期望将数据库增长到一些TB数据(每秒约50K插入),因此必须进行分片.查询不常见,因为它们主要由较大项目的开发人员使用.但结果需要在几秒钟内返回.
现在,存储对于所有机器来说都是常见的(并且很慢).因此,对于可伸缩性,我认为我们需要充分利用内存和多线程 - 以便分片有意义.
到目前为止我所获得的基本思想是MongoDB具有更多功能,例如正则表达式或排序结果,并且更容易设置到合适的配置,而Cassandra似乎更具可扩展性(通过简单地添加服务器),并且还具有一些简洁的功能,比如把数据放在TTL上.
我正在开发一个ATM软件作为家庭作业,在其中我想知道今天要处理的交易总额,为此,我编写了以下代码
public decimal getDayTransaction(int accountid, string date, string transactiontype)
{
decimal totalamount = 0;
int i = 0;
string connectionString =
"Persist Security Info=False;User ID=sa; Password=123;Initial Catalog=ATMSoftware;Server=Bilal-PC";
try
{
using (SqlConnection connection =
new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(
"Select Amount From [Transaction] where AccountID = "
+ accountid + " AND CurrDate ='" + date
+ "' AND TransactionType = '"
+ transactiontype + "';", connection);
connection.Open();
SqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
totalamount += Convert.ToDecimal(dr.GetString(i)); …Run Code Online (Sandbox Code Playgroud) 我在两个独立的sqlite3数据库中有两个表.数据类型相同,但模式略有不同.我希望它们是单个数据库中的单个表,具有相同的模式Table 2
CREATE TABLE temp_entries (
id INTEGER PRIMARY KEY,
sensor NUMERIC,
temp NUMERIC,
date NUMERIC);
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE "restInterface_temp_entry" (
"id" integer NOT NULL PRIMARY KEY,
"dateTime" integer NOT NULL,
"sensor" integer NOT NULL,
"temp" integer NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
id两个表之间不是唯一的.我想创建另一个具有相同模式的表Table 2.我希望id表1中的条目从0开始,然后从table 2最后一个条目后的条目开始table 1.
理想情况下,我只想添加条目Table 1,Table 2并"重新索引"主键,使其与"dateTime"的升序相同.
更新:我现在有两个表使用相同的模式,我通过创建一个具有相同模式的新表来实现Table 2这一点Table 1.我将数据复制到新表中,例如:
INSERT INTO restInterface_temp_entry(id,dateTime,sensor,temp)
...> select id,date,sensor,temp FROM temp_entries;
Run Code Online (Sandbox Code Playgroud)
我曾经把一堆记录 …
我刚刚开始使用Amazon EC2,并试图了解数据库应该如何工作.如果我有一个高流量站点并希望在多个实例上对流量进行负载均衡,那么我猜这些实例必须检索并将数据保存到单个单独的实例中,以避免数据在多台计算机上碎片化.
在这种情况下,我应该在自己的实例上安装和运行mongoDB,并让所有其他实例连接到这个单一数据存储吗?或者我应该在同一个实例上运行mongo和我的http服务器?
很想听听你的一些最佳实践.
我搜索了支持整数键和整数值的键值存储.LevelDB似乎是一个不错的选择,但我找不到关于是否支持整数值/键的任何信息
我想编写一个TSQL存储过程,它创建一个具有指定名称的数据库,并使用一些模式预先填充它.
所以我使用了很多EXEC语句:
EXEC('CREATE TABLE ' + @dbName + '.dbo.MyTable (...)');
Run Code Online (Sandbox Code Playgroud)
等等,与一些一起CREATE PROCEDURE,CREATE FUNCTION等等.然而,问题来自于当我想创建一个类型,CREATE TYPE语句中指定的数据库不能有,你不能USE @dbName在存储过程中.
如何在存储过程中的另一个数据库中创建类型?
我本月在两个不同的工作中遇到了同样的问题:
Version 1: User 1 & User 2 are friends
Version 2: Axis 1 & Axis 2 when graphed should have the quadrants colored...
Run Code Online (Sandbox Code Playgroud)
问题是,我没有看到使用RDBMS来存储和查询此信息的优雅方式.
有两种明显的方法:
方法1:
store the information twice (i.e. two db rows rows per relationship):
u1, u2, true
u2, u1, true
u..n, u..i, true
u..i, u..n, true
have rules to always look for the inverse on updates:
on read, no management needed
on create, create inverse
on delete, delete inverse
on update, update inverse
Advantage: management logic …Run Code Online (Sandbox Code Playgroud) database database-design bit-manipulation bitmask social-networking
我需要通过代码修改MS Acess数据库(.mdb)的模式.
由于Jet Engine DDL语句(ALTER TABLE等)的文档很少,我更喜欢使用某种对象库,如DAO(myDatabase.TableDefs("myTable").Fields.Append(myNewField))或ADOX(myCatalog.Tables("myTable").Columns.Append(myNewField))或SMO(仅适用于SQL Server,语法类似) - 你明白了.
是否有像ADOX.NET类似的东西,或者我是否坚持使用DDL语句或引用旧的DAO/ADOX库?
此问题适用于任何数据库表设计,您将拥有相同类型的系统默认项和自定义用户默认值(即用户可以添加自己的自定义项/设置).
以下是发票和付款方式的示例,默认情况下,发票可以包含DueOnReceipt,NET10,NET15,NET30的付款条件(这是所有用户的默认值!)因此您将有两个表"INVOICE"和"PAYMENT_TERM"
INVOICE
Id
...
PaymentTermId
PAYMENT_TERM (System default)
Id
Name
Run Code Online (Sandbox Code Playgroud)
现在,允许用户存储自己的自定义"PaymentTerms"的最佳方法是什么?为什么?(即用户可以使用系统默认付款条款或用户自己创建/添加的自定义付款条件)
选项1)将UserId添加到PaymentTerm,为添加了自定义项并将系统默认用户标识设置为null的用户设置userid.
INVOICE
Id
...
PaymentTermId
PaymentTerm
Id
Name
UserId (System Default, UserId=null)
Run Code Online (Sandbox Code Playgroud)
选项2)向Invoice"IsPaymentTermCustom"添加一个标志并创建一个自定义表"PAYMENT_TERM_CUSTOM"
INVOICE
Id
...
PaymentTermId
PaymentTermCustomId
IsPaymentTermCustom (True for custom, otherwise false for system default)
PaymentTerm
Id
Name
PAYMENT_TERM_CUSTOM
Id
Name
UserId
Run Code Online (Sandbox Code Playgroud)
现在通过SQL查询检查用户是否使用自定义付款条件,如果IsPaymentTermCustom = True,则表示用户使用自定义付款条件,否则为false.
选项3)????
...
我无法创建外键ON DELETE SET DEFAULT,但如果我使用,ON DELETE CASCADE那么这里的所有作品都是我的sql
CREATE TABLE person(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) UNIQUE
);
CREATE TABLE habits(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
habit VARCHAR(100) UNIQUE
);
INSERT INTO `test`.`habits` (`customer_id`, `habit`) VALUES (NULL, 'smoking'), (NULL, 'drinking');
INSERT INTO `test`.`person` (`customer_id`, `name`) VALUES (NULL, 'John'), (NULL, 'Steve');
CREATE TABLE foreigner(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
customer VARCHAR(100) DEFAULT 'John',
habbit VARCHAR(100) DEFAULT 'smoking',
FOREIGN KEY (customer) REFERENCES person(name) ON DELETE SET DEFAULT ON …Run Code Online (Sandbox Code Playgroud)